Lines Matching refs:Rem
92 void simplifyIVRemainder(BinaryOperator *Rem, Instruction *IVOperand,
94 void replaceRemWithNumerator(BinaryOperator *Rem);
95 void replaceRemWithNumeratorOrZero(BinaryOperator *Rem);
96 void replaceSRemWithURem(BinaryOperator *Rem);
317 void SimplifyIndvar::replaceSRemWithURem(BinaryOperator *Rem) { in replaceSRemWithURem() argument
318 auto *N = Rem->getOperand(0), *D = Rem->getOperand(1); in replaceSRemWithURem()
320 Rem->getName() + ".urem", Rem); in replaceSRemWithURem()
321 Rem->replaceAllUsesWith(URem); in replaceSRemWithURem()
322 LLVM_DEBUG(dbgs() << "INDVARS: Simplified srem: " << *Rem << '\n'); in replaceSRemWithURem()
325 DeadInsts.emplace_back(Rem); in replaceSRemWithURem()
329 void SimplifyIndvar::replaceRemWithNumerator(BinaryOperator *Rem) { in replaceRemWithNumerator() argument
330 Rem->replaceAllUsesWith(Rem->getOperand(0)); in replaceRemWithNumerator()
331 LLVM_DEBUG(dbgs() << "INDVARS: Simplified rem: " << *Rem << '\n'); in replaceRemWithNumerator()
334 DeadInsts.emplace_back(Rem); in replaceRemWithNumerator()
338 void SimplifyIndvar::replaceRemWithNumeratorOrZero(BinaryOperator *Rem) { in replaceRemWithNumeratorOrZero() argument
339 auto *T = Rem->getType(); in replaceRemWithNumeratorOrZero()
340 auto *N = Rem->getOperand(0), *D = Rem->getOperand(1); in replaceRemWithNumeratorOrZero()
341 ICmpInst *ICmp = new ICmpInst(Rem, ICmpInst::ICMP_EQ, N, D); in replaceRemWithNumeratorOrZero()
343 SelectInst::Create(ICmp, ConstantInt::get(T, 0), N, "iv.rem", Rem); in replaceRemWithNumeratorOrZero()
344 Rem->replaceAllUsesWith(Sel); in replaceRemWithNumeratorOrZero()
345 LLVM_DEBUG(dbgs() << "INDVARS: Simplified rem: " << *Rem << '\n'); in replaceRemWithNumeratorOrZero()
348 DeadInsts.emplace_back(Rem); in replaceRemWithNumeratorOrZero()
353 void SimplifyIndvar::simplifyIVRemainder(BinaryOperator *Rem, in simplifyIVRemainder() argument
356 auto *NValue = Rem->getOperand(0); in simplifyIVRemainder()
357 auto *DValue = Rem->getOperand(1); in simplifyIVRemainder()
368 const Loop *ICmpLoop = LI->getLoopFor(Rem->getParent()); in simplifyIVRemainder()
383 replaceRemWithNumerator(Rem); in simplifyIVRemainder()
387 auto *T = Rem->getType(); in simplifyIVRemainder()
390 replaceRemWithNumeratorOrZero(Rem); in simplifyIVRemainder()
400 replaceSRemWithURem(Rem); in simplifyIVRemainder()