Index: lib/Target/AMDGPU/SIRegisterInfo.h =================================================================== --- lib/Target/AMDGPU/SIRegisterInfo.h +++ lib/Target/AMDGPU/SIRegisterInfo.h @@ -38,6 +38,9 @@ unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override; + unsigned getRegPressureSetScore(const MachineFunction &MF, + unsigned PSetID) const override; + bool requiresRegisterScavenging(const MachineFunction &Fn) const override; void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj, Index: lib/Target/AMDGPU/SIRegisterInfo.cpp =================================================================== --- lib/Target/AMDGPU/SIRegisterInfo.cpp +++ lib/Target/AMDGPU/SIRegisterInfo.cpp @@ -121,6 +121,18 @@ return VGPRLimit; } +unsigned SIRegisterInfo::getRegPressureSetScore(const MachineFunction &MF, + unsigned PSetID) const { + if (SGPRPressureSets.test(PSetID) && VGPRPressureSets.test(PSetID)) + return 2; + + if (SGPRPressureSets.test(PSetID)) + return 1; + + // VGPRS. + return 0; +} + bool SIRegisterInfo::requiresRegisterScavenging(const MachineFunction &Fn) const { return Fn.getFrameInfo()->hasStackObjects(); }