Lines Matching refs:SCEV

143   const SCEV *Begin = nullptr;
144 const SCEV *Step = nullptr;
145 const SCEV *End = nullptr;
158 const SCEV *getBegin() const { return Begin; } in getBegin()
159 const SCEV *getStep() const { return Step; } in getStep()
160 const SCEV *getEnd() const { return End; } in getEnd()
186 const SCEV *Begin;
187 const SCEV *End;
190 Range(const SCEV *Begin, const SCEV *End) : Begin(Begin), End(End) { in Range()
195 const SCEV *getBegin() const { return Begin; } in getBegin()
196 const SCEV *getEnd() const { return End; } in getEnd()
385 const SCEV *End = nullptr; in extractRangeChecksFromCond()
395 const SCEV *SIntMax = SE.getConstant(APInt::getSignedMaxValue(BitWidth)); in extractRangeChecksFromCond()
550 Optional<const SCEV *> LowLimit;
551 Optional<const SCEV *> HighLimit;
626 const SCEV *LatchTakenCount = nullptr;
657 static bool isSafeDecreasingBound(const SCEV *Start, in isSafeDecreasingBound()
658 const SCEV *BoundSCEV, const SCEV *Step, in isSafeDecreasingBound()
691 const SCEV *StepPlusOne = SE.getAddExpr(Step, SE.getOne(Step->getType())); in isSafeDecreasingBound()
695 const SCEV *Limit = SE.getMinusSCEV(SE.getConstant(Min), StepPlusOne); in isSafeDecreasingBound()
697 const SCEV *MinusOne = in isSafeDecreasingBound()
707 static bool isSafeIncreasingBound(const SCEV *Start, in isSafeIncreasingBound()
708 const SCEV *BoundSCEV, const SCEV *Step, in isSafeIncreasingBound()
738 const SCEV *StepMinusOne = in isSafeIncreasingBound()
743 const SCEV *Limit = SE.getMinusSCEV(SE.getConstant(Max), StepMinusOne); in isSafeIncreasingBound()
792 const SCEV *LatchCount = SE.getExitCount(&L, Latch); in parseLoopStructure()
800 const SCEV *LeftSCEV = SE.getSCEV(LeftValue); in parseLoopStructure()
804 const SCEV *RightSCEV = SE.getSCEV(RightValue); in parseLoopStructure()
819 if (AR->getNoWrapFlags(SCEV::FlagNSW)) in parseLoopStructure()
829 const SCEV *ExtendedStart = SE.getSignExtendExpr(AR->getStart(), WideTy); in parseLoopStructure()
830 const SCEV *ExtendedStep = in parseLoopStructure()
841 return AR->getNoWrapFlags(SCEV::FlagNSW) != SCEV::FlagAnyWrap; in parseLoopStructure()
852 const SCEV* StepRec = IndVarBase->getStepRecurrence(SE); in parseLoopStructure()
867 const SCEV *StartNext = IndVarBase->getStart(); in parseLoopStructure()
868 const SCEV *Addend = SE.getNegativeSCEV(IndVarBase->getStepRecurrence(SE)); in parseLoopStructure()
869 const SCEV *IndVarStart = SE.getAddExpr(StartNext, Addend); in parseLoopStructure()
870 const SCEV *Step = SE.getSCEV(StepCI); in parseLoopStructure()
872 const SCEV *FixedRightSCEV = nullptr; in parseLoopStructure()
902 if (IndVarBase->getNoWrapFlags(SCEV::FlagNUW) && in parseLoopStructure()
966 if (IndVarBase->getNoWrapFlags(SCEV::FlagNUW) && in parseLoopStructure()
1055 static const SCEV *NoopOrExtend(const SCEV *S, Type *Ty, ScalarEvolution &SE, in NoopOrExtend()
1077 const SCEV *Start = NoopOrExtend(SE.getSCEV(MainLoopStructure.IndVarStart), in calculateSubRanges()
1079 const SCEV *End = NoopOrExtend(SE.getSCEV(MainLoopStructure.LoopExitAt), RTy, in calculateSubRanges()
1088 const SCEV *Smallest = nullptr, *Greatest = nullptr, *GreatestSeen = nullptr; in calculateSubRanges()
1090 const SCEV *One = SE.getOne(RTy); in calculateSubRanges()
1117 auto Clamp = [this, Smallest, Greatest, IsSignedPredicate](const SCEV *S) { in calculateSubRanges()
1440 const SCEV *ExitPreLoopAtSCEV = nullptr; in run()
1467 const SCEV *ExitMainLoopAtSCEV = nullptr; in run()
1612 const SCEV *A = NoopOrExtend(IndVar->getStart(), RCType, SE, IsLatchSigned); in computeSafeIterationSpace()
1619 const SCEV *C = getBegin(); in computeSafeIterationSpace()
1626 const SCEV *SIntMax = SE.getConstant(APInt::getSignedMaxValue(BitWidth)); in computeSafeIterationSpace()
1640 auto ClampedSubtract = [&](const SCEV *X, const SCEV *Y) { in computeSafeIterationSpace()
1656 const SCEV *XMinusSIntMax = SE.getMinusSCEV(X, SIntMax); in computeSafeIterationSpace()
1658 SCEV::FlagNSW); in computeSafeIterationSpace()
1670 return SE.getMinusSCEV(X, SE.getSMinExpr(X, Y), SCEV::FlagNUW); in computeSafeIterationSpace()
1672 const SCEV *M = SE.getMinusSCEV(C, A); in computeSafeIterationSpace()
1673 const SCEV *Zero = SE.getZero(M->getType()); in computeSafeIterationSpace()
1676 auto SCEVCheckNonNegative = [&](const SCEV *X) { in computeSafeIterationSpace()
1678 const SCEV *One = SE.getOne(X->getType()); in computeSafeIterationSpace()
1686 const SCEV *NegOne = SE.getNegativeSCEV(One); in computeSafeIterationSpace()
1697 const SCEV *REnd = getEnd(); in computeSafeIterationSpace()
1698 const SCEV *EndIsNonNegative = SCEVCheckNonNegative(REnd); in computeSafeIterationSpace()
1700 const SCEV *Begin = SE.getMulExpr(ClampedSubtract(Zero, M), EndIsNonNegative); in computeSafeIterationSpace()
1701 const SCEV *End = SE.getMulExpr(ClampedSubtract(REnd, M), EndIsNonNegative); in computeSafeIterationSpace()
1724 const SCEV *NewBegin = SE.getSMaxExpr(R1Value.getBegin(), R2.getBegin()); in IntersectSignedRange()
1725 const SCEV *NewEnd = SE.getSMinExpr(R1Value.getEnd(), R2.getEnd()); in IntersectSignedRange()
1753 const SCEV *NewBegin = SE.getUMaxExpr(R1Value.getBegin(), R2.getBegin()); in IntersectUnsignedRange()
1754 const SCEV *NewEnd = SE.getUMinExpr(R1Value.getEnd(), R2.getEnd()); in IntersectUnsignedRange()