Lines Matching refs:BI

449 static bool unswitchTrivialBranch(Loop &L, BranchInst &BI, DominatorTree &DT,  in unswitchTrivialBranch()  argument
452 assert(BI.isConditional() && "Can only unswitch a conditional branch!"); in unswitchTrivialBranch()
453 LLVM_DEBUG(dbgs() << " Trying to unswitch branch: " << BI << "\n"); in unswitchTrivialBranch()
462 Value *Cond = skipTrivialSelect(BI.getCondition()); in unswitchTrivialBranch()
478 auto *LoopExitBB = BI.getSuccessor(0); in unswitchTrivialBranch()
482 LoopExitBB = BI.getSuccessor(1); in unswitchTrivialBranch()
488 auto *ContinueBB = BI.getSuccessor(1 - LoopExitSuccIdx); in unswitchTrivialBranch()
489 auto *ParentBB = BI.getParent(); in unswitchTrivialBranch()
510 dbgs() << " unswitching trivial invariant conditions for: " << BI in unswitchTrivialBranch()
546 assert(LoopExitBB->getUniquePredecessor() == BI.getParent() && in unswitchTrivialBranch()
565 OldPH->getInstList().splice(OldPH->end(), BI.getParent()->getInstList(), in unswitchTrivialBranch()
566 BI); in unswitchTrivialBranch()
567 BI.setCondition(Cond); in unswitchTrivialBranch()
571 ParentBB->getInstList().push_back(BI.clone()); in unswitchTrivialBranch()
577 BI.setSuccessor(LoopExitSuccIdx, UnswitchedBB); in unswitchTrivialBranch()
578 BI.setSuccessor(1 - LoopExitSuccIdx, NewPH); in unswitchTrivialBranch()
583 assert(match(skipTrivialSelect(BI.getCondition()), m_LogicalOr()) && in unswitchTrivialBranch()
587 assert(match(skipTrivialSelect(BI.getCondition()), m_LogicalAnd()) && in unswitchTrivialBranch()
632 ? ConstantInt::getFalse(BI.getContext()) in unswitchTrivialBranch()
633 : ConstantInt::getTrue(BI.getContext()); in unswitchTrivialBranch()
1026 auto *BI = dyn_cast<BranchInst>(CurrentBB->getTerminator()); in unswitchAllTrivialConditions() local
1027 if (!BI || BI->isConditional()) in unswitchAllTrivialConditions()
1030 CurrentBB = BI->getSuccessor(0); in unswitchAllTrivialConditions()
1034 auto *BI = dyn_cast<BranchInst>(CurrentTerm); in unswitchAllTrivialConditions() local
1035 if (!BI) in unswitchAllTrivialConditions()
1042 if (!BI->isConditional() || in unswitchAllTrivialConditions()
1043 isa<Constant>(skipTrivialSelect(BI->getCondition()))) in unswitchAllTrivialConditions()
1048 if (!unswitchTrivialBranch(L, *BI, DT, LI, SE, MSSAU)) in unswitchAllTrivialConditions()
1056 BI = cast<BranchInst>(CurrentBB->getTerminator()); in unswitchAllTrivialConditions()
1057 if (BI->isConditional()) in unswitchAllTrivialConditions()
1061 CurrentBB = BI->getSuccessor(0); in unswitchAllTrivialConditions()
1230 if (auto *BI = dyn_cast<BranchInst>(ClonedTerminator)) in buildClonedLoopBlocks() local
1231 ClonedConditionToErase = BI->getCondition(); in buildClonedLoopBlocks()
2056 BranchInst *BI = dyn_cast<BranchInst>(&TI); in unswitchNontrivialInvariants() local
2057 SwitchInst *SI = BI ? nullptr : cast<SwitchInst>(&TI); in unswitchNontrivialInvariants()
2062 assert((SI || (BI && BI->isConditional())) && in unswitchNontrivialInvariants()
2066 SI || (skipTrivialSelect(BI->getCondition()) == Invariants[0] && in unswitchNontrivialInvariants()
2072 assert(isa<Instruction>(skipTrivialSelect(BI->getCondition())) && in unswitchNontrivialInvariants()
2087 Value *Cond = skipTrivialSelect(BI->getCondition()); in unswitchNontrivialInvariants()
2103 BI ? BI->getSuccessor(1 - ClonedSucc) : SI->getDefaultDest(); in unswitchNontrivialInvariants()
2105 if (BI) in unswitchNontrivialInvariants()
2106 UnswitchedSuccBBs.insert(BI->getSuccessor(ClonedSucc)); in unswitchNontrivialInvariants()
2230 if (BI) { in unswitchNontrivialInvariants()
2232 BI->setSuccessor(ClonedSucc, ClonedPH); in unswitchNontrivialInvariants()
2233 BI->setSuccessor(1 - ClonedSucc, LoopPH); in unswitchNontrivialInvariants()
2234 Value *Cond = skipTrivialSelect(BI->getCondition()); in unswitchNontrivialInvariants()
2236 if (!isGuaranteedNotToBeUndefOrPoison(Cond, &AC, BI, &DT)) in unswitchNontrivialInvariants()
2237 Cond = new FreezeInst(Cond, Cond->getName() + ".fr", BI); in unswitchNontrivialInvariants()
2239 BI->setCondition(Cond); in unswitchNontrivialInvariants()
2291 if (BI) { in unswitchNontrivialInvariants()
2328 assert(BI && "Only branches have partial unswitching."); in unswitchNontrivialInvariants()
2340 FreezeLoopUnswitchCond, BI, &AC, DT); in unswitchNontrivialInvariants()
2393 if (BI && !PartiallyInvariant) { in unswitchNontrivialInvariants()
2415 Direction ? ConstantInt::getTrue(BI->getContext()) in unswitchNontrivialInvariants()
2416 : ConstantInt::getFalse(BI->getContext()); in unswitchNontrivialInvariants()
2418 Direction ? ConstantInt::getFalse(BI->getContext()) in unswitchNontrivialInvariants()
2419 : ConstantInt::getTrue(BI->getContext()); in unswitchNontrivialInvariants()
2515 if (BI) in unswitchNontrivialInvariants()
2768 auto *BI = dyn_cast<BranchInst>(BB->getTerminator()); in unswitchBestCondition() local
2769 if (!BI || !BI->isConditional() || isa<Constant>(BI->getCondition()) || in unswitchBestCondition()
2770 BI->getSuccessor(0) == BI->getSuccessor(1)) in unswitchBestCondition()
2773 Value *Cond = skipTrivialSelect(BI->getCondition()); in unswitchBestCondition()
2778 UnswitchCandidates.push_back({BI, {Cond}}); in unswitchBestCondition()
2789 UnswitchCandidates.push_back({BI, std::move(Invariants)}); in unswitchBestCondition()
2922 auto &BI = cast<BranchInst>(TI); in unswitchBestCondition() local
2923 Value *Cond = skipTrivialSelect(BI.getCondition()); in unswitchBestCondition()
2925 if (SuccBB == BI.getSuccessor(1)) in unswitchBestCondition()
2928 if (SuccBB == BI.getSuccessor(0)) in unswitchBestCondition()
2931 SuccBB == BI.getSuccessor(0)) || in unswitchBestCondition()
2933 SuccBB == BI.getSuccessor(1))) in unswitchBestCondition()
2967 BranchInst *BI = dyn_cast<BranchInst>(&TI); in unswitchBestCondition() local
2969 TI, /*FullUnswitch*/ !BI || in unswitchBestCondition()
2971 Invariants[0] == skipTrivialSelect(BI->getCondition()))); in unswitchBestCondition()