Lines Matching defs:Numerator

695   // Computes the Quotient and Remainder of the division of Numerator by
697 static void divide(ScalarEvolution &SE, const SCEV *Numerator,
700 assert(Numerator && Denominator && "Uninitialized SCEV");
702 SCEVDivision D(SE, Numerator, Denominator);
706 if (Numerator == Denominator) {
712 if (Numerator->isZero()) {
720 *Quotient = Numerator;
728 *Quotient = Numerator;
733 // Bail out when the Numerator is not divisible by one of the terms of
737 *Remainder = Numerator;
745 D.visit(Numerator);
752 void visitTruncateExpr(const SCEVTruncateExpr *Numerator) {}
753 void visitZeroExtendExpr(const SCEVZeroExtendExpr *Numerator) {}
754 void visitSignExtendExpr(const SCEVSignExtendExpr *Numerator) {}
755 void visitUDivExpr(const SCEVUDivExpr *Numerator) {}
756 void visitSMaxExpr(const SCEVSMaxExpr *Numerator) {}
757 void visitUMaxExpr(const SCEVUMaxExpr *Numerator) {}
758 void visitUnknown(const SCEVUnknown *Numerator) {}
759 void visitCouldNotCompute(const SCEVCouldNotCompute *Numerator) {}
761 void visitConstant(const SCEVConstant *Numerator) {
763 APInt NumeratorVal = Numerator->getAPInt();
782 void visitAddRecExpr(const SCEVAddRecExpr *Numerator) {
784 if (!Numerator->isAffine())
785 return cannotDivide(Numerator);
786 divide(SE, Numerator->getStart(), Denominator, &StartQ, &StartR);
787 divide(SE, Numerator->getStepRecurrence(SE), Denominator, &StepQ, &StepR);
792 return cannotDivide(Numerator);
793 Quotient = SE.getAddRecExpr(StartQ, StepQ, Numerator->getLoop(),
794 Numerator->getNoWrapFlags());
795 Remainder = SE.getAddRecExpr(StartR, StepR, Numerator->getLoop(),
796 Numerator->getNoWrapFlags());
799 void visitAddExpr(const SCEVAddExpr *Numerator) {
803 for (const SCEV *Op : Numerator->operands()) {
809 return cannotDivide(Numerator);
825 void visitMulExpr(const SCEVMulExpr *Numerator) {
830 for (const SCEV *Op : Numerator->operands()) {
833 return cannotDivide(Numerator);
850 return cannotDivide(Numerator);
866 return cannotDivide(Numerator);
868 // The Remainder is obtained by replacing Denominator by 0 in Numerator.
872 Remainder = SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap, true);
875 // The Quotient is obtained by replacing Denominator by 1 in Numerator.
879 SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap, true);
883 // Quotient is (Numerator - Remainder) divided by Denominator.
885 const SCEV *Diff = SE.getMinusSCEV(Numerator, Remainder);
887 if (sizeOfSCEV(Diff) > sizeOfSCEV(Numerator))
888 return cannotDivide(Numerator);
891 return cannotDivide(Numerator);
896 SCEVDivision(ScalarEvolution &S, const SCEV *Numerator,
905 cannotDivide(Numerator);
910 void cannotDivide(const SCEV *Numerator) {
912 Remainder = Numerator;