diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-03-17 18:58:11 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-03-17 18:58:11 +0000 |
| commit | fae02989b710a97a61d8b7061e35aa8d4a05e585 (patch) | |
| tree | 453084b48eb4cbdbe32f28aaa769467a1f11c402 /llvm/lib/Target/R600/R600ISelLowering.cpp | |
| parent | 985b9de4856b37489de54cfa7054ee36a2464d34 (diff) | |
| download | bcm5719-llvm-fae02989b710a97a61d8b7061e35aa8d4a05e585.tar.gz bcm5719-llvm-fae02989b710a97a61d8b7061e35aa8d4a05e585.zip | |
R600: Match sign_extend_inreg to BFE instructions
llvm-svn: 204072
Diffstat (limited to 'llvm/lib/Target/R600/R600ISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/R600/R600ISelLowering.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/R600/R600ISelLowering.cpp b/llvm/lib/Target/R600/R600ISelLowering.cpp index 8c737125c85..4d15321fd02 100644 --- a/llvm/lib/Target/R600/R600ISelLowering.cpp +++ b/llvm/lib/Target/R600/R600ISelLowering.cpp @@ -1383,6 +1383,11 @@ SDValue R600TargetLowering::LowerFormalArguments( PointerType *PtrTy = PointerType::get(VT.getTypeForEVT(*DAG.getContext()), AMDGPUAS::CONSTANT_BUFFER_0); + // i64 isn't a legal type, so the register type used ends up as i32, which + // isn't expected here. It attempts to create this sextload, but it ends up + // being invalid. Somehow this seems to work with i64 arguments, but breaks + // for <1 x i64>. + // The first 36 bytes of the input buffer contains information about // thread group and global sizes. SDValue Arg = DAG.getExtLoad(ISD::SEXTLOAD, DL, VT, Chain, |

