summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
diff options
context:
space:
mode:
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2016-04-26 15:43:14 +0000
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2016-04-26 15:43:14 +0000
commit1d99c4d03ce7d8d251f815e49caba968ea94b488 (patch)
treed32c61adb8e5381f00e9ddb90443e20d550f2325 /llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
parentd285007720169bd1054cadfe65c3a5da84997d19 (diff)
downloadbcm5719-llvm-1d99c4d03ce7d8d251f815e49caba968ea94b488.tar.gz
bcm5719-llvm-1d99c4d03ce7d8d251f815e49caba968ea94b488.zip
[AMDGPU] Reserve VGPRs for trap handler usage if instructed
Differential Revision: http://reviews.llvm.org/D19235 llvm-svn: 267563
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
index 8f562b66cfb..1f09500ebf1 100644
--- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
@@ -193,6 +193,17 @@ BitVector SIRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
assert(!isSubRegister(ScratchRSrcReg, ScratchWaveOffsetReg));
}
+ // Reserve VGPRs for trap handler usage if "amdgpu-debugger-reserve-trap-regs"
+ // attribute was specified.
+ const AMDGPUSubtarget &ST = MF.getSubtarget<AMDGPUSubtarget>();
+ if (ST.debuggerReserveTrapVGPRs()) {
+ for (unsigned i = MaxWorkGroupVGPRCount - ST.debuggerReserveTrapVGPRCount();
+ i < MaxWorkGroupVGPRCount; ++i) {
+ unsigned Reg = AMDGPU::VGPR_32RegClass.getRegister(i);
+ reserveRegisterTuples(Reserved, Reg);
+ }
+ }
+
return Reserved;
}
OpenPOWER on IntegriCloud