Lines Matching refs:SCEV
147 const SCEV *Begin = nullptr;
148 const SCEV *Step = nullptr;
149 const SCEV *End = nullptr;
154 const SCEV *&End);
164 const SCEV *&End);
168 const SCEVAddRecExpr *&Index, const SCEV *&End);
171 const SCEV *getBegin() const { return Begin; } in getBegin()
172 const SCEV *getStep() const { return Step; } in getStep()
173 const SCEV *getEnd() const { return End; } in getEnd()
199 const SCEV *Begin;
200 const SCEV *End;
203 Range(const SCEV *Begin, const SCEV *End) : Begin(Begin), End(End) { in Range()
208 const SCEV *getBegin() const { return Begin; } in getBegin()
209 const SCEV *getEnd() const { return End; } in getEnd()
273 const SCEV *&End) { in parseRangeCheckICmp()
308 const SCEV *&End) { in parseIvAgaisntLimit()
351 const SCEV *One = SE.getOne(RHS->getType()); in parseIvAgaisntLimit()
352 const SCEV *RHSS = SE.getSCEV(RHS); in parseIvAgaisntLimit()
369 ScalarEvolution &SE, const SCEVAddRecExpr *&Index, const SCEV *&End) { in reassociateSubLHS()
374 const SCEV *IV = SE.getSCEV(LHS); in reassociateSubLHS()
375 const SCEV *Offset = SE.getSCEV(RHS); in reassociateSubLHS()
376 const SCEV *Limit = SE.getSCEV(InvariantRHS); in reassociateSubLHS()
431 const SCEV *LHS, in reassociateSubLHS()
432 const SCEV *RHS) -> const SCEV * { in reassociateSubLHS()
433 const SCEV *(ScalarEvolution::*Operation)(const SCEV *, const SCEV *, in reassociateSubLHS()
434 SCEV::NoWrapFlags, unsigned); in reassociateSubLHS()
448 return (SE.*Operation)(LHS, RHS, SCEV::FlagAnyWrap, 0); in reassociateSubLHS()
458 SE.getSignExtendExpr(RHS, WideTy), SCEV::FlagAnyWrap, in reassociateSubLHS()
506 const SCEV *End = nullptr; in extractRangeChecksFromCond()
557 static const SCEV *NoopOrExtend(const SCEV *S, Type *Ty, ScalarEvolution &SE, in NoopOrExtend()
582 const SCEV *Start = NoopOrExtend(SE.getSCEV(MainLoopStructure.IndVarStart), in calculateSubRanges()
584 const SCEV *End = NoopOrExtend(SE.getSCEV(MainLoopStructure.LoopExitAt), RTy, in calculateSubRanges()
593 const SCEV *Smallest = nullptr, *Greatest = nullptr, *GreatestSeen = nullptr; in calculateSubRanges()
595 const SCEV *One = SE.getOne(RTy); in calculateSubRanges()
622 auto Clamp = [&SE, Smallest, Greatest, IsSignedPredicate](const SCEV *S) { in calculateSubRanges()
688 const SCEV *A = NoopOrExtend(IndVar->getStart(), RCType, SE, IsLatchSigned); in computeSafeIterationSpace()
695 const SCEV *C = getBegin(); in computeSafeIterationSpace()
702 const SCEV *SIntMax = SE.getConstant(APInt::getSignedMaxValue(BitWidth)); in computeSafeIterationSpace()
703 const SCEV *SIntMin = SE.getConstant(APInt::getSignedMinValue(BitWidth)); in computeSafeIterationSpace()
717 auto ClampedSubtract = [&](const SCEV *X, const SCEV *Y) { in computeSafeIterationSpace()
733 const SCEV *XMinusSIntMax = SE.getMinusSCEV(X, SIntMax); in computeSafeIterationSpace()
735 SCEV::FlagNSW); in computeSafeIterationSpace()
747 return SE.getMinusSCEV(X, SE.getSMinExpr(X, Y), SCEV::FlagNUW); in computeSafeIterationSpace()
749 const SCEV *M = SE.getMinusSCEV(C, A); in computeSafeIterationSpace()
750 const SCEV *Zero = SE.getZero(M->getType()); in computeSafeIterationSpace()
753 auto SCEVCheckNonNegative = [&](const SCEV *X) { in computeSafeIterationSpace()
755 const SCEV *Zero = SE.getZero(X->getType()); in computeSafeIterationSpace()
756 const SCEV *One = SE.getOne(X->getType()); in computeSafeIterationSpace()
764 const SCEV *NegOne = SE.getNegativeSCEV(One); in computeSafeIterationSpace()
770 auto SCEVCheckWillNotOverflow = [&](const SCEV *X) { in computeSafeIterationSpace()
773 const SCEV *SIntMaxExt = SE.getSignExtendExpr(SIntMax, X->getType()); in computeSafeIterationSpace()
774 const SCEV *OverflowCheck = in computeSafeIterationSpace()
779 const SCEV *SIntMinExt = SE.getSignExtendExpr(SIntMin, X->getType()); in computeSafeIterationSpace()
780 const SCEV *UnderflowCheck = in computeSafeIterationSpace()
794 const SCEV *REnd = getEnd(); in computeSafeIterationSpace()
795 const SCEV *EndWillNotOverflow = SE.getOne(RCType); in computeSafeIterationSpace()
819 const SCEV *RuntimeChecks = in computeSafeIterationSpace()
821 const SCEV *Begin = SE.getMulExpr(ClampedSubtract(Zero, M), RuntimeChecks); in computeSafeIterationSpace()
822 const SCEV *End = SE.getMulExpr(ClampedSubtract(REnd, M), RuntimeChecks); in computeSafeIterationSpace()
846 const SCEV *NewBegin = SE.getSMaxExpr(R1Value.getBegin(), R2.getBegin()); in IntersectSignedRange()
847 const SCEV *NewEnd = SE.getSMinExpr(R1Value.getEnd(), R2.getEnd()); in IntersectSignedRange()
875 const SCEV *NewBegin = SE.getUMaxExpr(R1Value.getBegin(), R2.getBegin()); in IntersectUnsignedRange()
876 const SCEV *NewEnd = SE.getUMinExpr(R1Value.getEnd(), R2.getEnd()); in IntersectUnsignedRange()