Lines Matching refs:Rem
90 void simplifyIVRemainder(BinaryOperator *Rem, Instruction *IVOperand,
92 void replaceRemWithNumerator(BinaryOperator *Rem);
93 void replaceRemWithNumeratorOrZero(BinaryOperator *Rem);
94 void replaceSRemWithURem(BinaryOperator *Rem);
342 void SimplifyIndvar::replaceSRemWithURem(BinaryOperator *Rem) { in replaceSRemWithURem() argument
343 auto *N = Rem->getOperand(0), *D = Rem->getOperand(1); in replaceSRemWithURem()
345 Rem->getName() + ".urem", Rem); in replaceSRemWithURem()
346 Rem->replaceAllUsesWith(URem); in replaceSRemWithURem()
347 LLVM_DEBUG(dbgs() << "INDVARS: Simplified srem: " << *Rem << '\n'); in replaceSRemWithURem()
350 DeadInsts.emplace_back(Rem); in replaceSRemWithURem()
354 void SimplifyIndvar::replaceRemWithNumerator(BinaryOperator *Rem) { in replaceRemWithNumerator() argument
355 Rem->replaceAllUsesWith(Rem->getOperand(0)); in replaceRemWithNumerator()
356 LLVM_DEBUG(dbgs() << "INDVARS: Simplified rem: " << *Rem << '\n'); in replaceRemWithNumerator()
359 DeadInsts.emplace_back(Rem); in replaceRemWithNumerator()
363 void SimplifyIndvar::replaceRemWithNumeratorOrZero(BinaryOperator *Rem) { in replaceRemWithNumeratorOrZero() argument
364 auto *T = Rem->getType(); in replaceRemWithNumeratorOrZero()
365 auto *N = Rem->getOperand(0), *D = Rem->getOperand(1); in replaceRemWithNumeratorOrZero()
366 ICmpInst *ICmp = new ICmpInst(Rem, ICmpInst::ICMP_EQ, N, D); in replaceRemWithNumeratorOrZero()
368 SelectInst::Create(ICmp, ConstantInt::get(T, 0), N, "iv.rem", Rem); in replaceRemWithNumeratorOrZero()
369 Rem->replaceAllUsesWith(Sel); in replaceRemWithNumeratorOrZero()
370 LLVM_DEBUG(dbgs() << "INDVARS: Simplified rem: " << *Rem << '\n'); in replaceRemWithNumeratorOrZero()
373 DeadInsts.emplace_back(Rem); in replaceRemWithNumeratorOrZero()
378 void SimplifyIndvar::simplifyIVRemainder(BinaryOperator *Rem, in simplifyIVRemainder() argument
381 auto *NValue = Rem->getOperand(0); in simplifyIVRemainder()
382 auto *DValue = Rem->getOperand(1); in simplifyIVRemainder()
393 const Loop *ICmpLoop = LI->getLoopFor(Rem->getParent()); in simplifyIVRemainder()
408 replaceRemWithNumerator(Rem); in simplifyIVRemainder()
412 auto *T = Rem->getType(); in simplifyIVRemainder()
415 replaceRemWithNumeratorOrZero(Rem); in simplifyIVRemainder()
425 replaceSRemWithURem(Rem); in simplifyIVRemainder()