mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-14 06:37:33 +00:00
R600/SI: Handle REG_SEQUENCE in fitsRegClass()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183134 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
051a28e0e8
commit
b89a467559
@ -523,10 +523,20 @@ bool SITargetLowering::fitsRegClass(SelectionDAG &DAG, const SDValue &Op,
|
||||
if (MachineSDNode *MN = dyn_cast<MachineSDNode>(Node)) {
|
||||
const MCInstrDesc &Desc = TII->get(MN->getMachineOpcode());
|
||||
int OpClassID = Desc.OpInfo[Op.getResNo()].RegClass;
|
||||
if (OpClassID == -1)
|
||||
OpClass = getRegClassFor(Op.getSimpleValueType());
|
||||
else
|
||||
if (OpClassID == -1) {
|
||||
switch (MN->getMachineOpcode()) {
|
||||
case AMDGPU::REG_SEQUENCE:
|
||||
// Operand 0 is the register class id for REG_SEQUENCE instructions.
|
||||
OpClass = TRI->getRegClass(
|
||||
cast<ConstantSDNode>(MN->getOperand(0))->getZExtValue());
|
||||
break;
|
||||
default:
|
||||
OpClass = getRegClassFor(Op.getSimpleValueType());
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
OpClass = TRI->getRegClass(OpClassID);
|
||||
}
|
||||
|
||||
} else if (Node->getOpcode() == ISD::CopyFromReg) {
|
||||
RegisterSDNode *Reg = cast<RegisterSDNode>(Node->getOperand(1).getNode());
|
||||
|
Loading…
x
Reference in New Issue
Block a user