Lines Matching defs:SCEV
160 const SCEV *ExitCount,
409 // the SCEV routines.
564 // Simplification of IV users based on SCEV evaluation.
577 IndVarSimplifyVisitor(PHINode *IV, ScalarEvolution *SCEV,
580 : SE(SCEV), TTI(TTI), IVPhi(IV) {
616 // forces SCEV to set no-wrap flags before evaluating sign/zero
617 // extension. The first time SCEV attempts to normalize sign/zero extension,
620 // other SCEV based analysis prior to simplifyAndExtend.
719 // test. This is critical for when SCEV's cached ExitCount is less precise
819 const SCEV *Step = dyn_cast<SCEVConstant>(AR->getStepRecurrence(*SE));
835 /// expression as far as SCEV is concerned.
837 const SCEV *BECount,
845 const SCEV *BestInit = nullptr;
888 const SCEV *Init = AR->getStart();
917 const SCEV *ExitCount, bool UsePostInc, Loop *L,
932 const SCEV *IVInit = AR->getStart();
938 const SCEV *IVLimit = ARBase->evaluateAtIteration(ExitCount, *SE);
947 /// able to rewrite the exit tests of any loop where the SCEV analysis can
952 const SCEV *ExitCount,
986 // that SCEV didn't infer for the post-inc addrec (even if we use a pre-inc
988 // instruction, while SCEV has to explicitly prove the post-inc nowrap flags.
1039 const SCEV *IV = SE->getSCEV(CmpIndVar);
1040 const SCEV *TruncatedIV = SE->getTruncateExpr(IV, ExitCnt->getType());
1041 const SCEV *ZExtTrunc =
1049 const SCEV *SExtTrunc =
1266 const SCEV *MaxIter, bool Inverted, bool SkipLastIter,
1277 const SCEV *LHSS = SE->getSCEVAtScope(LHS, L);
1278 const SCEV *RHSS = SE->getSCEVAtScope(RHS, L);
1289 const SCEV *MinusOne = SE->getMinusOne(ARTy);
1300 SmallVector<const SCEV *, 4> Elements;
1323 const Loop *L, BranchInst *BI, BasicBlock *ExitingBB, const SCEV *MaxIter,
1433 // rely on them which results in SCEV caching sub-optimal answers. The
1477 // Note: No SCEV invalidation needed. We've changed the predicate, but
1519 // of the zext for SCEV to be able to compute a trip count for said loops;
1550 // Note, we are leaving SCEV in an unfortunately imprecise case here
1598 const SCEV *MaxBECount = SE->getSymbolicMaxBackedgeTakenCount(L);
1625 const SCEV *CurrMaxExit = SE->getCouldNotCompute();
1626 auto UpdateSkipLastIter = [&](const SCEV *MaxExitCount) {
1638 SmallSet<const SCEV *, 8> DominatingExactExitCounts;
1640 const SCEV *ExactExitCount = SE->getExitCount(L, ExitingBB);
1641 const SCEV *MaxExitCount = SE->getExitCount(
1667 // them. We can stop querying MaxBECount for this case once SCEV
1720 // TODO: There might be another oppurtunity to leverage SCEV's reasoning
1724 // powerful for any case where SCEV can prove a >=u b, but neither a == b
1749 const SCEV *ExactBTC = SE->getBackedgeTakenCount(L);
1780 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);