Lines Matching refs:DivInst
80 AssertingVH<Instruction> DivInst; member
87 : DivInst(DivInst_), RemInst(RemInst_) { in DivRemPairWorklistEntry()
88 assert((DivInst->getOpcode() == Instruction::UDiv || in DivRemPairWorklistEntry()
89 DivInst->getOpcode() == Instruction::SDiv) && in DivRemPairWorklistEntry()
91 assert(DivInst->getType() == RemInst->getType() && "Types should match."); in DivRemPairWorklistEntry()
97 Type *getType() const { return DivInst->getType(); } in getType()
100 bool isSigned() const { return DivInst->getOpcode() == Instruction::SDiv; } in isSigned()
103 Value *getDividend() const { return DivInst->getOperand(0); } in getDividend()
104 Value *getDivisor() const { return DivInst->getOperand(1); } in getDivisor()
198 auto &DivInst = E.DivInst; in optimizeDivRem() local
234 if (HasDivRemOp && RemInst->getParent() == DivInst->getParent()) in optimizeDivRem()
237 bool DivDominates = DT.dominates(DivInst, RemInst); in optimizeDivRem()
238 if (!DivDominates && !DT.dominates(RemInst, DivInst)) { in optimizeDivRem()
243 BasicBlock *DivBB = DivInst->getParent(); in optimizeDivRem()
274 IsSafeToHoist(DivInst, DivBB) && in optimizeDivRem()
280 DivInst->moveBefore(PredBB->getTerminator()); in optimizeDivRem()
299 RemInst->moveAfter(DivInst); in optimizeDivRem()
301 DivInst->moveAfter(RemInst); in optimizeDivRem()
315 Instruction *Mul = BinaryOperator::CreateMul(DivInst, Y); in optimizeDivRem()
349 DivInst->moveBefore(RemInst); in optimizeDivRem()
363 if (!isGuaranteedNotToBeUndefOrPoison(X, nullptr, DivInst, &DT)) { in optimizeDivRem()
364 auto *FrX = new FreezeInst(X, X->getName() + ".frozen", DivInst); in optimizeDivRem()
365 DivInst->setOperand(0, FrX); in optimizeDivRem()
370 if (!isGuaranteedNotToBeUndefOrPoison(Y, nullptr, DivInst, &DT)) { in optimizeDivRem()
371 auto *FrY = new FreezeInst(Y, Y->getName() + ".frozen", DivInst); in optimizeDivRem()
372 DivInst->setOperand(1, FrY); in optimizeDivRem()