Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:Head

68 //   Triangle: Head              Diamond: Head
77 // Head block, and phis in the Tail block are converted to select instructions.
87 MachineBasicBlock *Head;
103 MachineBasicBlock *getTPred() const { return TBB == Tail ? Head : TBB; }
106 MachineBasicBlock *getFPred() const { return FBB == Tail ? Head : FBB; }
125 /// Instructions in Head that define values used by the conditional blocks.
135 /// Insertion point in Head for speculatively executed instructions form TBB
143 /// Find a valid insertion point in Head.
178 /// If instructions use any values that are defined in the head basic block,
227 // Check for any dependencies on Head instructions.
245 if (!DefMI || DefMI->getParent() != Head)
259 /// Find an insertion point in Head for the speculated instructions. The
274 MachineBasicBlock::iterator FirstTerm = Head->getFirstTerminator();
275 MachineBasicBlock::iterator I = Head->end();
276 MachineBasicBlock::iterator B = Head->begin();
340 Head = MBB;
343 if (Head->succ_size() != 2)
345 MachineBasicBlock *Succ0 = Head->succ_begin()[0];
346 MachineBasicBlock *Succ1 = Head->succ_begin()[1];
363 DEBUG(dbgs() << "\nDiamond: BB#" << Head->getNumber()
374 DEBUG(dbgs() << "\nTriangle: BB#" << Head->getNumber()
388 if (TII->AnalyzeBranch(*Head, TBB, FBB, Cond)) {
422 if (!TII->canInsertSelect(*Head, Cond, PI.TReg, PI.FReg,
438 // head basic block.
454 MachineBasicBlock::iterator FirstTerm = Head->getFirstTerminator();
455 assert(FirstTerm != Head->end() && "No terminators");
463 TII->insertSelect(*Head, FirstTerm, HeadDL, DstReg, Cond, PI.TReg, PI.FReg);
471 /// select instructions in Head and rewrite PHI operands to use the selects.
474 MachineBasicBlock::iterator FirstTerm = Head->getFirstTerminator();
475 assert(FirstTerm != Head->end() && "No terminators");
484 TII->insertSelect(*Head, FirstTerm, HeadDL, DstReg, Cond, PI.TReg, PI.FReg);
487 // Rewrite PHI operands TPred -> (DstReg, Head), remove FPred.
491 PI.PHI->getOperand(i-1).setMBB(Head);
508 assert(Head && Tail && TBB && FBB && "Call canConvertIf first.");
516 // Move all instructions into Head, except for the terminators.
518 Head->splice(InsertionPoint, TBB, TBB->begin(), TBB->getFirstTerminator());
520 Head->splice(InsertionPoint, FBB, FBB->begin(), FBB->getFirstTerminator());
529 // Fix up the CFG, temporarily leave Head without any successors.
530 Head->removeSuccessor(TBB);
531 Head->removeSuccessor(FBB);
537 // Fix up Head's terminators.
539 DebugLoc HeadDL = Head->getFirstTerminator()->getDebugLoc();
540 TII->RemoveBranch(*Head);
542 // Erase the now empty conditional blocks. It is likely that Head can fall
553 assert(Head->succ_empty() && "Additional head successors?");
554 if (!ExtraPreds && Head->isLayoutSuccessor(Tail)) {
555 // Splice Tail onto the end of Head.
557 << " into head BB#" << Head->getNumber() << '\n');
558 Head->splice(Head->end(), Tail,
560 Head->transferSuccessorsAndUpdatePHIs(Tail);
567 TII->InsertBranch(*Head, Tail, 0, EmptyCond, HeadDL);
568 Head->addSuccessor(Tail);
570 DEBUG(dbgs() << *Head);
630 // convertIf can remove TBB, FBB, and Tail can be merged into Head.
632 // Tail children should be transferred to Head.
633 MachineDomTreeNode *HeadNode = DomTree->getNode(IfConv.Head);
636 assert(Node != HeadNode && "Cannot erase the head node");
658 Traces->invalidate(IfConv.Head);
706 // Assume that the depth of the first head terminator will also be the depth
709 MachineTraceMetrics::Trace HeadTrace = MinInstr->getTrace(IfConv.Head);
711 HeadTrace.getInstrCycles(IfConv.Head->getFirstTerminator()).Depth;
793 // blocks, but only blocks dominated by the head block. This makes it safe to