mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Code clean up.
llvm-svn: 35220
This commit is contained in:
parent
fe301e0f29
commit
632ac0e289
@ -381,6 +381,20 @@ void ScheduleDAG::AddOperand(MachineInstr *MI, SDOperand Op,
|
||||
|
||||
}
|
||||
|
||||
// Returns the Register Class of a physical register
|
||||
static const TargetRegisterClass *getPhysicalRegisterRegClass(
|
||||
const MRegisterInfo *MRI,
|
||||
MVT::ValueType VT,
|
||||
unsigned reg) {
|
||||
assert(MRegisterInfo::isPhysicalRegister(reg) &&
|
||||
"reg must be a physical register");
|
||||
// Pick the register class of the right type that contains this physreg.
|
||||
for (MRegisterInfo::regclass_iterator I = MRI->regclass_begin(),
|
||||
E = MRI->regclass_end(); I != E; ++I)
|
||||
if ((*I)->hasType(VT) && (*I)->contains(reg))
|
||||
return *I;
|
||||
assert(false && "Couldn't find the register class");
|
||||
}
|
||||
|
||||
/// EmitNode - Generate machine code for an node and needed dependencies.
|
||||
///
|
||||
@ -478,20 +492,12 @@ void ScheduleDAG::EmitNode(SDNode *Node,
|
||||
if (InReg != DestReg) {// Coalesced away the copy?
|
||||
const TargetRegisterClass *TRC = 0;
|
||||
// Get the target register class
|
||||
if (MRegisterInfo::isVirtualRegister(InReg)) {
|
||||
if (MRegisterInfo::isVirtualRegister(InReg))
|
||||
TRC = RegMap->getRegClass(InReg);
|
||||
} else {
|
||||
// Pick the register class of the right type that contains this
|
||||
// physreg.
|
||||
for (MRegisterInfo::regclass_iterator I = MRI->regclass_begin(),
|
||||
E = MRI->regclass_end(); I != E; ++I)
|
||||
if ((*I)->hasType(Node->getOperand(2).getValueType()) &&
|
||||
(*I)->contains(InReg)) {
|
||||
TRC = *I;
|
||||
break;
|
||||
}
|
||||
assert(TRC && "Couldn't find register class for reg copy!");
|
||||
}
|
||||
else
|
||||
TRC = getPhysicalRegisterRegClass(MRI,
|
||||
Node->getOperand(2).getValueType(),
|
||||
InReg);
|
||||
MRI->copyRegToReg(*BB, BB->end(), DestReg, InReg, TRC);
|
||||
}
|
||||
break;
|
||||
@ -523,17 +529,8 @@ void ScheduleDAG::EmitNode(SDNode *Node,
|
||||
if (VRBase) {
|
||||
TRC = RegMap->getRegClass(VRBase);
|
||||
} else {
|
||||
TRC = getPhysicalRegisterRegClass(MRI, Node->getValueType(0), SrcReg);
|
||||
|
||||
// Pick the register class of the right type that contains this physreg.
|
||||
for (MRegisterInfo::regclass_iterator I = MRI->regclass_begin(),
|
||||
E = MRI->regclass_end(); I != E; ++I)
|
||||
if ((*I)->hasType(Node->getValueType(0)) &&
|
||||
(*I)->contains(SrcReg)) {
|
||||
TRC = *I;
|
||||
break;
|
||||
}
|
||||
assert(TRC && "Couldn't find register class for reg copy!");
|
||||
|
||||
// Create the reg, emit the copy.
|
||||
VRBase = RegMap->createVirtualRegister(TRC);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user