Lines Matching refs:ICmp

98     bool makeIVComparisonInvariant(ICmpInst *ICmp, Instruction *IVOperand);
99 void eliminateIVComparison(ICmpInst *ICmp, Instruction *IVOperand);
202 bool SimplifyIndvar::makeIVComparisonInvariant(ICmpInst *ICmp, in makeIVComparisonInvariant() argument
208 ICmpInst::Predicate Pred = ICmp->getPredicate(); in makeIVComparisonInvariant()
209 if (IVOperand != ICmp->getOperand(0)) { in makeIVComparisonInvariant()
211 assert(IVOperand == ICmp->getOperand(1) && "Can't find IVOperand"); in makeIVComparisonInvariant()
218 const Loop *ICmpLoop = LI->getLoopFor(ICmp->getParent()); in makeIVComparisonInvariant()
219 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
220 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
221 auto LIP = SE->getLoopInvariantPredicate(Pred, S, X, L, ICmp); in makeIVComparisonInvariant()
239 LLVM_DEBUG(dbgs() << "INDVARS: Simplified comparison: " << *ICmp << '\n'); in makeIVComparisonInvariant()
240 ICmp->setPredicate(InvariantPredicate); in makeIVComparisonInvariant()
241 ICmp->setOperand(0, NewLHS); in makeIVComparisonInvariant()
242 ICmp->setOperand(1, NewRHS); in makeIVComparisonInvariant()
249 void SimplifyIndvar::eliminateIVComparison(ICmpInst *ICmp, in eliminateIVComparison() argument
252 ICmpInst::Predicate Pred = ICmp->getPredicate(); in eliminateIVComparison()
254 if (IVOperand != ICmp->getOperand(0)) { in eliminateIVComparison()
256 assert(IVOperand == ICmp->getOperand(1) && "Can't find IVOperand"); in eliminateIVComparison()
263 const Loop *ICmpLoop = LI->getLoopFor(ICmp->getParent()); in eliminateIVComparison()
264 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in eliminateIVComparison()
265 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in eliminateIVComparison()
270 for (auto *U : ICmp->users()) in eliminateIVComparison()
274 SE->forgetValue(ICmp); in eliminateIVComparison()
275 ICmp->replaceAllUsesWith(ConstantInt::getBool(ICmp->getContext(), *Ev)); in eliminateIVComparison()
276 DeadInsts.emplace_back(ICmp); in eliminateIVComparison()
277 LLVM_DEBUG(dbgs() << "INDVARS: Eliminated comparison: " << *ICmp << '\n'); in eliminateIVComparison()
278 } else if (makeIVComparisonInvariant(ICmp, IVOperand)) { in eliminateIVComparison()
287 assert(ICmp->getPredicate() == OriginalPred && "Predicate changed?"); in eliminateIVComparison()
288 LLVM_DEBUG(dbgs() << "INDVARS: Turn to unsigned comparison: " << *ICmp in eliminateIVComparison()
290 ICmp->setPredicate(ICmpInst::getUnsignedPredicate(OriginalPred)); in eliminateIVComparison()
352 ICmpInst *ICmp = new ICmpInst(Rem->getIterator(), ICmpInst::ICMP_EQ, N, D); in replaceRemWithNumeratorOrZero() local
354 SelectInst::Create(ICmp, ConstantInt::get(T, 0), N, "iv.rem", Rem->getIterator()); in replaceRemWithNumeratorOrZero()
596 if (ICmpInst *ICmp = dyn_cast<ICmpInst>(UseInst)) { in eliminateIVUser() local
597 eliminateIVComparison(ICmp, IVOperand); in eliminateIVUser()
1704 if (auto *ICmp = dyn_cast<ICmpInst>(User)) { in widenWithVariantUse() local
1705 auto Pred = ICmp->getPredicate(); in widenWithVariantUse()
1714 ICmpUsers.push_back(ICmp); in widenWithVariantUse()