Lines Matching refs:SI
122 SelectInst *SI; member in __anonfb50cc300111::SelectInstToUnfold
126 SelectInstToUnfold(SelectInst *SI, PHINode *SIUse) : SI(SI), SIUse(SIUse) {} in SelectInstToUnfold() argument
128 SelectInst *getInst() { return SI; } in getInst()
131 explicit operator bool() const { return SI && SIUse; } in operator bool()
182 DomTreeUpdater *DTU, SelectInst *SI, PHINode *SIUse, SelectInst *SIToSink, in createBasicBlockAndSinkSelectInst() argument
189 *NewBlock = BasicBlock::Create(SI->getContext(), NewBBName, in createBasicBlockAndSinkSelectInst()
208 SelectInst *SI = SIToUnfold.getInst(); in unfold() local
210 BasicBlock *StartBlock = SI->getParent(); in unfold()
216 assert(SI->hasOneUse()); in unfold()
226 if (SelectInst *SIOp = dyn_cast<SelectInst>(SI->getTrueValue())) { in unfold()
227 createBasicBlockAndSinkSelectInst(DTU, SI, SIUse, SIOp, EndBlock, in unfold()
231 if (SelectInst *SIOp = dyn_cast<SelectInst>(SI->getFalseValue())) { in unfold()
232 createBasicBlockAndSinkSelectInst(DTU, SI, SIUse, SIOp, EndBlock, in unfold()
240 FalseBlock = BasicBlock::Create(SI->getContext(), "si.unfold.false", in unfold()
260 SIUse->addIncoming(SI->getTrueValue(), TrueBlock); in unfold()
261 SIUse->addIncoming(SI->getFalseValue(), FalseBlock); in unfold()
277 Value *SIOp1 = SI->getTrueValue(); in unfold()
278 Value *SIOp2 = SI->getFalseValue(); in unfold()
307 BranchInst::Create(TT, FT, SI->getCondition(), StartBlock); in unfold()
312 if (Loop *L = LI->getLoopFor(SI->getParent())) { in unfold()
318 assert(SI->use_empty() && "Select must be dead now"); in unfold()
319 SI->eraseFromParent(); in unfold()
395 MainSwitch(SwitchInst *SI, LoopInfo *LI, OptimizationRemarkEmitter *ORE) in MainSwitch()
397 if (isCandidate(SI)) { in MainSwitch()
398 Instr = SI; in MainSwitch()
401 return OptimizationRemarkMissed(DEBUG_TYPE, "SwitchNotPredictable", SI) in MainSwitch()
419 bool isCandidate(const SwitchInst *SI) { in isCandidate()
424 Value *SICond = SI->getCondition(); in isCandidate()
430 const Loop *L = LI->getLoopFor(SI->getParent()); in isCandidate()
492 bool isValidSelectInst(SelectInst *SI) { in isValidSelectInst()
493 if (!SI->hasOneUse()) in isValidSelectInst()
496 Instruction *SIUse = dyn_cast<Instruction>(SI->user_back()); in isValidSelectInst()
501 BasicBlock *SIBB = SI->getParent(); in isValidSelectInst()
511 if (PHIUser && PHIUser->getIncomingBlock(*SI->use_begin()) != SIBB) in isValidSelectInst()
518 if (PrevSI->getTrueValue() != SI && PrevSI->getFalseValue() != SI && in isValidSelectInst()
519 PrevSI->getParent() == SI->getParent()) in isValidSelectInst()
1305 auto *SI = dyn_cast<SwitchInst>(BB.getTerminator()); in run() local
1306 if (!SI) in run()
1311 MainSwitch Switch(SI, LI, ORE); in run()
1318 LLVM_DEBUG(SI->dump()); in run()