Lines Matching refs:PBI

3351 static bool extractPredSuccWeights(BranchInst *PBI, BranchInst *BI,  in extractPredSuccWeights()  argument
3357 PBI->extractProfMetadata(PredTrueWeight, PredFalseWeight); in extractPredSuccWeights()
3375 shouldFoldCondBranchesToCommonDestination(BranchInst *BI, BranchInst *PBI, in shouldFoldCondBranchesToCommonDestination() argument
3377 assert(BI && PBI && BI->isConditional() && PBI->isConditional() && in shouldFoldCondBranchesToCommonDestination()
3379 assert(is_contained(predecessors(BI->getParent()), PBI->getParent()) && in shouldFoldCondBranchesToCommonDestination()
3386 if (TTI && !PBI->getMetadata(LLVMContext::MD_unpredictable) && in shouldFoldCondBranchesToCommonDestination()
3387 PBI->extractProfMetadata(PTWeight, PFWeight) && in shouldFoldCondBranchesToCommonDestination()
3394 if (PBI->getSuccessor(0) == BI->getSuccessor(0)) { in shouldFoldCondBranchesToCommonDestination()
3398 } else if (PBI->getSuccessor(1) == BI->getSuccessor(1)) { in shouldFoldCondBranchesToCommonDestination()
3402 } else if (PBI->getSuccessor(0) == BI->getSuccessor(1)) { in shouldFoldCondBranchesToCommonDestination()
3406 } else if (PBI->getSuccessor(1) == BI->getSuccessor(0)) { in shouldFoldCondBranchesToCommonDestination()
3414 static bool performBranchToCommonDestFolding(BranchInst *BI, BranchInst *PBI, in performBranchToCommonDestFolding() argument
3419 BasicBlock *PredBlock = PBI->getParent(); in performBranchToCommonDestFolding()
3425 *shouldFoldCondBranchesToCommonDestination(BI, PBI, TTI); in performBranchToCommonDestFolding()
3427 LLVM_DEBUG(dbgs() << "FOLDING BRANCH TO COMMON DEST:\n" << *PBI << *BB); in performBranchToCommonDestFolding()
3429 IRBuilder<> Builder(PBI); in performBranchToCommonDestFolding()
3438 Value *NewCond = PBI->getCondition(); in performBranchToCommonDestFolding()
3444 Builder.CreateNot(NewCond, PBI->getCondition()->getName() + ".not"); in performBranchToCommonDestFolding()
3447 PBI->setCondition(NewCond); in performBranchToCommonDestFolding()
3448 PBI->swapSuccessors(); in performBranchToCommonDestFolding()
3452 PBI->getSuccessor(0) == BB ? BI->getSuccessor(0) : BI->getSuccessor(1); in performBranchToCommonDestFolding()
3461 if (extractPredSuccWeights(PBI, BI, PredTrueWeight, PredFalseWeight, in performBranchToCommonDestFolding()
3465 if (PBI->getSuccessor(0) == BB) { in performBranchToCommonDestFolding()
3492 setBranchWeights(PBI, MDWeights[0], MDWeights[1]); in performBranchToCommonDestFolding()
3497 PBI->setMetadata(LLVMContext::MD_prof, nullptr); in performBranchToCommonDestFolding()
3500 PBI->setSuccessor(PBI->getSuccessor(0) != BB, UniqueSucc); in performBranchToCommonDestFolding()
3509 PBI->setMetadata(LLVMContext::MD_loop, LoopMD); in performBranchToCommonDestFolding()
3517 PBI->setCondition( in performBranchToCommonDestFolding()
3518 createLogicalOp(Builder, Opc, PBI->getCondition(), BICond, "or.cond")); in performBranchToCommonDestFolding()
3526 NewI->insertBefore(PBI); in performBranchToCommonDestFolding()
3574 BranchInst *PBI = dyn_cast<BranchInst>(PredBlock->getTerminator()); in FoldBranchToCommonDest() local
3579 if (!PBI || PBI->isUnconditional() || !SafeToMergeTerminators(BI, PBI)) in FoldBranchToCommonDest()
3585 if (auto Recipe = shouldFoldCondBranchesToCommonDestination(BI, PBI, TTI)) in FoldBranchToCommonDest()
3595 if (InvertPredCond && (!PBI->getCondition()->hasOneUse() || in FoldBranchToCommonDest()
3596 !isa<CmpInst>(PBI->getCondition()))) in FoldBranchToCommonDest()
3663 auto *PBI = cast<BranchInst>(PredBlock->getTerminator()); in FoldBranchToCommonDest() local
3664 return performBranchToCommonDestFolding(BI, PBI, DTU, MSSAU, TTI); in FoldBranchToCommonDest()
3880 static bool mergeConditionalStores(BranchInst *PBI, BranchInst *QBI, in mergeConditionalStores() argument
3910 BasicBlock *PTB = PBI->getSuccessor(0); in mergeConditionalStores()
3911 BasicBlock *PFB = PBI->getSuccessor(1); in mergeConditionalStores()
3949 if (!HasOnePredAndOneSucc(PFB, PBI->getParent(), QBI->getParent()) || in mergeConditionalStores()
3952 if ((PTB && !HasOnePredAndOneSucc(PTB, PBI->getParent(), QBI->getParent())) || in mergeConditionalStores()
3992 static bool tryWidenCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI, in tryWidenCondBranchToCondBranch() argument
4002 if (!parseWidenableBranch(PBI, CondWB, WC, IfTrueBB, IfFalseBB) || in tryWidenCondBranchToCondBranch()
4044 static bool SimplifyCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI, in SimplifyCondBranchToCondBranch() argument
4048 assert(PBI->isConditional() && BI->isConditional()); in SimplifyCondBranchToCondBranch()
4054 if (PBI->getCondition() == BI->getCondition() && in SimplifyCondBranchToCondBranch()
4055 PBI->getSuccessor(0) != PBI->getSuccessor(1)) { in SimplifyCondBranchToCondBranch()
4061 bool CondIsTrue = PBI->getSuccessor(0) == BB; in SimplifyCondBranchToCondBranch()
4071 if (tryWidenCondBranchToCondBranch(PBI, BI, DTU)) in SimplifyCondBranchToCondBranch()
4077 if (MergeCondStores && mergeConditionalStores(PBI, BI, DTU, DL, TTI)) in SimplifyCondBranchToCondBranch()
4089 if (PBI->getSuccessor(0) == BI->getSuccessor(0)) { in SimplifyCondBranchToCondBranch()
4092 } else if (PBI->getSuccessor(0) == BI->getSuccessor(1)) { in SimplifyCondBranchToCondBranch()
4095 } else if (PBI->getSuccessor(1) == BI->getSuccessor(0)) { in SimplifyCondBranchToCondBranch()
4098 } else if (PBI->getSuccessor(1) == BI->getSuccessor(1)) { in SimplifyCondBranchToCondBranch()
4108 if (PBI->getSuccessor(PBIOp) == BB) in SimplifyCondBranchToCondBranch()
4115 BasicBlock *CommonDest = PBI->getSuccessor(PBIOp); in SimplifyCondBranchToCondBranch()
4116 BasicBlock *RemovedDest = PBI->getSuccessor(PBIOp ^ 1); in SimplifyCondBranchToCondBranch()
4127 LLVM_DEBUG(dbgs() << "FOLDING BRs:" << *PBI->getParent() in SimplifyCondBranchToCondBranch()
4150 LLVM_DEBUG(dbgs() << *PBI->getParent()->getParent()); in SimplifyCondBranchToCondBranch()
4156 Value *PBICond = PBI->getCondition(); in SimplifyCondBranchToCondBranch()
4157 IRBuilder<NoFolder> Builder(PBI); in SimplifyCondBranchToCondBranch()
4170 PBI->setCondition(Cond); in SimplifyCondBranchToCondBranch()
4171 PBI->setSuccessor(0, CommonDest); in SimplifyCondBranchToCondBranch()
4172 PBI->setSuccessor(1, OtherDest); in SimplifyCondBranchToCondBranch()
4175 Updates.push_back({DominatorTree::Insert, PBI->getParent(), OtherDest}); in SimplifyCondBranchToCondBranch()
4176 Updates.push_back({DominatorTree::Delete, PBI->getParent(), RemovedDest}); in SimplifyCondBranchToCondBranch()
4185 extractPredSuccWeights(PBI, BI, PredTrueWeight, PredFalseWeight, in SimplifyCondBranchToCondBranch()
4201 setBranchWeights(PBI, NewWeights[0], NewWeights[1]); in SimplifyCondBranchToCondBranch()
4206 AddPredecessorToBlock(OtherDest, PBI->getParent(), BB); in SimplifyCondBranchToCondBranch()
4214 unsigned PBBIdx = PN.getBasicBlockIndex(PBI->getParent()); in SimplifyCondBranchToCondBranch()
4242 LLVM_DEBUG(dbgs() << "INTO: " << *PBI->getParent()); in SimplifyCondBranchToCondBranch()
4243 LLVM_DEBUG(dbgs() << *PBI->getParent()->getParent()); in SimplifyCondBranchToCondBranch()
6913 if (BranchInst *PBI = dyn_cast<BranchInst>(Pred->getTerminator())) in simplifyCondBranch() local
6914 if (PBI != BI && PBI->isConditional()) in simplifyCondBranch()
6915 if (SimplifyCondBranchToCondBranch(PBI, BI, DTU, DL, TTI)) in simplifyCondBranch()
6921 if (BranchInst *PBI = dyn_cast<BranchInst>(PrevBB->getTerminator())) in simplifyCondBranch() local
6922 if (PBI != BI && PBI->isConditional()) in simplifyCondBranch()
6923 if (mergeConditionalStores(PBI, BI, DTU, DL, TTI)) in simplifyCondBranch()