Lines Matching refs:Rem
100 void simplifyIVRemainder(BinaryOperator *Rem, Instruction *IVOperand,
102 void replaceRemWithNumerator(BinaryOperator *Rem);
103 void replaceRemWithNumeratorOrZero(BinaryOperator *Rem);
104 void replaceSRemWithURem(BinaryOperator *Rem);
327 void SimplifyIndvar::replaceSRemWithURem(BinaryOperator *Rem) { in replaceSRemWithURem() argument
328 auto *N = Rem->getOperand(0), *D = Rem->getOperand(1); in replaceSRemWithURem()
330 Rem->getName() + ".urem", Rem->getIterator()); in replaceSRemWithURem()
331 Rem->replaceAllUsesWith(URem); in replaceSRemWithURem()
332 URem->setDebugLoc(Rem->getDebugLoc()); in replaceSRemWithURem()
333 LLVM_DEBUG(dbgs() << "INDVARS: Simplified srem: " << *Rem << '\n'); in replaceSRemWithURem()
336 DeadInsts.emplace_back(Rem); in replaceSRemWithURem()
340 void SimplifyIndvar::replaceRemWithNumerator(BinaryOperator *Rem) { in replaceRemWithNumerator() argument
341 Rem->replaceAllUsesWith(Rem->getOperand(0)); in replaceRemWithNumerator()
342 LLVM_DEBUG(dbgs() << "INDVARS: Simplified rem: " << *Rem << '\n'); in replaceRemWithNumerator()
345 DeadInsts.emplace_back(Rem); in replaceRemWithNumerator()
349 void SimplifyIndvar::replaceRemWithNumeratorOrZero(BinaryOperator *Rem) { in replaceRemWithNumeratorOrZero() argument
350 auto *T = Rem->getType(); in replaceRemWithNumeratorOrZero()
351 auto *N = Rem->getOperand(0), *D = Rem->getOperand(1); in replaceRemWithNumeratorOrZero()
352 ICmpInst *ICmp = new ICmpInst(Rem->getIterator(), ICmpInst::ICMP_EQ, N, D); in replaceRemWithNumeratorOrZero()
354 SelectInst::Create(ICmp, ConstantInt::get(T, 0), N, "iv.rem", Rem->getIterator()); in replaceRemWithNumeratorOrZero()
355 Rem->replaceAllUsesWith(Sel); in replaceRemWithNumeratorOrZero()
356 Sel->setDebugLoc(Rem->getDebugLoc()); in replaceRemWithNumeratorOrZero()
357 LLVM_DEBUG(dbgs() << "INDVARS: Simplified rem: " << *Rem << '\n'); in replaceRemWithNumeratorOrZero()
360 DeadInsts.emplace_back(Rem); in replaceRemWithNumeratorOrZero()
365 void SimplifyIndvar::simplifyIVRemainder(BinaryOperator *Rem, in simplifyIVRemainder() argument
368 auto *NValue = Rem->getOperand(0); in simplifyIVRemainder()
369 auto *DValue = Rem->getOperand(1); in simplifyIVRemainder()
380 const Loop *ICmpLoop = LI->getLoopFor(Rem->getParent()); in simplifyIVRemainder()
395 replaceRemWithNumerator(Rem); in simplifyIVRemainder()
399 auto *T = Rem->getType(); in simplifyIVRemainder()
402 replaceRemWithNumeratorOrZero(Rem); in simplifyIVRemainder()
412 replaceSRemWithURem(Rem); in simplifyIVRemainder()