Lines Matching refs:Numerator

55 void SCEVDivision::divide(ScalarEvolution &SE, const SCEV *Numerator,  in divide()  argument
58 assert(Numerator && Denominator && "Uninitialized SCEV"); in divide()
60 SCEVDivision D(SE, Numerator, Denominator); in divide()
64 if (Numerator == Denominator) { in divide()
70 if (Numerator->isZero()) { in divide()
78 *Quotient = Numerator; in divide()
86 *Quotient = Numerator; in divide()
95 *Remainder = Numerator; in divide()
103 D.visit(Numerator); in divide()
108 void SCEVDivision::visitConstant(const SCEVConstant *Numerator) { in visitConstant() argument
110 APInt NumeratorVal = Numerator->getAPInt(); in visitConstant()
129 void SCEVDivision::visitVScale(const SCEVVScale *Numerator) { in visitVScale() argument
130 return cannotDivide(Numerator); in visitVScale()
133 void SCEVDivision::visitAddRecExpr(const SCEVAddRecExpr *Numerator) { in visitAddRecExpr() argument
135 if (!Numerator->isAffine()) in visitAddRecExpr()
136 return cannotDivide(Numerator); in visitAddRecExpr()
137 divide(SE, Numerator->getStart(), Denominator, &StartQ, &StartR); in visitAddRecExpr()
138 divide(SE, Numerator->getStepRecurrence(SE), Denominator, &StepQ, &StepR); in visitAddRecExpr()
143 return cannotDivide(Numerator); in visitAddRecExpr()
144 Quotient = SE.getAddRecExpr(StartQ, StepQ, Numerator->getLoop(), in visitAddRecExpr()
145 Numerator->getNoWrapFlags()); in visitAddRecExpr()
146 Remainder = SE.getAddRecExpr(StartR, StepR, Numerator->getLoop(), in visitAddRecExpr()
147 Numerator->getNoWrapFlags()); in visitAddRecExpr()
150 void SCEVDivision::visitAddExpr(const SCEVAddExpr *Numerator) { in visitAddExpr() argument
154 for (const SCEV *Op : Numerator->operands()) { in visitAddExpr()
160 return cannotDivide(Numerator); in visitAddExpr()
176 void SCEVDivision::visitMulExpr(const SCEVMulExpr *Numerator) { in visitMulExpr() argument
181 for (const SCEV *Op : Numerator->operands()) { in visitMulExpr()
184 return cannotDivide(Numerator); in visitMulExpr()
201 return cannotDivide(Numerator); in visitMulExpr()
217 return cannotDivide(Numerator); in visitMulExpr()
222 Remainder = SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap); in visitMulExpr()
227 Quotient = SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap); in visitMulExpr()
233 const SCEV *Diff = SE.getMinusSCEV(Numerator, Remainder); in visitMulExpr()
235 if (sizeOfSCEV(Diff) > sizeOfSCEV(Numerator)) in visitMulExpr()
236 return cannotDivide(Numerator); in visitMulExpr()
239 return cannotDivide(Numerator); in visitMulExpr()
243 SCEVDivision::SCEVDivision(ScalarEvolution &S, const SCEV *Numerator, in SCEVDivision() argument
251 cannotDivide(Numerator); in SCEVDivision()
256 void SCEVDivision::cannotDivide(const SCEV *Numerator) { in cannotDivide() argument
258 Remainder = Numerator; in cannotDivide()