Lines Matching refs:DivInst
78 AssertingVH<Instruction> DivInst; member
85 : DivInst(DivInst_), RemInst(RemInst_) { in DivRemPairWorklistEntry()
86 assert((DivInst->getOpcode() == Instruction::UDiv || in DivRemPairWorklistEntry()
87 DivInst->getOpcode() == Instruction::SDiv) && in DivRemPairWorklistEntry()
89 assert(DivInst->getType() == RemInst->getType() && "Types should match."); in DivRemPairWorklistEntry()
95 Type *getType() const { return DivInst->getType(); } in getType()
98 bool isSigned() const { return DivInst->getOpcode() == Instruction::SDiv; } in isSigned()
101 Value *getDividend() const { return DivInst->getOperand(0); } in getDividend()
102 Value *getDivisor() const { return DivInst->getOperand(1); } in getDivisor()
196 auto &DivInst = E.DivInst; in optimizeDivRem() local
233 if (HasDivRemOp && RemInst->getParent() == DivInst->getParent()) in optimizeDivRem()
236 bool DivDominates = DT.dominates(DivInst, RemInst); in optimizeDivRem()
237 if (!DivDominates && !DT.dominates(RemInst, DivInst)) { in optimizeDivRem()
242 BasicBlock *DivBB = DivInst->getParent(); in optimizeDivRem()
293 IsSafeToHoist(RemInst, RemBB) && IsSafeToHoist(DivInst, DivBB) && in optimizeDivRem()
299 DivInst->moveBefore(PredBB->getTerminator()); in optimizeDivRem()
318 RemInst->moveAfter(DivInst); in optimizeDivRem()
320 DivInst->moveAfter(RemInst); in optimizeDivRem()
334 Instruction *Mul = BinaryOperator::CreateMul(DivInst, Y); in optimizeDivRem()
368 DivInst->moveBefore(RemInst); in optimizeDivRem()
376 DivInst->dropPoisonGeneratingFlags(); in optimizeDivRem()
387 if (!isGuaranteedNotToBeUndef(X, nullptr, DivInst, &DT)) { in optimizeDivRem()
389 new FreezeInst(X, X->getName() + ".frozen", DivInst->getIterator()); in optimizeDivRem()
390 FrX->setDebugLoc(DivInst->getDebugLoc()); in optimizeDivRem()
391 DivInst->setOperand(0, FrX); in optimizeDivRem()
396 if (!isGuaranteedNotToBeUndef(Y, nullptr, DivInst, &DT)) { in optimizeDivRem()
398 new FreezeInst(Y, Y->getName() + ".frozen", DivInst->getIterator()); in optimizeDivRem()
399 FrY->setDebugLoc(DivInst->getDebugLoc()); in optimizeDivRem()
400 DivInst->setOperand(1, FrY); in optimizeDivRem()