diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-06-20 21:58:24 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-06-20 21:58:24 +0000 |
| commit | d88db6d7fc942947ad4a068b38c5b5af7d5d1751 (patch) | |
| tree | 670dc13f6ccde2424eded38229f3b60061f5e6a2 /llvm/lib/Target/AMDGPU | |
| parent | 25f08a17c318e8ffbd30ecbab4d3ea5c5105ddbc (diff) | |
| download | bcm5719-llvm-d88db6d7fc942947ad4a068b38c5b5af7d5d1751.tar.gz bcm5719-llvm-d88db6d7fc942947ad4a068b38c5b5af7d5d1751.zip | |
AMDGPU: Always use s33 for global scratch wave offset
Every called function could possibly need this to calculate the
absolute address of stack objectst, and this avoids inserting a copy
around every call site in the kernel. It's also somewhat cleaner to
keep this in a callee saved SGPR.
llvm-svn: 363990
Diffstat (limited to 'llvm/lib/Target/AMDGPU')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 8 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp | 2 |
2 files changed, 1 insertions, 9 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index 89c797d7055..bcd320ec22d 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -2621,20 +2621,12 @@ SDValue SITargetLowering::LowerCall(CallLoweringInfo &CLI, SmallVector<SDValue, 4> CopyFromChains; - unsigned OffsetReg = Info->getScratchWaveOffsetReg(); - // In the HSA case, this should be an identity copy. SDValue ScratchRSrcReg = DAG.getCopyFromReg(Chain, DL, Info->getScratchRSrcReg(), MVT::v4i32); RegsToPass.emplace_back(AMDGPU::SGPR0_SGPR1_SGPR2_SGPR3, ScratchRSrcReg); CopyFromChains.push_back(ScratchRSrcReg.getValue(1)); - // TODO: Don't hardcode these registers and get from the callee function. - SDValue ScratchWaveOffsetReg - = DAG.getCopyFromReg(Chain, DL, OffsetReg, MVT::i32); - RegsToPass.emplace_back(AMDGPU::SGPR4, ScratchWaveOffsetReg); - CopyFromChains.push_back(ScratchWaveOffsetReg.getValue(1)); - if (!Info->isEntryFunction()) { // Avoid clobbering this function's FP value. In the current convention // callee will overwrite this, so do save/restore around the call site. diff --git a/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp b/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp index 2ccab8534c1..871a021778c 100644 --- a/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp +++ b/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp @@ -69,7 +69,7 @@ SIMachineFunctionInfo::SIMachineFunctionInfo(const MachineFunction &MF) // Non-entry functions have no special inputs for now, other registers // required for scratch access. ScratchRSrcReg = AMDGPU::SGPR0_SGPR1_SGPR2_SGPR3; - ScratchWaveOffsetReg = AMDGPU::SGPR4; + ScratchWaveOffsetReg = AMDGPU::SGPR33; FrameOffsetReg = AMDGPU::SGPR5; StackPtrOffsetReg = AMDGPU::SGPR32; |

