• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/CodeGen/

Lines Matching defs:Head

70 //   Triangle: Head              Diamond: Head
79 // Head block, and phis in the Tail block are converted to select instructions.
89 MachineBasicBlock *Head;
105 MachineBasicBlock *getTPred() const { return TBB == Tail ? Head : TBB; }
108 MachineBasicBlock *getFPred() const { return FBB == Tail ? Head : FBB; }
127 /// Instructions in Head that define values used by the conditional blocks.
137 /// Insertion point in Head for speculatively executed instructions form TBB
157 /// Find a valid insertion point in Head.
244 // Check for any dependencies on Head instructions.
273 if (!DefMI || DefMI->getParent() != Head)
330 // Check for any dependencies on Head instructions.
352 /// Find an insertion point in Head for the speculated instructions. The
367 MachineBasicBlock::iterator FirstTerm = Head->getFirstTerminator();
368 MachineBasicBlock::iterator I = Head->end();
369 MachineBasicBlock::iterator B = Head->begin();
433 Head = MBB;
436 if (Head->succ_size() != 2)
438 MachineBasicBlock *Succ0 = Head->succ_begin()[0];
439 MachineBasicBlock *Succ1 = Head->succ_begin()[1];
456 LLVM_DEBUG(dbgs() << "\nDiamond: " << printMBBReference(*Head) << " -> "
467 LLVM_DEBUG(dbgs() << "\nTriangle: " << printMBBReference(*Head) << " -> "
482 if (TII->analyzeBranch(*Head, TBB, FBB, Cond)) {
523 if (!TII->canInsertSelect(*Head, Cond, PI.PHI->getOperand(0).getReg(),
563 MachineBasicBlock::iterator FirstTerm = Head->getFirstTerminator();
564 assert(FirstTerm != Head->end() && "No terminators");
572 TII->insertSelect(*Head, FirstTerm, HeadDL, DstReg, Cond, PI.TReg, PI.FReg);
580 /// select instructions in Head and rewrite PHI operands to use the selects.
583 MachineBasicBlock::iterator FirstTerm = Head->getFirstTerminator();
584 assert(FirstTerm != Head->end() && "No terminators");
600 TII->insertSelect(*Head, FirstTerm, HeadDL,
605 // Rewrite PHI operands TPred -> (DstReg, Head), remove FPred.
609 PI.PHI->getOperand(i-1).setMBB(Head);
627 assert(Head && Tail && TBB && FBB && "Call canConvertIf first.");
635 // Move all instructions into Head, except for the terminators.
639 Head->splice(InsertionPoint, TBB, TBB->begin(), TBB->getFirstTerminator());
644 Head->splice(InsertionPoint, FBB, FBB->begin(), FBB->getFirstTerminator());
653 // Fix up the CFG, temporarily leave Head without any successors.
654 Head->removeSuccessor(TBB);
655 Head->removeSuccessor(FBB, true);
661 // Fix up Head's terminators.
663 DebugLoc HeadDL = Head->getFirstTerminator()->getDebugLoc();
664 TII->removeBranch(*Head);
666 // Erase the now empty conditional blocks. It is likely that Head can fall
677 assert(Head->succ_empty() && "Additional head successors?");
678 if (!ExtraPreds && Head->isLayoutSuccessor(Tail)) {
679 // Splice Tail onto the end of Head.
681 << " into head " << printMBBReference(*Head) << '\n');
682 Head->splice(Head->end(), Tail,
684 Head->transferSuccessorsAndUpdatePHIs(Tail);
691 TII->insertBranch(*Head, Tail, nullptr, EmptyCond, HeadDL);
692 Head->addSuccessor(Tail);
694 LLVM_DEBUG(dbgs() << *Head);
753 // convertIf can remove TBB, FBB, and Tail can be merged into Head.
755 // Tail children should be transferred to Head.
756 MachineDomTreeNode *HeadNode = DomTree->getNode(IfConv.Head);
783 Traces->invalidate(IfConv.Head);
834 MachineTraceMetrics::Trace HeadTrace = MinInstr->getTrace(IfConv.Head);
836 HeadTrace.getInstrCycles(*IfConv.Head->getFirstTerminator()).Depth;
986 auto TrueProbability = MBPI->getEdgeProbability(IfConv.Head, IfConv.TBB);