summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2015-09-28 20:54:42 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2015-09-28 20:54:42 +0000
commitdd49c5fc1bc8c34badff5269e32ee28315b37ec2 (patch)
treecb38c728fe2c95d424c67b5ad1414a82a90d7aa9
parentb378f075a28628ce68ecf2151be26df884d67129 (diff)
downloadbcm5719-llvm-dd49c5fc1bc8c34badff5269e32ee28315b37ec2.tar.gz
bcm5719-llvm-dd49c5fc1bc8c34badff5269e32ee28315b37ec2.zip
AMDGPU: Fix splitting SMRD with large offset
The splitting of > 4 dword SMRD instructions if using an offset in an SGPR instead of an immediate was not setting the destination register, resulting an an instruction missing an operand which would assert later. Test will be included in a following commit which fixes a related issue. llvm-svn: 248739
-rw-r--r--llvm/lib/Target/AMDGPU/SIInstrInfo.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index 8fd065d95ab..9419afebd26 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -2033,7 +2033,7 @@ void SIInstrInfo::splitSMRD(MachineInstr *MI,
BuildMI(*MBB, MI, DL, get(AMDGPU::S_ADD_I32), OffsetSGPR)
.addOperand(*SOff)
.addImm(HalfSize);
- Hi = BuildMI(*MBB, MI, DL, get(HalfSGPROp))
+ Hi = BuildMI(*MBB, MI, DL, get(HalfSGPROp), RegHi)
.addReg(SBase->getReg(), getKillRegState(IsKill),
SBase->getSubReg())
.addReg(OffsetSGPR);
OpenPOWER on IntegriCloud