本文整理汇总了C++中machinebasicblock::const_instr_iterator::isBundledWithSucc方法的典型用法代码示例。如果您正苦于以下问题:C++ const_instr_iterator::isBundledWithSucc方法的具体用法?C++ const_instr_iterator::isBundledWithSucc怎么用?C++ const_instr_iterator::isBundledWithSucc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类machinebasicblock::const_instr_iterator
的用法示例。
在下文中一共展示了const_instr_iterator::isBundledWithSucc方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isPredicated
bool PatmosInstrInfo::isPredicated(const MachineInstr *MI) const {
if (MI->isBundle()) {
MachineBasicBlock::const_instr_iterator II = MI;
while (II->isBundledWithSucc()) {
++II;
if (isPredicated(&*II)) return true;
}
return false;
}
int i = MI->findFirstPredOperandIdx();
if (i != -1) {
unsigned preg = MI->getOperand(i).getReg();
int flag = MI->getOperand(++i).getImm();
return (preg!=Patmos::NoRegister && preg!=Patmos::P0) || flag;
}
// no predicates at all
return false;
}
示例2: CloneMachineInstr
MachineInstr &MachineFunction::CloneMachineInstrBundle(MachineBasicBlock &MBB,
MachineBasicBlock::iterator InsertBefore, const MachineInstr &Orig) {
MachineInstr *FirstClone = nullptr;
MachineBasicBlock::const_instr_iterator I = Orig.getIterator();
for (;;) {
MachineInstr *Cloned = CloneMachineInstr(&*I);
MBB.insert(InsertBefore, Cloned);
if (FirstClone == nullptr) {
FirstClone = Cloned;
} else {
Cloned->bundleWithPred();
}
if (!I->isBundledWithSucc())
break;
++I;
}
return *FirstClone;
}
示例3: getPredicateOperands
bool PatmosInstrInfo::getPredicateOperands(const MachineInstr* MI,
SmallVectorImpl<MachineOperand> &Pred) const
{
if (!isPredicated(MI)) return false;
if (MI->isBundle()) {
MachineBasicBlock::const_instr_iterator II = MI;
while (II->isBundledWithSucc()) {
++II;
getPredicateOperands(&*II, Pred);
}
return true;
}
if (!MI->getDesc().isPredicable()) return false;
unsigned Pos = MI->getDesc().getNumDefs();
Pred.push_back(MI->getOperand(Pos));
Pred.push_back(MI->getOperand(Pos+1));
return true;
}