summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
diff options
context:
space:
mode:
authorMarek Olsak <marek.olsak@amd.com>2016-01-13 17:23:04 +0000
committerMarek Olsak <marek.olsak@amd.com>2016-01-13 17:23:04 +0000
commit8a0f335ad667796d9a581c09ae6d06d030176b14 (patch)
tree313cfa4dee5227e372696e20ee53f10d2422427a /llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
parent9c3bf3187a0b66ffbdf81f3d5e315cf14609b296 (diff)
downloadbcm5719-llvm-8a0f335ad667796d9a581c09ae6d06d030176b14.tar.gz
bcm5719-llvm-8a0f335ad667796d9a581c09ae6d06d030176b14.zip
AMDGPU/SI: Add support for non-void functions
Summary: Return values can be stored in SGPRs (i32) and VGPRs (f32). This will be used by functions which expect some bytecode or other binary to be appended at the end. It allows defining in which registers the return values will be stored. v2: don't do this for compute shaders Reviewers: tstellarAMD, arsenm Subscribers: arsenm Differential Revision: http://reviews.llvm.org/D16033 llvm-svn: 257621
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
index 2b8032e38a5..1a59a460ee7 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
@@ -572,6 +572,12 @@ void AMDGPUTargetLowering::AnalyzeFormalArguments(CCState &State,
State.AnalyzeFormalArguments(Ins, CC_AMDGPU);
}
+void AMDGPUTargetLowering::AnalyzeReturn(CCState &State,
+ const SmallVectorImpl<ISD::OutputArg> &Outs) const {
+
+ State.AnalyzeReturn(Outs, RetCC_SI);
+}
+
SDValue AMDGPUTargetLowering::LowerReturn(
SDValue Chain,
CallingConv::ID CallConv,
OpenPOWER on IntegriCloud