diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-06-21 20:04:02 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-06-21 20:04:02 +0000 |
commit | 22e3dc60a006baaa1bbb32e4e27d708e7c1f5b38 (patch) | |
tree | f676548641932a3c8e3ee0bcfe1b1832f1a3f827 /llvm/lib | |
parent | 7f9c9f2264235f94b5496281cadcc4a9775dbd8f (diff) | |
download | bcm5719-llvm-22e3dc60a006baaa1bbb32e4e27d708e7c1f5b38.tar.gz bcm5719-llvm-22e3dc60a006baaa1bbb32e4e27d708e7c1f5b38.zip |
AMDGPU: Fix not using s33 for scratch wave offset in kernels
Fixes missing piece from r363990.
llvm-svn: 364099
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index bcd320ec22d..64018fd92ac 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -1829,11 +1829,8 @@ static void reservePrivateMemoryRegs(const TargetMachine &TM, Info.setScratchRSrcReg(ReservedBufferReg); } - // This should be accurate for kernels even before the frame is finalized. - const bool HasFP = ST.getFrameLowering()->hasFP(MF); - if (HasFP) { - unsigned ReservedOffsetReg = - TRI.reservedPrivateSegmentWaveByteOffsetReg(MF); + // hasFP should be accurate for kernels even before the frame is finalized. + if (ST.getFrameLowering()->hasFP(MF)) { MachineRegisterInfo &MRI = MF.getRegInfo(); // Try to use s32 as the SP, but move it if it would interfere with input @@ -1860,8 +1857,15 @@ static void reservePrivateMemoryRegs(const TargetMachine &TM, report_fatal_error("failed to find register for SP"); } - Info.setScratchWaveOffsetReg(ReservedOffsetReg); - Info.setFrameOffsetReg(ReservedOffsetReg); + if (MFI.hasCalls()) { + Info.setScratchWaveOffsetReg(AMDGPU::SGPR33); + Info.setFrameOffsetReg(AMDGPU::SGPR33); + } else { + unsigned ReservedOffsetReg = + TRI.reservedPrivateSegmentWaveByteOffsetReg(MF); + Info.setScratchWaveOffsetReg(ReservedOffsetReg); + Info.setFrameOffsetReg(ReservedOffsetReg); + } } else if (RequiresStackAccess) { assert(!MFI.hasCalls()); // We know there are accesses and they will be done relative to SP, so just |