• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/Transforms/Scalar/

Lines Matching refs:BI

365 static bool unswitchTrivialBranch(Loop &L, BranchInst &BI, DominatorTree &DT,
368 assert(BI.isConditional() && "Can only unswitch a conditional branch!");
369 LLVM_DEBUG(dbgs() << " Trying to unswitch branch: " << BI << "\n");
378 if (L.isLoopInvariant(BI.getCondition())) {
379 Invariants.push_back(BI.getCondition());
382 if (auto *CondInst = dyn_cast<Instruction>(BI.getCondition()))
392 auto *LoopExitBB = BI.getSuccessor(0);
396 LoopExitBB = BI.getSuccessor(1);
400 auto *ContinueBB = BI.getSuccessor(1 - LoopExitSuccIdx);
401 auto *ParentBB = BI.getParent();
412 if (cast<Instruction>(BI.getCondition())->getOpcode() != Instruction::Or)
415 if (cast<Instruction>(BI.getCondition())->getOpcode() != Instruction::And)
421 dbgs() << " unswitching trivial invariant conditions for: " << BI
457 assert(LoopExitBB->getUniquePredecessor() == BI.getParent() &&
476 OldPH->getInstList().splice(OldPH->end(), BI.getParent()->getInstList(),
477 BI);
481 ParentBB->getInstList().push_back(BI.clone());
487 BI.setSuccessor(LoopExitSuccIdx, UnswitchedBB);
488 BI.setSuccessor(1 - LoopExitSuccIdx, NewPH);
493 assert(cast<Instruction>(BI.getCondition())->getOpcode() ==
497 assert(cast<Instruction>(BI.getCondition())->getOpcode() ==
541 ? ConstantInt::getFalse(BI.getContext())
542 : ConstantInt::getTrue(BI.getContext());
919 auto *BI = dyn_cast<BranchInst>(CurrentBB->getTerminator());
920 if (!BI || BI->isConditional())
923 CurrentBB = BI->getSuccessor(0);
927 auto *BI = dyn_cast<BranchInst>(CurrentTerm);
928 if (!BI)
935 if (!BI->isConditional() || isa<Constant>(BI->getCondition()))
940 if (!unswitchTrivialBranch(L, *BI, DT, LI, SE, MSSAU))
948 BI = cast<BranchInst>(CurrentBB->getTerminator());
949 if (BI->isConditional())
953 CurrentBB = BI->getSuccessor(0);
1924 BranchInst *BI = dyn_cast<BranchInst>(&TI);
1925 SwitchInst *SI = BI ? nullptr : cast<SwitchInst>(&TI);
1929 assert((SI || (BI && BI->isConditional())) &&
1931 bool FullUnswitch = SI || BI->getCondition() == Invariants[0];
1936 assert(isa<Instruction>(BI->getCondition()) &&
1951 if (cast<Instruction>(BI->getCondition())->getOpcode() != Instruction::Or) {
1952 assert(cast<Instruction>(BI->getCondition())->getOpcode() ==
1962 BI ? BI->getSuccessor(1 - ClonedSucc) : SI->getDefaultDest();
1964 if (BI)
1965 UnswitchedSuccBBs.insert(BI->getSuccessor(ClonedSucc));
2065 if (BI) {
2067 BI->setSuccessor(ClonedSucc, ClonedPH);
2068 BI->setSuccessor(1 - ClonedSucc, LoopPH);
2115 if (BI) {
2152 assert(BI && "Only branches have partial unswitching.");
2211 if (BI) {
2232 Direction ? ConstantInt::getTrue(BI->getContext())
2233 : ConstantInt::getFalse(BI->getContext());
2235 Direction ? ConstantInt::getFalse(BI->getContext())
2236 : ConstantInt::getTrue(BI->getContext());
2331 if (BI)
2581 auto *BI = dyn_cast<BranchInst>(BB->getTerminator());
2582 if (!BI || !BI->isConditional() || isa<Constant>(BI->getCondition()) ||
2583 BI->getSuccessor(0) == BI->getSuccessor(1))
2586 if (L.isLoopInvariant(BI->getCondition())) {
2587 UnswitchCandidates.push_back({BI, {BI->getCondition()}});
2591 Instruction &CondI = *cast<Instruction>(BI->getCondition());
2601 UnswitchCandidates.push_back({BI, std::move(Invariants)});
2704 auto &BI = cast<BranchInst>(TI);
2705 if (cast<Instruction>(BI.getCondition())->getOpcode() ==
2707 if (SuccBB == BI.getSuccessor(1))
2710 assert(cast<Instruction>(BI.getCondition())->getOpcode() ==
2714 if (SuccBB == BI.getSuccessor(0))
2749 BranchInst *BI = dyn_cast<BranchInst>(&TI);
2751 TI, /*FullUnswitch*/ !BI || (Invariants.size() == 1 &&
2752 Invariants[0] == BI->getCondition()));