summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2019-06-20 21:58:24 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2019-06-20 21:58:24 +0000
commitd88db6d7fc942947ad4a068b38c5b5af7d5d1751 (patch)
tree670dc13f6ccde2424eded38229f3b60061f5e6a2 /llvm/lib/Target/AMDGPU
parent25f08a17c318e8ffbd30ecbab4d3ea5c5105ddbc (diff)
downloadbcm5719-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.cpp8
-rw-r--r--llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp2
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;
OpenPOWER on IntegriCloud