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