Lines Matching refs:SI

116   SelectInst *SI;  member in __anon320b88660111::SelectInstToUnfold
120 SelectInstToUnfold(SelectInst *SI, PHINode *SIUse) : SI(SI), SIUse(SIUse) {} in SelectInstToUnfold() argument
122 SelectInst *getInst() { return SI; } in getInst()
125 explicit operator bool() const { return SI && SIUse; } in operator bool()
174 DomTreeUpdater *DTU, SelectInst *SI, PHINode *SIUse, SelectInst *SIToSink, in createBasicBlockAndSinkSelectInst() argument
181 *NewBlock = BasicBlock::Create(SI->getContext(), NewBBName, in createBasicBlockAndSinkSelectInst()
200 SelectInst *SI = SIToUnfold.getInst(); in unfold() local
202 BasicBlock *StartBlock = SI->getParent(); in unfold()
208 assert(SI->hasOneUse()); in unfold()
218 if (SelectInst *SIOp = dyn_cast<SelectInst>(SI->getTrueValue())) { in unfold()
219 createBasicBlockAndSinkSelectInst(DTU, SI, SIUse, SIOp, EndBlock, in unfold()
223 if (SelectInst *SIOp = dyn_cast<SelectInst>(SI->getFalseValue())) { in unfold()
224 createBasicBlockAndSinkSelectInst(DTU, SI, SIUse, SIOp, EndBlock, in unfold()
232 FalseBlock = BasicBlock::Create(SI->getContext(), "si.unfold.false", in unfold()
252 SIUse->addIncoming(SI->getTrueValue(), TrueBlock); in unfold()
253 SIUse->addIncoming(SI->getFalseValue(), FalseBlock); in unfold()
269 Value *SIOp1 = SI->getTrueValue(); in unfold()
270 Value *SIOp2 = SI->getFalseValue(); in unfold()
299 BranchInst::Create(TT, FT, SI->getCondition(), StartBlock); in unfold()
304 assert(SI->use_empty() && "Select must be dead now"); in unfold()
305 SI->eraseFromParent(); in unfold()
381 MainSwitch(SwitchInst *SI, OptimizationRemarkEmitter *ORE) { in MainSwitch()
382 if (isCandidate(SI)) { in MainSwitch()
383 Instr = SI; in MainSwitch()
386 return OptimizationRemarkMissed(DEBUG_TYPE, "SwitchNotPredictable", SI) in MainSwitch()
404 bool isCandidate(const SwitchInst *SI) { in isCandidate()
409 Value *SICond = SI->getCondition(); in isCandidate()
457 bool isValidSelectInst(SelectInst *SI) { in isValidSelectInst()
458 if (!SI->hasOneUse()) in isValidSelectInst()
461 Instruction *SIUse = dyn_cast<Instruction>(SI->user_back()); in isValidSelectInst()
466 BasicBlock *SIBB = SI->getParent(); in isValidSelectInst()
476 if (PHIUser && PHIUser->getIncomingBlock(*SI->use_begin()) != SIBB) in isValidSelectInst()
483 if (PrevSI->getTrueValue() != SI && PrevSI->getFalseValue() != SI && in isValidSelectInst()
484 PrevSI->getParent() == SI->getParent()) in isValidSelectInst()
1259 auto *SI = dyn_cast<SwitchInst>(BB.getTerminator()); in run() local
1260 if (!SI) in run()
1265 MainSwitch Switch(SI, ORE); in run()
1272 LLVM_DEBUG(SI->dump()); in run()