Lines Matching refs:PBI
3846 static bool extractPredSuccWeights(BranchInst *PBI, BranchInst *BI, in extractPredSuccWeights() argument
3852 extractBranchWeights(*PBI, PredTrueWeight, PredFalseWeight); in extractPredSuccWeights()
3870 shouldFoldCondBranchesToCommonDestination(BranchInst *BI, BranchInst *PBI, in shouldFoldCondBranchesToCommonDestination() argument
3872 assert(BI && PBI && BI->isConditional() && PBI->isConditional() && in shouldFoldCondBranchesToCommonDestination()
3874 assert(is_contained(predecessors(BI->getParent()), PBI->getParent()) && in shouldFoldCondBranchesToCommonDestination()
3881 if (TTI && !PBI->getMetadata(LLVMContext::MD_unpredictable) && in shouldFoldCondBranchesToCommonDestination()
3882 extractBranchWeights(*PBI, PTWeight, PFWeight) && in shouldFoldCondBranchesToCommonDestination()
3889 if (PBI->getSuccessor(0) == BI->getSuccessor(0)) { in shouldFoldCondBranchesToCommonDestination()
3893 } else if (PBI->getSuccessor(1) == BI->getSuccessor(1)) { in shouldFoldCondBranchesToCommonDestination()
3897 } else if (PBI->getSuccessor(0) == BI->getSuccessor(1)) { in shouldFoldCondBranchesToCommonDestination()
3901 } else if (PBI->getSuccessor(1) == BI->getSuccessor(0)) { in shouldFoldCondBranchesToCommonDestination()
3909 static bool performBranchToCommonDestFolding(BranchInst *BI, BranchInst *PBI, in performBranchToCommonDestFolding() argument
3914 BasicBlock *PredBlock = PBI->getParent(); in performBranchToCommonDestFolding()
3921 *shouldFoldCondBranchesToCommonDestination(BI, PBI, TTI); in performBranchToCommonDestFolding()
3923 LLVM_DEBUG(dbgs() << "FOLDING BRANCH TO COMMON DEST:\n" << *PBI << *BB); in performBranchToCommonDestFolding()
3925 IRBuilder<> Builder(PBI); in performBranchToCommonDestFolding()
3934 InvertBranch(PBI, Builder); in performBranchToCommonDestFolding()
3938 PBI->getSuccessor(0) == BB ? BI->getSuccessor(0) : BI->getSuccessor(1); in performBranchToCommonDestFolding()
3947 if (extractPredSuccWeights(PBI, BI, PredTrueWeight, PredFalseWeight, in performBranchToCommonDestFolding()
3951 if (PBI->getSuccessor(0) == BB) { in performBranchToCommonDestFolding()
3978 setBranchWeights(PBI, MDWeights[0], MDWeights[1], /*IsExpected=*/false); in performBranchToCommonDestFolding()
3983 PBI->setMetadata(LLVMContext::MD_prof, nullptr); in performBranchToCommonDestFolding()
3986 PBI->setSuccessor(PBI->getSuccessor(0) != BB, UniqueSucc); in performBranchToCommonDestFolding()
3995 PBI->setMetadata(LLVMContext::MD_loop, LoopMD); in performBranchToCommonDestFolding()
4012 PBI->setCondition( in performBranchToCommonDestFolding()
4013 createLogicalOp(Builder, Opc, PBI->getCondition(), BICond, "or.cond")); in performBranchToCommonDestFolding()
4057 BranchInst *PBI = dyn_cast<BranchInst>(PredBlock->getTerminator()); in foldBranchToCommonDest() local
4062 if (!PBI || PBI->isUnconditional() || !safeToMergeTerminators(BI, PBI)) in foldBranchToCommonDest()
4069 if (auto Recipe = shouldFoldCondBranchesToCommonDestination(BI, PBI, TTI)) in foldBranchToCommonDest()
4079 if (InvertPredCond && (!PBI->getCondition()->hasOneUse() || in foldBranchToCommonDest()
4080 !isa<CmpInst>(PBI->getCondition()))) in foldBranchToCommonDest()
4147 auto *PBI = cast<BranchInst>(PredBlock->getTerminator()); in foldBranchToCommonDest() local
4148 return performBranchToCommonDestFolding(BI, PBI, DTU, MSSAU, TTI); in foldBranchToCommonDest()
4370 static bool mergeConditionalStores(BranchInst *PBI, BranchInst *QBI, in mergeConditionalStores() argument
4400 BasicBlock *PTB = PBI->getSuccessor(0); in mergeConditionalStores()
4401 BasicBlock *PFB = PBI->getSuccessor(1); in mergeConditionalStores()
4439 if (!HasOnePredAndOneSucc(PFB, PBI->getParent(), QBI->getParent()) || in mergeConditionalStores()
4442 if ((PTB && !HasOnePredAndOneSucc(PTB, PBI->getParent(), QBI->getParent())) || in mergeConditionalStores()
4482 static bool tryWidenCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI, in tryWidenCondBranchToCondBranch() argument
4490 BasicBlock *IfTrueBB = PBI->getSuccessor(0); in tryWidenCondBranchToCondBranch()
4491 BasicBlock *IfFalseBB = PBI->getSuccessor(1); in tryWidenCondBranchToCondBranch()
4492 if (!isWidenableBranch(PBI) || IfTrueBB != BI->getParent() || in tryWidenCondBranchToCondBranch()
4539 static bool SimplifyCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI, in SimplifyCondBranchToCondBranch() argument
4543 assert(PBI->isConditional() && BI->isConditional()); in SimplifyCondBranchToCondBranch()
4549 if (PBI->getCondition() == BI->getCondition() && in SimplifyCondBranchToCondBranch()
4550 PBI->getSuccessor(0) != PBI->getSuccessor(1)) { in SimplifyCondBranchToCondBranch()
4556 bool CondIsTrue = PBI->getSuccessor(0) == BB; in SimplifyCondBranchToCondBranch()
4566 if (tryWidenCondBranchToCondBranch(PBI, BI, DTU)) in SimplifyCondBranchToCondBranch()
4572 if (MergeCondStores && mergeConditionalStores(PBI, BI, DTU, DL, TTI)) in SimplifyCondBranchToCondBranch()
4584 if (PBI->getSuccessor(0) == BI->getSuccessor(0)) { in SimplifyCondBranchToCondBranch()
4587 } else if (PBI->getSuccessor(0) == BI->getSuccessor(1)) { in SimplifyCondBranchToCondBranch()
4590 } else if (PBI->getSuccessor(1) == BI->getSuccessor(0)) { in SimplifyCondBranchToCondBranch()
4593 } else if (PBI->getSuccessor(1) == BI->getSuccessor(1)) { in SimplifyCondBranchToCondBranch()
4603 if (PBI->getSuccessor(PBIOp) == BB) in SimplifyCondBranchToCondBranch()
4608 if (!PBI->getMetadata(LLVMContext::MD_unpredictable) && in SimplifyCondBranchToCondBranch()
4609 extractBranchWeights(*PBI, PredWeights) && in SimplifyCondBranchToCondBranch()
4625 BasicBlock *CommonDest = PBI->getSuccessor(PBIOp); in SimplifyCondBranchToCondBranch()
4626 BasicBlock *RemovedDest = PBI->getSuccessor(PBIOp ^ 1); in SimplifyCondBranchToCondBranch()
4637 LLVM_DEBUG(dbgs() << "FOLDING BRs:" << *PBI->getParent() in SimplifyCondBranchToCondBranch()
4660 LLVM_DEBUG(dbgs() << *PBI->getParent()->getParent()); in SimplifyCondBranchToCondBranch()
4666 Value *PBICond = PBI->getCondition(); in SimplifyCondBranchToCondBranch()
4667 IRBuilder<NoFolder> Builder(PBI); in SimplifyCondBranchToCondBranch()
4680 PBI->setCondition(Cond); in SimplifyCondBranchToCondBranch()
4681 PBI->setSuccessor(0, CommonDest); in SimplifyCondBranchToCondBranch()
4682 PBI->setSuccessor(1, OtherDest); in SimplifyCondBranchToCondBranch()
4685 Updates.push_back({DominatorTree::Insert, PBI->getParent(), OtherDest}); in SimplifyCondBranchToCondBranch()
4686 Updates.push_back({DominatorTree::Delete, PBI->getParent(), RemovedDest}); in SimplifyCondBranchToCondBranch()
4695 extractPredSuccWeights(PBI, BI, PredTrueWeight, PredFalseWeight, in SimplifyCondBranchToCondBranch()
4711 setBranchWeights(PBI, NewWeights[0], NewWeights[1], /*IsExpected=*/false); in SimplifyCondBranchToCondBranch()
4716 addPredecessorToBlock(OtherDest, PBI->getParent(), BB); in SimplifyCondBranchToCondBranch()
4724 unsigned PBBIdx = PN.getBasicBlockIndex(PBI->getParent()); in SimplifyCondBranchToCondBranch()
4753 LLVM_DEBUG(dbgs() << "INTO: " << *PBI->getParent()); in SimplifyCondBranchToCondBranch()
4754 LLVM_DEBUG(dbgs() << *PBI->getParent()->getParent()); in SimplifyCondBranchToCondBranch()
8044 if (BranchInst *PBI = dyn_cast<BranchInst>(Pred->getTerminator())) in simplifyCondBranch() local
8045 if (PBI != BI && PBI->isConditional()) in simplifyCondBranch()
8046 if (SimplifyCondBranchToCondBranch(PBI, BI, DTU, DL, TTI)) in simplifyCondBranch()
8052 if (BranchInst *PBI = dyn_cast<BranchInst>(PrevBB->getTerminator())) in simplifyCondBranch() local
8053 if (PBI != BI && PBI->isConditional()) in simplifyCondBranch()
8054 if (mergeConditionalStores(PBI, BI, DTU, DL, TTI)) in simplifyCondBranch()