Lines Matching refs:Step
1284 static const SCEV *getSignedOverflowLimitForStep(const SCEV *Step, in getSignedOverflowLimitForStep() argument
1287 unsigned BitWidth = SE->getTypeSizeInBits(Step->getType()); in getSignedOverflowLimitForStep()
1288 if (SE->isKnownPositive(Step)) { in getSignedOverflowLimitForStep()
1291 SE->getSignedRangeMax(Step)); in getSignedOverflowLimitForStep()
1293 if (SE->isKnownNegative(Step)) { in getSignedOverflowLimitForStep()
1296 SE->getSignedRangeMin(Step)); in getSignedOverflowLimitForStep()
1304 static const SCEV *getUnsignedOverflowLimitForStep(const SCEV *Step, in getUnsignedOverflowLimitForStep() argument
1307 unsigned BitWidth = SE->getTypeSizeInBits(Step->getType()); in getUnsignedOverflowLimitForStep()
1311 SE->getUnsignedRangeMax(Step)); in getUnsignedOverflowLimitForStep()
1340 static const SCEV *getOverflowLimitForStep(const SCEV *Step, in getOverflowLimitForStep()
1343 return getSignedOverflowLimitForStep(Step, Pred, SE); in getOverflowLimitForStep()
1356 static const SCEV *getOverflowLimitForStep(const SCEV *Step, in getOverflowLimitForStep()
1359 return getUnsignedOverflowLimitForStep(Step, Pred, SE); in getOverflowLimitForStep()
1383 const SCEV *Step = AR->getStepRecurrence(*SE); in getPreStartForExtend() local
1395 if (Op != Step) in getPreStartForExtend()
1409 SE->getAddRecExpr(PreStart, Step, L, SCEV::FlagAnyWrap)); in getPreStartForExtend()
1425 (SE->*GetExtendExpr)(Step, WideTy, Depth)); in getPreStartForExtend()
1439 ExtendOpTraits<ExtendOpTy>::getOverflowLimitForStep(Step, &Pred, SE); in getPreStartForExtend()
1498 const SCEV *Step, in proveNoWrapByVaryingStart() argument
1518 ID.AddPointer(Step); in proveNoWrapByVaryingStart()
1567 const SCEV *Step) { in extractConstantWithoutWrapping() argument
1569 const uint32_t TZ = SE.GetMinTrailingZeros(Step); in extractConstantWithoutWrapping()
1630 const SCEV *Step = AR->getStepRecurrence(*this); in getZeroExtendExpr() local
1644 getZeroExtendExpr(Step, Ty, Depth + 1), L, AR->getNoWrapFlags()); in getZeroExtendExpr()
1667 const SCEV *ZMul = getMulExpr(CastedMaxBECount, Step, in getZeroExtendExpr()
1679 getZeroExtendExpr(Step, WideTy, Depth + 1), in getZeroExtendExpr()
1689 getZeroExtendExpr(Step, Ty, Depth + 1), L, in getZeroExtendExpr()
1697 getSignExtendExpr(Step, WideTy, Depth + 1), in getZeroExtendExpr()
1708 getSignExtendExpr(Step, Ty, Depth + 1), L, in getZeroExtendExpr()
1734 getZeroExtendExpr(Step, Ty, Depth + 1), L, in getZeroExtendExpr()
1740 if (isKnownNegative(Step)) { in getZeroExtendExpr()
1742 getSignedRangeMin(Step)); in getZeroExtendExpr()
1753 getSignExtendExpr(Step, Ty, Depth + 1), L, in getZeroExtendExpr()
1764 const APInt &D = extractConstantWithoutWrapping(*this, C, Step); in getZeroExtendExpr()
1768 getAddRecExpr(getConstant(C - D), Step, L, AR->getNoWrapFlags()); in getZeroExtendExpr()
1776 if (proveNoWrapByVaryingStart<SCEVZeroExtendExpr>(Start, Step, L)) { in getZeroExtendExpr()
1780 getZeroExtendExpr(Step, Ty, Depth + 1), L, AR->getNoWrapFlags()); in getZeroExtendExpr()
1971 const SCEV *Step = AR->getStepRecurrence(*this); in getSignExtendExpr() local
1985 getSignExtendExpr(Step, Ty, Depth + 1), L, SCEV::FlagNSW); in getSignExtendExpr()
2009 const SCEV *SMul = getMulExpr(CastedMaxBECount, Step, in getSignExtendExpr()
2021 getSignExtendExpr(Step, WideTy, Depth + 1), in getSignExtendExpr()
2031 getSignExtendExpr(Step, Ty, Depth + 1), L, in getSignExtendExpr()
2039 getZeroExtendExpr(Step, WideTy, Depth + 1), in getSignExtendExpr()
2057 getZeroExtendExpr(Step, Ty, Depth + 1), L, in getSignExtendExpr()
2072 getSignExtendExpr(Step, Ty, Depth + 1), L, AR->getNoWrapFlags()); in getSignExtendExpr()
2080 const APInt &D = extractConstantWithoutWrapping(*this, C, Step); in getSignExtendExpr()
2084 getAddRecExpr(getConstant(C - D), Step, L, AR->getNoWrapFlags()); in getSignExtendExpr()
2092 if (proveNoWrapByVaryingStart<SCEVSignExtendExpr>(Start, Step, L)) { in getSignExtendExpr()
2096 getSignExtendExpr(Step, Ty, Depth + 1), L, AR->getNoWrapFlags()); in getSignExtendExpr()
3305 if (const SCEVConstant *Step = in getUDivExpr() local
3308 const APInt &StepInt = Step->getAPInt(); in getUDivExpr()
3313 getZeroExtendExpr(Step, ExtTy), in getUDivExpr()
3327 getZeroExtendExpr(Step, ExtTy), in getUDivExpr()
3333 getAddRecExpr(getConstant(StartInt - StartRem), Step, in getUDivExpr()
3495 const SCEV *ScalarEvolution::getAddRecExpr(const SCEV *Start, const SCEV *Step, in getAddRecExpr() argument
3500 if (const SCEVAddRecExpr *StepChrec = dyn_cast<SCEVAddRecExpr>(Step)) in getAddRecExpr()
3506 Operands.push_back(Step); in getAddRecExpr()
4669 const SCEV *Step = AR->getStepRecurrence(*this); in proveNoSignedWrapViaInduction() local
4700 getSignedOverflowLimitForStep(Step, &Pred, this); in proveNoSignedWrapViaInduction()
4718 const SCEV *Step = AR->getStepRecurrence(*this); in proveNoUnsignedWrapViaInduction() local
4748 if (isKnownPositive(Step)) { in proveNoUnsignedWrapViaInduction()
4750 getUnsignedRangeMax(Step)); in proveNoUnsignedWrapViaInduction()
5889 Value *Start, *Step; in getRangeForUnknownRecurrence() local
5890 if (!matchSimpleRecurrence(P, BO, Start, Step)) in getRangeForUnknownRecurrence()
5924 auto KnownStep = computeKnownBits(Step, DL, 0, &AC, nullptr, &DT); in getRangeForUnknownRecurrence()
6260 static ConstantRange getRangeForAffineARHelper(APInt Step, in getRangeForAffineARHelper() argument
6266 if (Step == 0 || MaxBECount == 0) in getRangeForAffineARHelper()
6277 bool Descending = Signed && Step.isNegative(); in getRangeForAffineARHelper()
6284 Step = Step.abs(); in getRangeForAffineARHelper()
6288 if (APInt::getMaxValue(StartRange.getBitWidth()).udiv(Step).ult(MaxBECount)) in getRangeForAffineARHelper()
6293 APInt Offset = Step * MaxBECount; in getRangeForAffineARHelper()
6321 const SCEV *Step, in getRangeForAffineAR() argument
6333 ConstantRange StepSRange = getSignedRange(Step); in getRangeForAffineAR()
6346 getUnsignedRangeMax(Step), getUnsignedRange(Start), in getRangeForAffineAR()
6360 const SCEV *Step = AddRec->getStepRecurrence(*this); in getRangeForAffineNoSelfWrappingAR() local
6362 if (!isa<SCEVConstant>(Step)) in getRangeForAffineNoSelfWrappingAR()
6374 const SCEV *StepAbs = getUMinExpr(Step, getNegativeSCEV(Step)); in getRangeForAffineNoSelfWrappingAR()
6412 if (isKnownPositive(Step) && in getRangeForAffineNoSelfWrappingAR()
6415 else if (isKnownNegative(Step) && in getRangeForAffineNoSelfWrappingAR()
6422 const SCEV *Step, in getRangeViaFactoring() argument
6504 SelectPattern StepPattern(*this, BitWidth, Step); in getRangeViaFactoring()
9464 const SCEV *Step = getSCEVAtScope(AddRec->getOperand(1), L->getParentLoop()); in howFarToZero() local
9472 const SCEVConstant *StepC = dyn_cast<SCEVConstant>(Step); in howFarToZero()
9520 getUDivExpr(Distance, CountDown ? getNegativeSCEV(Step) : Step); in howFarToZero()
9998 const SCEV *Step = LHS->getStepRecurrence(*this); in getMonotonicPredicateTypeImpl() local
10000 if (isKnownNonNegative(Step)) in getMonotonicPredicateTypeImpl()
10003 if (isKnownNonPositive(Step)) in getMonotonicPredicateTypeImpl()
10087 const SCEV *Step = AR->getStepRecurrence(*this); in getLoopInvariantExitCondDuringFirstIterations() local
10088 auto *One = getOne(Step->getType()); in getLoopInvariantExitCondDuringFirstIterations()
10090 if (Step != One && Step != MinusOne) in getLoopInvariantExitCondDuringFirstIterations()
10111 if (Step == MinusOne) in getLoopInvariantExitCondDuringFirstIterations()
12308 const SCEV *Step = Terms[Last]; in findArrayDimensionsRec() local
12312 if (const SCEVMulExpr *M = dyn_cast<SCEVMulExpr>(Step)) { in findArrayDimensionsRec()
12318 Step = SE.getMulExpr(Qs); in findArrayDimensionsRec()
12321 Sizes.push_back(Step); in findArrayDimensionsRec()
12328 SCEVDivision::divide(SE, Term, Step, &Q, &R); in findArrayDimensionsRec()
12344 Sizes.push_back(Step); in findArrayDimensionsRec()
13443 const SCEV *Step = AR->getStepRecurrence(SE); in visitZeroExtendExpr() local
13447 SE.getSignExtendExpr(Step, Ty), L, in visitZeroExtendExpr()
13459 const SCEV *Step = AR->getStepRecurrence(SE); in visitSignExtendExpr() local
13463 SE.getSignExtendExpr(Step, Ty), L, in visitSignExtendExpr()
13620 if (const auto *Step = dyn_cast<SCEVConstant>(AR->getStepRecurrence(SE))) in getImpliedFlags() local
13621 if (Step->getValue()->getValue().isNonNegative()) in getImpliedFlags()