[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