Lines Matching refs:ICmp

90     bool makeIVComparisonInvariant(ICmpInst *ICmp, Instruction *IVOperand);
91 void eliminateIVComparison(ICmpInst *ICmp, Instruction *IVOperand);
194 bool SimplifyIndvar::makeIVComparisonInvariant(ICmpInst *ICmp, in makeIVComparisonInvariant() argument
200 ICmpInst::Predicate Pred = ICmp->getPredicate(); in makeIVComparisonInvariant()
201 if (IVOperand != ICmp->getOperand(0)) { in makeIVComparisonInvariant()
203 assert(IVOperand == ICmp->getOperand(1) && "Can't find IVOperand"); in makeIVComparisonInvariant()
210 const Loop *ICmpLoop = LI->getLoopFor(ICmp->getParent()); in makeIVComparisonInvariant()
211 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
212 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
213 auto LIP = SE->getLoopInvariantPredicate(Pred, S, X, L, ICmp); in makeIVComparisonInvariant()
231 LLVM_DEBUG(dbgs() << "INDVARS: Simplified comparison: " << *ICmp << '\n'); in makeIVComparisonInvariant()
232 ICmp->setPredicate(InvariantPredicate); in makeIVComparisonInvariant()
233 ICmp->setOperand(0, NewLHS); in makeIVComparisonInvariant()
234 ICmp->setOperand(1, NewRHS); in makeIVComparisonInvariant()
240 void SimplifyIndvar::eliminateIVComparison(ICmpInst *ICmp, in eliminateIVComparison() argument
243 ICmpInst::Predicate Pred = ICmp->getPredicate(); in eliminateIVComparison()
245 if (IVOperand != ICmp->getOperand(0)) { in eliminateIVComparison()
247 assert(IVOperand == ICmp->getOperand(1) && "Can't find IVOperand"); in eliminateIVComparison()
254 const Loop *ICmpLoop = LI->getLoopFor(ICmp->getParent()); in eliminateIVComparison()
255 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in eliminateIVComparison()
256 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in eliminateIVComparison()
261 for (auto *U : ICmp->users()) in eliminateIVComparison()
265 SE->forgetValue(ICmp); in eliminateIVComparison()
266 ICmp->replaceAllUsesWith(ConstantInt::getBool(ICmp->getContext(), *Ev)); in eliminateIVComparison()
267 DeadInsts.emplace_back(ICmp); in eliminateIVComparison()
268 LLVM_DEBUG(dbgs() << "INDVARS: Eliminated comparison: " << *ICmp << '\n'); in eliminateIVComparison()
269 } else if (makeIVComparisonInvariant(ICmp, IVOperand)) { in eliminateIVComparison()
278 assert(ICmp->getPredicate() == OriginalPred && "Predicate changed?"); in eliminateIVComparison()
279 LLVM_DEBUG(dbgs() << "INDVARS: Turn to unsigned comparison: " << *ICmp in eliminateIVComparison()
281 ICmp->setPredicate(ICmpInst::getUnsignedPredicate(OriginalPred)); in eliminateIVComparison()
341 ICmpInst *ICmp = new ICmpInst(Rem, ICmpInst::ICMP_EQ, N, D); in replaceRemWithNumeratorOrZero() local
343 SelectInst::Create(ICmp, ConstantInt::get(T, 0), N, "iv.rem", Rem); in replaceRemWithNumeratorOrZero()
582 if (ICmpInst *ICmp = dyn_cast<ICmpInst>(UseInst)) { in eliminateIVUser() local
583 eliminateIVComparison(ICmp, IVOperand); in eliminateIVUser()
1603 if (auto *ICmp = dyn_cast<ICmpInst>(User)) { in widenWithVariantUse() local
1604 auto Pred = ICmp->getPredicate(); in widenWithVariantUse()
1613 ICmpUsers.push_back(ICmp); in widenWithVariantUse()