forked from OSchip/llvm-project
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. llvm-svn: 216216
This commit is contained in:
parent
33466a745e
commit
11aa80cc4a
|
@ -148,6 +148,17 @@ const TargetRegisterClass *SIRegisterInfo::getSubRegClass(
|
||||||
unsigned SIRegisterInfo::getPhysRegSubReg(unsigned Reg,
|
unsigned SIRegisterInfo::getPhysRegSubReg(unsigned Reg,
|
||||||
const TargetRegisterClass *SubRC,
|
const TargetRegisterClass *SubRC,
|
||||||
unsigned Channel) const {
|
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);
|
unsigned Index = getHWRegIndex(Reg);
|
||||||
return SubRC->getRegister(Index + Channel);
|
return SubRC->getRegister(Index + Channel);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue