[llvm] 89f7cce - [AMDGPU] Remove getAllVGPR32() which cannot handle Accum VGPRs properly
via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 20 10:45:47 PDT 2020
Author: vnalamot
Date: 2020-10-20T23:15:24+05:30
New Revision: 89f7ccea6f6488c443655880229c54db1f180153
URL: https://github.com/llvm/llvm-project/commit/89f7ccea6f6488c443655880229c54db1f180153
DIFF: https://github.com/llvm/llvm-project/commit/89f7ccea6f6488c443655880229c54db1f180153.diff
LOG: [AMDGPU] Remove getAllVGPR32() which cannot handle Accum VGPRs properly
Remove getAllVGPR32() interface and update the SGPR spill code to use
a proper method to get the relevant VGPR registers list.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D89806
Added:
Modified:
llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
llvm/lib/Target/AMDGPU/SIRegisterInfo.h
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp b/llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
index 9d1ecaed6a76..17f8257e6113 100644
--- a/llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
+++ b/llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
@@ -242,19 +242,14 @@ static bool lowerShiftReservedVGPR(MachineFunction &MF,
// If there are no free lower VGPRs available, default to using the
// pre-reserved register instead.
- Register LowestAvailableVGPR = PreReservedVGPR;
-
- MachineRegisterInfo &MRI = MF.getRegInfo();
- MachineFrameInfo &FrameInfo = MF.getFrameInfo();
- ArrayRef<MCPhysReg> AllVGPR32s = ST.getRegisterInfo()->getAllVGPR32(MF);
- for (MCPhysReg Reg : AllVGPR32s) {
- if (MRI.isAllocatable(Reg) && !MRI.isPhysRegUsed(Reg)) {
- LowestAvailableVGPR = Reg;
- break;
- }
- }
+ const SIRegisterInfo *TRI = ST.getRegisterInfo();
+ Register LowestAvailableVGPR =
+ TRI->findUnusedRegister(MF.getRegInfo(), &AMDGPU::VGPR_32RegClass, MF);
+ if (!LowestAvailableVGPR)
+ LowestAvailableVGPR = PreReservedVGPR;
const MCPhysReg *CSRegs = MF.getRegInfo().getCalleeSavedRegs();
+ MachineFrameInfo &FrameInfo = MF.getFrameInfo();
Optional<int> FI;
// Check if we are reserving a CSR. Create a stack object for a possible spill
// in the function prologue.
diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
index 9782e11a370d..c7a0121b058b 100644
--- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
@@ -1989,8 +1989,3 @@ ArrayRef<MCPhysReg>
SIRegisterInfo::getAllSGPR32(const MachineFunction &MF) const {
return makeArrayRef(AMDGPU::SGPR_32RegClass.begin(), ST.getMaxNumSGPRs(MF));
}
-
-ArrayRef<MCPhysReg>
-SIRegisterInfo::getAllVGPR32(const MachineFunction &MF) const {
- return makeArrayRef(AMDGPU::VGPR_32RegClass.begin(), ST.getMaxNumVGPRs(MF));
-}
diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.h b/llvm/lib/Target/AMDGPU/SIRegisterInfo.h
index 5b5002605445..6cae479a69b5 100644
--- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.h
+++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.h
@@ -326,10 +326,6 @@ class SIRegisterInfo final : public AMDGPUGenRegisterInfo {
/// of the subtarget.
ArrayRef<MCPhysReg> getAllSGPR32(const MachineFunction &MF) const;
- /// Return all VGPR32 which satisfy the waves per execution unit requirement
- /// of the subtarget.
- ArrayRef<MCPhysReg> getAllVGPR32(const MachineFunction &MF) const;
-
private:
void buildSpillLoadStore(MachineBasicBlock::iterator MI,
unsigned LoadStoreOp,
More information about the llvm-commits
mailing list