AMDGPU: Implement isConstantPhysReg
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Thu, 21 May 2020 01:05:47 +0000 (21:05 -0400)
committerMatt Arsenault <arsenm2@gmail.com>
Sat, 23 May 2020 17:24:42 +0000 (13:24 -0400)
I don't think any of these registers are used in contexts where this
would do anything yet.

llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
llvm/lib/Target/AMDGPU/SIRegisterInfo.h

index 9001967..7657a2d 100644 (file)
@@ -1849,3 +1849,16 @@ MCPhysReg SIRegisterInfo::get32BitRegister(MCPhysReg Reg) const {
 
   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;
+  }
+}
index 55ea00a..0b2920b 100644 (file)
@@ -210,6 +210,8 @@ public:
     return isVGPR(MRI, Reg) || isAGPR(MRI, Reg);
   }
 
+  bool isConstantPhysReg(MCRegister PhysReg) const override;
+
   bool isDivergentRegClass(const TargetRegisterClass *RC) const override {
     return !isSGPRClass(RC);
   }