Lines Matching defs:SCEV

157                                  const SCEV *ExitCount,
406 // the SCEV routines.
561 // Simplification of IV users based on SCEV evaluation.
574 IndVarSimplifyVisitor(PHINode *IV, ScalarEvolution *SCEV,
577 : SE(SCEV), TTI(TTI), IVPhi(IV) {
613 // forces SCEV to set no-wrap flags before evaluating sign/zero
614 // extension. The first time SCEV attempts to normalize sign/zero extension,
617 // other SCEV based analysis prior to simplifyAndExtend.
716 // test. This is critical for when SCEV's cached ExitCount is less precise
816 const SCEV *Step = dyn_cast<SCEVConstant>(AR->getStepRecurrence(*SE));
832 /// expression as far as SCEV is concerned.
834 const SCEV *BECount,
842 const SCEV *BestInit = nullptr;
885 const SCEV *Init = AR->getStart();
914 const SCEV *ExitCount, bool UsePostInc, Loop *L,
929 const SCEV *IVInit = AR->getStart();
935 const SCEV *IVLimit = ARBase->evaluateAtIteration(ExitCount, *SE);
944 /// able to rewrite the exit tests of any loop where the SCEV analysis can
949 const SCEV *ExitCount,
983 // that SCEV didn't infer for the post-inc addrec (even if we use a pre-inc
985 // instruction, while SCEV has to explicitly prove the post-inc nowrap flags.
1036 const SCEV *IV = SE->getSCEV(CmpIndVar);
1037 const SCEV *TruncatedIV = SE->getTruncateExpr(IV, ExitCnt->getType());
1038 const SCEV *ZExtTrunc =
1046 const SCEV *SExtTrunc =
1263 const SCEV *MaxIter, bool Inverted, bool SkipLastIter,
1274 const SCEV *LHSS = SE->getSCEVAtScope(LHS, L);
1275 const SCEV *RHSS = SE->getSCEVAtScope(RHS, L);
1286 const SCEV *MinusOne = SE->getMinusOne(ARTy);
1287 const SCEV *MaxAllowedIter = SE->getZeroExtendExpr(MinusOne, MaxIterTy);
1297 SmallVector<const SCEV *, 4> Elements;
1299 for (const SCEV *Op : UMin->operands())
1320 const Loop *L, BranchInst *BI, BasicBlock *ExitingBB, const SCEV *MaxIter,
1376 const SCEV *ExitMax = EL.SymbolicMaxNotTaken;
1383 const SCEV *WideExitMax = SE->getNoopOrZeroExtend(ExitMax, WiderType);
1384 const SCEV *WideMaxIter = SE->getNoopOrZeroExtend(MaxIter, WiderType);
1430 // rely on them which results in SCEV caching sub-optimal answers. The
1474 // Note: No SCEV invalidation needed. We've changed the predicate, but
1516 // of the zext for SCEV to be able to compute a trip count for said loops;
1549 // Note, we are leaving SCEV in an unfortunately imprecise case here
1597 const SCEV *MaxBECount = SE->getSymbolicMaxBackedgeTakenCount(L);
1624 const SCEV *CurrMaxExit = SE->getCouldNotCompute();
1625 auto UpdateSkipLastIter = [&](const SCEV *MaxExitCount) {
1637 SmallSet<const SCEV *, 8> DominatingExactExitCounts;
1639 const SCEV *ExactExitCount = SE->getExitCount(L, ExitingBB);
1640 const SCEV *MaxExitCount = SE->getExitCount(
1666 // them. We can stop querying MaxBECount for this case once SCEV
1719 // TODO: There might be another oppurtunity to leverage SCEV's reasoning
1723 // powerful for any case where SCEV can prove a >=u b, but neither a == b
1748 const SCEV *ExactBTC = SE->getBackedgeTakenCount(L);
1779 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB);
1862 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB);
1928 // Simplification works best when run before other consumers of SCEV. We
1930 // other expressions involving loop IVs have been evaluated. This helps SCEV
1957 // Given we've changed exit counts, notify SCEV
1967 // Given we've changed exit counts, notify SCEV
1992 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB);