本文整理汇总了C++中TargetRegisterInfo::isVirtualRegister方法的典型用法代码示例。如果您正苦于以下问题:C++ TargetRegisterInfo::isVirtualRegister方法的具体用法?C++ TargetRegisterInfo::isVirtualRegister怎么用?C++ TargetRegisterInfo::isVirtualRegister使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TargetRegisterInfo
的用法示例。
在下文中一共展示了TargetRegisterInfo::isVirtualRegister方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: reMaterialize
void LembergInstrInfo::reMaterialize(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I,
unsigned DestReg,
unsigned SubIdx,
const MachineInstr *Orig,
const TargetRegisterInfo &TRI) const {
MachineInstr *MI = MBB.getParent()->CloneMachineInstr(Orig);
MI->substituteRegister(MI->getOperand(0).getReg(), DestReg, SubIdx, TRI);
// Make sure registers end up in the right register class
if (MI->getOpcode() == Lemberg::LOADga
|| MI->getOpcode() == Lemberg::LOADga_off
|| MI->getOpcode() == Lemberg::LOADuimm19s2) {
assert((TRI.isVirtualRegister(DestReg) || Lemberg::AImmRegClass.contains(DestReg))
&& "Cannot rematerialize this instruction to arbitrary physical register");
if (TRI.isVirtualRegister(DestReg)) {
MachineRegisterInfo &MRI = MBB.getParent()->getRegInfo();
MRI.constrainRegClass(DestReg, Lemberg::AImmRegisterClass);
}
}
MBB.insert(I, MI);
}