• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Analysis/

Lines Matching refs:AddRec

889   const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr);
890 if (!AddRec)
892 const SCEV *Start = AddRec->getStart();
893 const SCEV *Step = AddRec->getStepRecurrence(*SE);
894 const SCEV *UB = SE->getBackedgeTakenCount(AddRec->getLoop());
898 if (!AddRec->getNoWrapFlags())
905 Loops.set(mapSrcLoop(AddRec->getLoop()));
907 Loops.set(mapDstLoop(AddRec->getLoop()));
1009 /// with some extra checking if S is an AddRec and we can prove less-than using
1024 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Bound)) {
1025 if (AddRec->isAffine()) {
1026 const SCEV *BECount = SE->getBackedgeTakenCount(AddRec->getLoop());
1028 const SCEV *Limit = AddRec->evaluateAtIteration(BECount, *SE);
1046 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(S)) {
1047 if (AddRec->isAffine()) {
1050 if (SE->isKnownNonNegative(AddRec->getStart()) &&
1051 SE->isKnownNonNegative(AddRec->getOperand(1)))
2200 llvm_unreachable("SIV test expected at least one AddRec");
2269 llvm_unreachable("RDIV expected at least one AddRec");
2338 while (const SCEVAddRecExpr *AddRec =
2340 const SCEV *Coeff = AddRec->getStepRecurrence(*SE);
2348 Coefficients = AddRec->getStart();
2357 while (const SCEVAddRecExpr *AddRec =
2359 const SCEV *Coeff = AddRec->getStepRecurrence(*SE);
2367 Coefficients = AddRec->getStart();
2427 while (const SCEVAddRecExpr *AddRec =
2429 Coefficients = AddRec->getStart();
2430 const Loop *CurLoop = AddRec->getLoop();
2432 const SCEV *SrcCoeff = AddRec->getStepRecurrence(*SE);
2436 AddRec = cast<SCEVAddRecExpr>(Inner);
2437 const SCEV *Coeff = AddRec->getStepRecurrence(*SE);
2438 if (CurLoop == AddRec->getLoop())
2449 Inner = AddRec->getStart();
2453 AddRec = cast<SCEVAddRecExpr>(Inner);
2454 const SCEV *Coeff = AddRec->getStepRecurrence(*SE);
2455 if (CurLoop == AddRec->getLoop())
2466 Inner = AddRec->getStart();
2920 while (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Subscript)) {
2921 const Loop *L = AddRec->getLoop();
2923 CI[K].Coeff = AddRec->getStepRecurrence(*SE);
2927 Subscript = AddRec->getStart();
2994 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr);
2995 if (!AddRec)
2997 if (AddRec->getLoop() == TargetLoop)
2998 return AddRec->getStepRecurrence(*SE);
2999 return findCoefficient(AddRec->getStart(), TargetLoop);
3010 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr);
3011 if (!AddRec)
3013 if (AddRec->getLoop() == TargetLoop)
3014 return AddRec->getStart();
3015 return SE->getAddRecExpr(zeroCoefficient(AddRec->getStart(), TargetLoop),
3016 AddRec->getStepRecurrence(*SE),
3017 AddRec->getLoop(),
3018 AddRec->getNoWrapFlags());
3030 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr);
3031 if (!AddRec) // create a new addRec
3036 if (AddRec->getLoop() == TargetLoop) {
3037 const SCEV *Sum = SE->getAddExpr(AddRec->getStepRecurrence(*SE), Value);
3039 return AddRec->getStart();
3040 return SE->getAddRecExpr(AddRec->getStart(),
3042 AddRec->getLoop(),
3043 AddRec->getNoWrapFlags());
3045 if (SE->isLoopInvariant(AddRec, TargetLoop))
3046 return SE->getAddRecExpr(AddRec, Value, TargetLoop, SCEV::FlagAnyWrap);
3048 addToCoefficient(AddRec->getStart(), TargetLoop, Value),
3049 AddRec->getStepRecurrence(*SE), AddRec->getLoop(),
3050 AddRec->getNoWrapFlags());