Lines Matching refs:Numerator
855 static void divide(ScalarEvolution &SE, const SCEV *Numerator, in divide()
858 assert(Numerator && Denominator && "Uninitialized SCEV"); in divide()
860 SCEVDivision D(SE, Numerator, Denominator); in divide()
864 if (Numerator == Denominator) { in divide()
870 if (Numerator->isZero()) { in divide()
878 *Quotient = Numerator; in divide()
886 *Quotient = Numerator; in divide()
895 *Remainder = Numerator; in divide()
903 D.visit(Numerator); in divide()
910 void visitTruncateExpr(const SCEVTruncateExpr *Numerator) {} in visitTruncateExpr()
911 void visitZeroExtendExpr(const SCEVZeroExtendExpr *Numerator) {} in visitZeroExtendExpr()
912 void visitSignExtendExpr(const SCEVSignExtendExpr *Numerator) {} in visitSignExtendExpr()
913 void visitUDivExpr(const SCEVUDivExpr *Numerator) {} in visitUDivExpr()
914 void visitSMaxExpr(const SCEVSMaxExpr *Numerator) {} in visitSMaxExpr()
915 void visitUMaxExpr(const SCEVUMaxExpr *Numerator) {} in visitUMaxExpr()
916 void visitUnknown(const SCEVUnknown *Numerator) {} in visitUnknown()
917 void visitCouldNotCompute(const SCEVCouldNotCompute *Numerator) {} in visitCouldNotCompute()
919 void visitConstant(const SCEVConstant *Numerator) { in visitConstant()
921 APInt NumeratorVal = Numerator->getAPInt(); in visitConstant()
940 void visitAddRecExpr(const SCEVAddRecExpr *Numerator) { in visitAddRecExpr()
942 if (!Numerator->isAffine()) in visitAddRecExpr()
943 return cannotDivide(Numerator); in visitAddRecExpr()
944 divide(SE, Numerator->getStart(), Denominator, &StartQ, &StartR); in visitAddRecExpr()
945 divide(SE, Numerator->getStepRecurrence(SE), Denominator, &StepQ, &StepR); in visitAddRecExpr()
950 return cannotDivide(Numerator); in visitAddRecExpr()
951 Quotient = SE.getAddRecExpr(StartQ, StepQ, Numerator->getLoop(), in visitAddRecExpr()
952 Numerator->getNoWrapFlags()); in visitAddRecExpr()
953 Remainder = SE.getAddRecExpr(StartR, StepR, Numerator->getLoop(), in visitAddRecExpr()
954 Numerator->getNoWrapFlags()); in visitAddRecExpr()
957 void visitAddExpr(const SCEVAddExpr *Numerator) { in visitAddExpr()
961 for (const SCEV *Op : Numerator->operands()) { in visitAddExpr()
967 return cannotDivide(Numerator); in visitAddExpr()
983 void visitMulExpr(const SCEVMulExpr *Numerator) { in visitMulExpr()
988 for (const SCEV *Op : Numerator->operands()) { in visitMulExpr()
991 return cannotDivide(Numerator); in visitMulExpr()
1008 return cannotDivide(Numerator); in visitMulExpr()
1024 return cannotDivide(Numerator); in visitMulExpr()
1030 Remainder = SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap, true); in visitMulExpr()
1037 SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap, true); in visitMulExpr()
1043 const SCEV *Diff = SE.getMinusSCEV(Numerator, Remainder); in visitMulExpr()
1045 if (sizeOfSCEV(Diff) > sizeOfSCEV(Numerator)) in visitMulExpr()
1046 return cannotDivide(Numerator); in visitMulExpr()
1049 return cannotDivide(Numerator); in visitMulExpr()
1054 SCEVDivision(ScalarEvolution &S, const SCEV *Numerator, in SCEVDivision()
1063 cannotDivide(Numerator); in SCEVDivision()
1068 void cannotDivide(const SCEV *Numerator) { in cannotDivide()
1070 Remainder = Numerator; in cannotDivide()
10243 auto *Numerator = getExistingSCEV(LL); in isImpliedViaOperations() local
10244 if (!Numerator || Numerator->getType() != FoundLHS->getType()) in isImpliedViaOperations()
10249 if (!HasSameValue(Numerator, FoundLHS) || !isKnownPositive(Denominator)) in isImpliedViaOperations()