diff options
author | Marek Olsak <marek.olsak@amd.com> | 2016-01-13 17:23:04 +0000 |
---|---|---|
committer | Marek Olsak <marek.olsak@amd.com> | 2016-01-13 17:23:04 +0000 |
commit | 8a0f335ad667796d9a581c09ae6d06d030176b14 (patch) | |
tree | 313cfa4dee5227e372696e20ee53f10d2422427a /llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp | |
parent | 9c3bf3187a0b66ffbdf81f3d5e315cf14609b296 (diff) | |
download | bcm5719-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.cpp | 6 |
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, |