Lines Matching defs:TrueBBI
227 bool ValidSimple(BBInfo &TrueBBI, unsigned &Dups,
229 bool ValidTriangle(BBInfo &TrueBBI, BBInfo &FalseBBI,
238 bool ValidDiamond(BBInfo &TrueBBI, BBInfo &FalseBBI,
241 bool ValidForkedDiamond(BBInfo &TrueBBI, BBInfo &FalseBBI,
252 BBInfo &TrueBBI, BBInfo &FalseBBI) const;
263 bool IfConvertDiamondCommon(BBInfo &BBI, BBInfo &TrueBBI, BBInfo &FalseBBI,
643 bool IfConverter::ValidSimple(BBInfo &TrueBBI, unsigned &Dups,
646 if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone)
649 if (TrueBBI.IsBrAnalyzable)
652 if (TrueBBI.BB->pred_size() > 1) {
653 if (TrueBBI.CannotBeCopied ||
654 !TII->isProfitableToDupForIfCvt(*TrueBBI.BB, TrueBBI.NonPredSize,
657 Dups = TrueBBI.NonPredSize;
668 bool IfConverter::ValidTriangle(BBInfo &TrueBBI, BBInfo &FalseBBI,
672 if (TrueBBI.BB == FalseBBI.BB)
675 if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone)
678 if (TrueBBI.BB->pred_size() > 1) {
679 if (TrueBBI.CannotBeCopied)
682 unsigned Size = TrueBBI.NonPredSize;
683 if (TrueBBI.IsBrAnalyzable) {
684 if (TrueBBI.TrueBB && TrueBBI.BrCond.empty())
689 ? TrueBBI.TrueBB : TrueBBI.FalseBB;
695 if (!TII->isProfitableToDupForIfCvt(*TrueBBI.BB, Size, Prediction))
700 MachineBasicBlock *TExit = FalseBranch ? TrueBBI.FalseBB : TrueBBI.TrueBB;
701 if (!TExit && blockAlwaysFallThrough(TrueBBI)) {
702 MachineFunction::iterator I = TrueBBI.BB->getIterator();
703 if (++I == TrueBBI.BB->getParent()->end())
806 /// @param TrueBBI - BBInfo to update for the true block.
813 BBInfo &TrueBBI, BBInfo &FalseBBI) const {
815 TrueBBI.IsUnpredicable = FalseBBI.IsUnpredicable = false;
816 ScanInstructions(TrueBBI, TIB, TIE, BranchUnpredicable);
817 if (TrueBBI.IsUnpredicable)
822 if (TrueBBI.ClobbersPred && FalseBBI.ClobbersPred)
875 BBInfo &TrueBBI, BBInfo &FalseBBI,
879 if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone ||
883 if (!TrueBBI.IsBrAnalyzable || !FalseBBI.IsBrAnalyzable)
886 if (TrueBBI.BB->pred_size() > 1 || FalseBBI.BB->pred_size() > 1)
891 if (TrueBBI.BrCond.size() == 0 ||
895 MachineBasicBlock *TT = TrueBBI.TrueBB;
896 MachineBasicBlock *TF = TrueBBI.FalseBB;
901 TT = getNextBlock(*TrueBBI.BB);
903 TF = getNextBlock(*TrueBBI.BB);
930 MachineBasicBlock::iterator TIB = TrueBBI.BB->begin();
932 MachineBasicBlock::iterator TIE = TrueBBI.BB->end();
935 *TrueBBI.BB, *FalseBBI.BB,
939 TrueBBICalc.BB = TrueBBI.BB;
941 TrueBBICalc.IsBrAnalyzable = TrueBBI.IsBrAnalyzable;
949 TrueBBICalc.NonPredSize = TrueBBI.NonPredSize;
957 BBInfo &TrueBBI, BBInfo &FalseBBI,
961 if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone ||
967 if (TrueBBI.BB == FalseBBI.BB)
970 MachineBasicBlock *TT = TrueBBI.TrueBB;
973 if (!TT && blockAlwaysFallThrough(TrueBBI))
974 TT = getNextBlock(*TrueBBI.BB);
979 if (!TT && (TrueBBI.IsBrAnalyzable || FalseBBI.IsBrAnalyzable))
981 if (TrueBBI.BB->pred_size() > 1 || FalseBBI.BB->pred_size() > 1)
985 if (TrueBBI.FalseBB || FalseBBI.FalseBB)
993 TrueBBI.IsBrAnalyzable && FalseBBI.IsBrAnalyzable;
994 MachineBasicBlock::iterator TIB = TrueBBI.BB->begin();
996 MachineBasicBlock::iterator TIE = TrueBBI.BB->end();
999 *TrueBBI.BB, *FalseBBI.BB,
1003 TrueBBICalc.BB = TrueBBI.BB;
1005 TrueBBICalc.IsBrAnalyzable = TrueBBI.IsBrAnalyzable;
1012 TrueBBICalc.NonPredSize = TrueBBI.NonPredSize;
1270 BBInfo &TrueBBI = BBAnalysis[BBI.TrueBB->getNumber()];
1273 if (TrueBBI.IsDone && FalseBBI.IsDone) {
1286 bool TNeedSub = !TrueBBI.Predicate.empty();
1290 BranchProbability Prediction = MBPI->getEdgeProbability(BB, TrueBBI.BB);
1297 bool TrueFeasible = FeasibilityAnalysis(TrueBBI, BBI.BrCond,
1306 if (ValidDiamond(TrueBBI, FalseBBI, Dups, Dups2,
1322 } else if (ValidForkedDiamond(TrueBBI, FalseBBI, Dups, Dups2,
1343 if (ValidTriangle(TrueBBI, FalseBBI, false, Dups, Prediction) &&
1344 MeetIfcvtSizeLimit(*TrueBBI.BB, TrueBBI.NonPredSize + TrueBBI.ExtraCost,
1345 TrueBBI.ExtraCost2, Prediction) &&
1346 FeasibilityAnalysis(TrueBBI, BBI.BrCond, true)) {
1359 if (ValidTriangle(TrueBBI, FalseBBI, true, Dups, Prediction) &&
1360 MeetIfcvtSizeLimit(*TrueBBI.BB, TrueBBI.NonPredSize + TrueBBI.ExtraCost,
1361 TrueBBI.ExtraCost2, Prediction) &&
1362 FeasibilityAnalysis(TrueBBI, BBI.BrCond, true, true)) {
1368 if (ValidSimple(TrueBBI, Dups, Prediction) &&
1369 MeetIfcvtSizeLimit(*TrueBBI.BB, TrueBBI.NonPredSize + TrueBBI.ExtraCost,
1370 TrueBBI.ExtraCost2, Prediction) &&
1371 FeasibilityAnalysis(TrueBBI, BBI.BrCond)) {
1386 if (ValidTriangle(FalseBBI, TrueBBI, false, Dups,
1397 if (ValidTriangle(FalseBBI, TrueBBI, true, Dups,
1520 BBInfo &TrueBBI = BBAnalysis[BBI.TrueBB->getNumber()];
1522 BBInfo *CvtBBI = &TrueBBI;
1605 BBInfo &TrueBBI = BBAnalysis[BBI.TrueBB->getNumber()];
1607 BBInfo *CvtBBI = &TrueBBI;
1748 /// \p BBI, \p TrueBBI, and \p FalseBBI form the diamond shape.
1749 /// \p NumDups1 - number of shared instructions at the beginning of \p TrueBBI
1751 /// \p NumDups2 - number of shared instructions at the end of \p TrueBBI
1759 BBInfo &BBI, BBInfo &TrueBBI, BBInfo &FalseBBI,
1764 if (TrueBBI.IsDone || FalseBBI.IsDone ||
1765 TrueBBI.BB->pred_size() > 1 || FalseBBI.BB->pred_size() > 1) {
1768 TrueBBI.IsAnalyzed = false;
1773 if (TrueBBI.BB->hasAddressTaken() || FalseBBI.BB->hasAddressTaken())
1780 BBInfo *BBI1 = &TrueBBI;
1793 if (TrueBBI.NonPredSize > FalseBBI.NonPredSize)
1996 BBInfo &TrueBBI = BBAnalysis[BBI.TrueBB->getNumber()];
2001 MachineBasicBlock::iterator TIE = TrueBBI.BB->getFirstTerminator();
2002 if (TIE != TrueBBI.BB->end())
2008 BBI, TrueBBI, FalseBBI,
2016 TII->insertBranch(*BBI.BB, TrueBBI.TrueBB, TrueBBI.FalseBB,
2017 TrueBBI.BrCond, dl);
2020 BBI.IsDone = TrueBBI.IsDone = FalseBBI.IsDone = true;
2031 BBInfo &TrueBBI = BBAnalysis[BBI.TrueBB->getNumber()];
2033 MachineBasicBlock *TailBB = TrueBBI.TrueBB;
2037 if (blockAlwaysFallThrough(TrueBBI))
2039 assert((TailBB || !TrueBBI.IsBrAnalyzable) && "Unexpected!");
2043 BBI, TrueBBI, FalseBBI,
2046 /* RemoveBranch */ TrueBBI.IsBrAnalyzable,
2057 BBI.BB->removeSuccessor(TrueBBI.BB);
2076 if (*PI != TrueBBI.BB && *PI != FalseBBI.BB)
2090 BBI.IsDone = TrueBBI.IsDone = FalseBBI.IsDone = true;