Index: llvm/lib/Target/AMDGPU/SIRegisterInfo.h =================================================================== --- llvm/lib/Target/AMDGPU/SIRegisterInfo.h +++ llvm/lib/Target/AMDGPU/SIRegisterInfo.h @@ -210,6 +210,8 @@ return isVGPR(MRI, Reg) || isAGPR(MRI, Reg); } + bool isConstantPhysReg(MCRegister PhysReg) const override; + bool isDivergentRegClass(const TargetRegisterClass *RC) const override { return !isSGPRClass(RC); } Index: llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp =================================================================== --- llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp +++ llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp @@ -1849,3 +1849,16 @@ return AMDGPU::NoRegister; } + +bool SIRegisterInfo::isConstantPhysReg(MCRegister PhysReg) const { + switch (PhysReg) { + case AMDGPU::SGPR_NULL: + case AMDGPU::SRC_SHARED_BASE: + case AMDGPU::SRC_PRIVATE_BASE: + case AMDGPU::SRC_SHARED_LIMIT: + case AMDGPU::SRC_PRIVATE_LIMIT: + return true; + default: + return false; + } +}