diff options
author | Vincent Lejeune <vljn@ovi.com> | 2013-10-13 17:56:16 +0000 |
---|---|---|
committer | Vincent Lejeune <vljn@ovi.com> | 2013-10-13 17:56:16 +0000 |
commit | d623644d172b7ae8f2a1497c74bed775100b0bc7 (patch) | |
tree | 34470e67859d4a6c49cbc09dfb8c701528997448 /llvm/lib | |
parent | fa58a5fb609add6c1ff6cfa7b2bf8bdc32b3c9ca (diff) | |
download | bcm5719-llvm-d623644d172b7ae8f2a1497c74bed775100b0bc7.tar.gz bcm5719-llvm-d623644d172b7ae8f2a1497c74bed775100b0bc7.zip |
R600/SI: Support byval arguments
llvm-svn: 192555
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/R600/AMDGPUCallingConv.td | 7 | ||||
-rw-r--r-- | llvm/lib/Target/R600/SIISelLowering.cpp | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/Target/R600/AMDGPUCallingConv.td b/llvm/lib/Target/R600/AMDGPUCallingConv.td index d26be326094..a194e6d3c8b 100644 --- a/llvm/lib/Target/R600/AMDGPUCallingConv.td +++ b/llvm/lib/Target/R600/AMDGPUCallingConv.td @@ -33,7 +33,12 @@ def CC_SI : CallingConv<[ VGPR8, VGPR9, VGPR10, VGPR11, VGPR12, VGPR13, VGPR14, VGPR15, VGPR16, VGPR17, VGPR18, VGPR19, VGPR20, VGPR21, VGPR22, VGPR23, VGPR24, VGPR25, VGPR26, VGPR27, VGPR28, VGPR29, VGPR30, VGPR31 - ]>>> + ]>>>, + + CCIfByVal<CCIfType<[i64] , CCAssignToRegWithShadow< + [ SGPR0, SGPR2, SGPR4, SGPR6, SGPR8, SGPR10, SGPR12, SGPR14 ], + [ SGPR1, SGPR3, SGPR5, SGPR7, SGPR9, SGPR11, SGPR13, SGPR15 ] + >>> ]>; diff --git a/llvm/lib/Target/R600/SIISelLowering.cpp b/llvm/lib/Target/R600/SIISelLowering.cpp index 7cd14d5da61..098ca7f06c1 100644 --- a/llvm/lib/Target/R600/SIISelLowering.cpp +++ b/llvm/lib/Target/R600/SIISelLowering.cpp @@ -158,7 +158,8 @@ SDValue SITargetLowering::LowerFormalArguments( const ISD::InputArg &Arg = Ins[i]; // First check if it's a PS input addr - if (Info->ShaderType == ShaderType::PIXEL && !Arg.Flags.isInReg()) { + if (Info->ShaderType == ShaderType::PIXEL && !Arg.Flags.isInReg() && + !Arg.Flags.isByVal()) { assert((PSInputNum <= 15) && "Too many PS inputs!"); |