[llvm] r216216 - R600/SI: Handle VCC in SIRegisterInfo::getPhysRegSubReg()

Tom Stellard thomas.stellard at amd.com
Thu Aug 21 13:40:51 PDT 2014


Author: tstellar
Date: Thu Aug 21 15:40:50 2014
New Revision: 216216

URL: http://llvm.org/viewvc/llvm-project?rev=216216&view=rev
Log:
R600/SI: Handle VCC in SIRegisterInfo::getPhysRegSubReg()

This fixes a crash in an ocl conformance test.  The test requries
register spilling and is too big to include.

Modified:
    llvm/trunk/lib/Target/R600/SIRegisterInfo.cpp

Modified: llvm/trunk/lib/Target/R600/SIRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/SIRegisterInfo.cpp?rev=216216&r1=216215&r2=216216&view=diff
==============================================================================
--- llvm/trunk/lib/Target/R600/SIRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/R600/SIRegisterInfo.cpp Thu Aug 21 15:40:50 2014
@@ -148,6 +148,17 @@ const TargetRegisterClass *SIRegisterInf
 unsigned SIRegisterInfo::getPhysRegSubReg(unsigned Reg,
                                           const TargetRegisterClass *SubRC,
                                           unsigned Channel) const {
+
+  switch (Reg) {
+    case AMDGPU::VCC:
+      switch(Channel) {
+        case 0: return AMDGPU::VCC_LO;
+        case 1: return AMDGPU::VCC_HI;
+        default: llvm_unreachable("Invalid SubIdx for VCC");
+      }
+      break;
+  }
+
   unsigned Index = getHWRegIndex(Reg);
   return SubRC->getRegister(Index + Channel);
 }





More information about the llvm-commits mailing list