Lines Matching refs:BB
146 MachineBasicBlock *BB = nullptr; member
282 bool MeetIfcvtSizeLimit(MachineBasicBlock &BB, in MeetIfcvtSizeLimit() argument
285 return Cycle > 0 && TII->isProfitableToIfCvt(BB, Cycle, Extra, in MeetIfcvtSizeLimit()
292 const MachineFunction &MF = *TBBInfo.BB->getParent(); in MeetIfcvtSizeLimit()
294 MachineBasicBlock::iterator TIB = TBBInfo.BB->begin(); in MeetIfcvtSizeLimit()
295 MachineBasicBlock::iterator FIB = FBBInfo.BB->begin(); in MeetIfcvtSizeLimit()
296 MachineBasicBlock::iterator TIE = TBBInfo.BB->end(); in MeetIfcvtSizeLimit()
297 MachineBasicBlock::iterator FIE = FBBInfo.BB->end(); in MeetIfcvtSizeLimit()
301 *TBBInfo.BB, *FBBInfo.BB, in MeetIfcvtSizeLimit()
309 for (auto &I : make_range(TBBInfo.BB->begin(), TIB)) { in MeetIfcvtSizeLimit()
313 for (auto &I : make_range(FBBInfo.BB->begin(), FIB)) { in MeetIfcvtSizeLimit()
322 for (auto &I : make_range(TIE, TBBInfo.BB->end())) { in MeetIfcvtSizeLimit()
331 for (auto &I : make_range(FIE, FBBInfo.BB->end())) { in MeetIfcvtSizeLimit()
388 *TBBInfo.BB, TCycle, TBBInfo.ExtraCost2, *FBBInfo.BB, in MeetIfcvtSizeLimit()
421 return C1->BBI.BB->getNumber() < C2->BBI.BB->getNumber(); in IfcvtTokenCmp()
512 << "): " << printMBBReference(*BBI.BB) << " (" in INITIALIZE_PASS_DEPENDENCY()
538 LLVM_DEBUG(dbgs() << "): " << printMBBReference(*BBI.BB) in INITIALIZE_PASS_DEPENDENCY()
555 LLVM_DEBUG(dbgs() << "Ifcvt (Diamond): " << printMBBReference(*BBI.BB) in INITIALIZE_PASS_DEPENDENCY()
567 << printMBBReference(*BBI.BB) in INITIALIZE_PASS_DEPENDENCY()
579 recomputeLivenessFlags(*BBI.BB); in INITIALIZE_PASS_DEPENDENCY()
607 static MachineBasicBlock *findFalseBlock(MachineBasicBlock *BB, in findFalseBlock() argument
609 for (MachineBasicBlock *SuccBB : BB->successors()) { in findFalseBlock()
621 TII->removeBranch(*BBI.BB); in reverseBranchCondition()
622 TII->insertBranch(*BBI.BB, BBI.FalseBB, BBI.TrueBB, BBI.BrCond, dl); in reverseBranchCondition()
651 if (TrueBBI.BB->pred_size() > 1) { in ValidSimple()
653 !TII->isProfitableToDupForIfCvt(*TrueBBI.BB, TrueBBI.NonPredSize, in ValidSimple()
671 if (TrueBBI.BB == FalseBBI.BB) in ValidTriangle()
677 if (TrueBBI.BB->pred_size() > 1) { in ValidTriangle()
694 if (!TII->isProfitableToDupForIfCvt(*TrueBBI.BB, Size, Prediction)) in ValidTriangle()
701 MachineFunction::iterator I = TrueBBI.BB->getIterator(); in ValidTriangle()
702 if (++I == TrueBBI.BB->getParent()->end()) in ValidTriangle()
706 return TExit && TExit == FalseBBI.BB; in ValidTriangle()
885 if (TrueBBI.BB->pred_size() > 1 || FalseBBI.BB->pred_size() > 1) in ValidForkedDiamond()
900 TT = getNextBlock(*TrueBBI.BB); in ValidForkedDiamond()
902 TF = getNextBlock(*TrueBBI.BB); in ValidForkedDiamond()
904 FT = getNextBlock(*FalseBBI.BB); in ValidForkedDiamond()
906 FF = getNextBlock(*FalseBBI.BB); in ValidForkedDiamond()
929 MachineBasicBlock::iterator TIB = TrueBBI.BB->begin(); in ValidForkedDiamond()
930 MachineBasicBlock::iterator FIB = FalseBBI.BB->begin(); in ValidForkedDiamond()
931 MachineBasicBlock::iterator TIE = TrueBBI.BB->end(); in ValidForkedDiamond()
932 MachineBasicBlock::iterator FIE = FalseBBI.BB->end(); in ValidForkedDiamond()
934 *TrueBBI.BB, *FalseBBI.BB, in ValidForkedDiamond()
938 TrueBBICalc.BB = TrueBBI.BB; in ValidForkedDiamond()
939 FalseBBICalc.BB = FalseBBI.BB; in ValidForkedDiamond()
966 if (TrueBBI.BB == FalseBBI.BB) in ValidDiamond()
973 TT = getNextBlock(*TrueBBI.BB); in ValidDiamond()
975 FT = getNextBlock(*FalseBBI.BB); in ValidDiamond()
980 if (TrueBBI.BB->pred_size() > 1 || FalseBBI.BB->pred_size() > 1) in ValidDiamond()
993 MachineBasicBlock::iterator TIB = TrueBBI.BB->begin(); in ValidDiamond()
994 MachineBasicBlock::iterator FIB = FalseBBI.BB->begin(); in ValidDiamond()
995 MachineBasicBlock::iterator TIE = TrueBBI.BB->end(); in ValidDiamond()
996 MachineBasicBlock::iterator FIE = FalseBBI.BB->end(); in ValidDiamond()
998 *TrueBBI.BB, *FalseBBI.BB, in ValidDiamond()
1002 TrueBBICalc.BB = TrueBBI.BB; in ValidDiamond()
1003 FalseBBICalc.BB = FalseBBI.BB; in ValidDiamond()
1025 !TII->analyzeBranch(*BBI.BB, BBI.TrueBB, BBI.FalseBB, BBI.BrCond); in AnalyzeBranches()
1041 BBI.FalseBB = findFalseBlock(BBI.BB, BBI.TrueBB); in AnalyzeBranches()
1220 MachineBasicBlock *BB = State.MBB; in AnalyzeBlock() local
1221 BBInfo &BBI = BBAnalysis[BB->getNumber()]; in AnalyzeBlock()
1229 BBI.BB = BB; in AnalyzeBlock()
1233 MachineBasicBlock::iterator Begin = BBI.BB->begin(); in AnalyzeBlock()
1234 MachineBasicBlock::iterator End = BBI.BB->end(); in AnalyzeBlock()
1247 if (BBI.TrueBB == BB || BBI.FalseBB == BB) { in AnalyzeBlock()
1289 BranchProbability Prediction = MBPI->getEdgeProbability(BB, TrueBBI.BB); in AnalyzeBlock()
1294 bool MeetsSize = MeetIfcvtSizeLimit(TrueBBICalc, FalseBBICalc, *BB, in AnalyzeBlock()
1343 MeetIfcvtSizeLimit(*TrueBBI.BB, TrueBBI.NonPredSize + TrueBBI.ExtraCost, in AnalyzeBlock()
1359 MeetIfcvtSizeLimit(*TrueBBI.BB, TrueBBI.NonPredSize + TrueBBI.ExtraCost, in AnalyzeBlock()
1368 MeetIfcvtSizeLimit(*TrueBBI.BB, TrueBBI.NonPredSize + TrueBBI.ExtraCost, in AnalyzeBlock()
1387 MeetIfcvtSizeLimit(*FalseBBI.BB, in AnalyzeBlock()
1398 MeetIfcvtSizeLimit(*FalseBBI.BB, in AnalyzeBlock()
1408 MeetIfcvtSizeLimit(*FalseBBI.BB, in AnalyzeBlock()
1458 if (PBBI.IsDone || PBBI.BB == &MBB) in InvalidatePreds()
1528 MachineBasicBlock &CvtMBB = *CvtBBI->BB; in IfConvertSimple()
1529 MachineBasicBlock &NextMBB = *NextBBI->BB; in IfConvertSimple()
1557 BBI.NonPredSize -= TII->removeBranch(*BBI.BB); in IfConvertSimple()
1565 BBI.BB->removeSuccessor(&CvtMBB, true); in IfConvertSimple()
1576 if (!canFallThroughTo(*BBI.BB, NextMBB)) { in IfConvertSimple()
1577 InsertUncondBranch(*BBI.BB, NextMBB, TII); in IfConvertSimple()
1595 InvalidatePreds(*BBI.BB); in IfConvertSimple()
1614 MachineBasicBlock &CvtMBB = *CvtBBI->BB; in IfConvertTriangle()
1615 MachineBasicBlock &NextMBB = *NextBBI->BB; in IfConvertTriangle()
1637 if (PBB == BBI.BB) in IfConvertTriangle()
1663 BBNext = MBPI->getEdgeProbability(BBI.BB, &NextMBB); in IfConvertTriangle()
1664 BBCvt = MBPI->getEdgeProbability(BBI.BB, &CvtMBB); in IfConvertTriangle()
1669 BBI.NonPredSize -= TII->removeBranch(*BBI.BB); in IfConvertTriangle()
1685 BBI.BB->removeSuccessor(&CvtMBB, true); in IfConvertTriangle()
1700 auto NewTrueBB = getNextBlock(*BBI.BB); in IfConvertTriangle()
1702 auto NewTrueBBIter = find(BBI.BB->successors(), NewTrueBB); in IfConvertTriangle()
1703 if (NewTrueBBIter != BBI.BB->succ_end()) in IfConvertTriangle()
1704 BBI.BB->setSuccProbability(NewTrueBBIter, NewNext); in IfConvertTriangle()
1707 TII->insertBranch(*BBI.BB, CvtBBI->FalseBB, nullptr, RevCond, dl); in IfConvertTriangle()
1708 BBI.BB->addSuccessor(CvtBBI->FalseBB, NewFalse); in IfConvertTriangle()
1715 bool isFallThrough = canFallThroughTo(*BBI.BB, NextMBB); in IfConvertTriangle()
1726 InsertUncondBranch(*BBI.BB, NextMBB, TII); in IfConvertTriangle()
1737 InvalidatePreds(*BBI.BB); in IfConvertTriangle()
1764 TrueBBI.BB->pred_size() > 1 || FalseBBI.BB->pred_size() > 1) { in IfConvertDiamondCommon()
1772 if (TrueBBI.BB->hasAddressTaken() || FalseBBI.BB->hasAddressTaken()) in IfConvertDiamondCommon()
1802 BBI.NonPredSize -= TII->removeBranch(*BBI.BB); in IfConvertDiamondCommon()
1804 MachineBasicBlock &MBB1 = *BBI1->BB; in IfConvertDiamondCommon()
1805 MachineBasicBlock &MBB2 = *BBI2->BB; in IfConvertDiamondCommon()
1855 BBI.BB->splice(BBI.BB->end(), &MBB1, MBB1.begin(), DI1); in IfConvertDiamondCommon()
1896 DI2 = BBI2->BB->end(); in IfConvertDiamondCommon()
1900 BBI2->NonPredSize -= TII->removeBranch(*BBI2->BB); in IfConvertDiamondCommon()
2000 MachineBasicBlock::iterator TIE = TrueBBI.BB->getFirstTerminator(); in IfConvertForkedDiamond()
2001 if (TIE != TrueBBI.BB->end()) in IfConvertForkedDiamond()
2015 TII->insertBranch(*BBI.BB, TrueBBI.TrueBB, TrueBBI.FalseBB, in IfConvertForkedDiamond()
2020 InvalidatePreds(*BBI.BB); in IfConvertForkedDiamond()
2056 BBI.BB->removeSuccessor(TrueBBI.BB); in IfConvertDiamond()
2057 BBI.BB->removeSuccessor(FalseBBI.BB, true); in IfConvertDiamond()
2061 !TailBBI.BB->hasAddressTaken(); in IfConvertDiamond()
2065 MachineBasicBlock::const_iterator TI = BBI.BB->getFirstTerminator(); in IfConvertDiamond()
2066 if (TI != BBI.BB->end() && TII->isPredicated(*TI)) in IfConvertDiamond()
2075 if (*PI != TrueBBI.BB && *PI != FalseBBI.BB) in IfConvertDiamond()
2082 BBI.BB->addSuccessor(TailBB, BranchProbability::getOne()); in IfConvertDiamond()
2083 InsertUncondBranch(*BBI.BB, *TailBB, TII); in IfConvertDiamond()
2090 InvalidatePreds(*BBI.BB); in IfConvertDiamond()
2123 for (MachineInstr &I : make_range(BBI.BB->begin(), E)) { in PredicateBlock()
2163 MachineFunction &MF = *ToBBI.BB->getParent(); in CopyAndPredicateBlock()
2165 MachineBasicBlock &FromMBB = *FromBBI.BB; in CopyAndPredicateBlock()
2176 ToBBI.BB->insert(ToBBI.BB->end(), MI); in CopyAndPredicateBlock()
2208 ToBBI.BB->addSuccessor(Succ); in CopyAndPredicateBlock()
2227 MachineBasicBlock &FromMBB = *FromBBI.BB; in MergeBlocks()
2237 if (MO.isMBB() && !ToBBI.BB->isSuccessor(MO.getMBB())) in MergeBlocks()
2238 ToBBI.BB->addSuccessor(MO.getMBB(), BranchProbability::getZero()); in MergeBlocks()
2243 MachineBasicBlock::iterator ToTI = ToBBI.BB->getFirstTerminator(); in MergeBlocks()
2244 ToBBI.BB->splice(ToTI, &FromMBB, FromMBB.begin(), FromTI); in MergeBlocks()
2248 ToTI = ToBBI.BB->end(); in MergeBlocks()
2249 ToBBI.BB->splice(ToTI, &FromMBB, FromTI, FromMBB.end()); in MergeBlocks()
2256 ToBBI.BB->normalizeSuccProbs(); in MergeBlocks()
2264 if (AddEdges && ToBBI.BB->isSuccessor(&FromMBB)) { in MergeBlocks()
2267 To2FromProb = MBPI->getEdgeProbability(ToBBI.BB, &FromMBB); in MergeBlocks()
2268 ToBBI.BB->removeSuccessor(&FromMBB); in MergeBlocks()
2320 if (ToBBI.BB->isSuccessor(Succ)) in MergeBlocks()
2321 ToBBI.BB->setSuccProbability( in MergeBlocks()
2322 find(ToBBI.BB->successors(), Succ), in MergeBlocks()
2323 MBPI->getEdgeProbability(ToBBI.BB, Succ) + NewProb); in MergeBlocks()
2325 ToBBI.BB->addSuccessor(Succ, NewProb); in MergeBlocks()
2338 ToBBI.BB->normalizeSuccProbs(); in MergeBlocks()