Lines Matching refs:SE
143 ScalarEvolution *SE; member in __anon175dabd40111::IndVarSimplify
176 IndVarSimplify(LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, in IndVarSimplify() argument
179 : LI(LI), SE(SE), DT(DT), DL(DL), TLI(TLI), TTI(TTI), in IndVarSimplify()
428 SE->forgetLoop(L); in rewriteNonIntegerIVs()
500 SE->forgetValue(&PN); in rewriteFirstIterationLoopExitValues()
516 ScalarEvolution *SE, in visitIVCast() argument
523 uint64_t Width = SE->getTypeSizeInBits(Ty); in visitIVCast()
531 uint64_t NarrowIVWidth = SE->getTypeSizeInBits(WI.NarrowIV->getType()); in visitIVCast()
549 Width > SE->getTypeSizeInBits(WI.WidestNativeType)) { in visitIVCast()
550 WI.WidestNativeType = SE->getEffectiveSCEVType(Ty); in visitIVCast()
573 ScalarEvolution *SE; member in __anon175dabd40211::IndVarSimplifyVisitor
583 : SE(SCEV), TTI(TTI), IVPhi(IV) { in IndVarSimplifyVisitor()
589 void visitCast(CastInst *Cast) override { visitIVCast(Cast, WI, SE, TTI); } in visitCast()
628 IndVarSimplifyVisitor Visitor(CurrIV, SE, TTI, DT); in simplifyAndExtend()
630 Changed |= simplifyUsersOfIV(CurrIV, SE, DT, LI, TTI, DeadInsts, Rewriter, in simplifyAndExtend()
645 if (PHINode *WidePhi = createWideIV(WideIVs.back(), LI, SE, Rewriter, in simplifyAndExtend()
865 ScalarEvolution *SE) { in isLoopCounter() argument
869 if (!SE->isSCEVable(Phi->getType())) in isLoopCounter()
872 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in isLoopCounter()
876 const SCEV *Step = dyn_cast<SCEVConstant>(AR->getStepRecurrence(*SE)); in isLoopCounter()
883 isa<SCEVAddRecExpr>(SE->getSCEV(IncV))); in isLoopCounter()
895 ScalarEvolution *SE, DominatorTree *DT) { in FindLoopCounter() argument
896 uint64_t BCWidth = SE->getTypeSizeInBits(BECount->getType()); in FindLoopCounter()
909 if (!isLoopCounter(Phi, L, SE)) in FindLoopCounter()
916 const auto *AR = cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in FindLoopCounter()
921 uint64_t PhiWidth = SE->getTypeSizeInBits(AR->getType()); in FindLoopCounter()
965 else if (PhiWidth <= SE->getTypeSizeInBits(BestPhi->getType())) in FindLoopCounter()
979 SCEVExpander &Rewriter, ScalarEvolution *SE) { in genLoopLimit() argument
980 assert(isLoopCounter(IndVar, L, SE)); in genLoopLimit()
981 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IndVar)); in genLoopLimit()
983 assert(AR->getStepRecurrence(*SE)->isOne() && "only handles unit stride"); in genLoopLimit()
997 Type *OfsTy = SE->getEffectiveSCEVType(IVInit->getType()); in genLoopLimit()
998 const SCEV *IVOffset = SE->getTruncateOrZeroExtend(ExitCount, OfsTy); in genLoopLimit()
1000 IVOffset = SE->getAddExpr(IVOffset, SE->getOne(OfsTy)); in genLoopLimit()
1003 assert(SE->isLoopInvariant(IVOffset, L) && in genLoopLimit()
1006 const SCEV *IVLimit = SE->getAddExpr(IVInit, IVOffset); in genLoopLimit()
1029 if (SE->getTypeSizeInBits(IVInit->getType()) in genLoopLimit()
1030 > SE->getTypeSizeInBits(ExitCount->getType())) { in genLoopLimit()
1032 ExitCount = SE->getZeroExtendExpr(ExitCount, IVInit->getType()); in genLoopLimit()
1034 IVInit = SE->getTruncateExpr(IVInit, ExitCount->getType()); in genLoopLimit()
1037 const SCEV *IVLimit = SE->getAddExpr(IVInit, ExitCount); in genLoopLimit()
1040 IVLimit = SE->getAddExpr(IVLimit, SE->getOne(IVLimit->getType())); in genLoopLimit()
1043 assert(SE->isLoopInvariant(IVLimit, L) && in genLoopLimit()
1065 assert(isLoopCounter(IndVar, L, SE)); in linearFunctionTestReplace()
1104 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IncVar)); in linearFunctionTestReplace()
1112 IndVar, ExitingBB, ExitCount, UsePostInc, L, Rewriter, SE); in linearFunctionTestReplace()
1137 unsigned CmpIndVarSize = SE->getTypeSizeInBits(CmpIndVar->getType()); in linearFunctionTestReplace()
1138 unsigned ExitCntSize = SE->getTypeSizeInBits(ExitCnt->getType()); in linearFunctionTestReplace()
1149 const SCEV *IV = SE->getSCEV(CmpIndVar); in linearFunctionTestReplace()
1150 const SCEV *TruncatedIV = SE->getTruncateExpr(SE->getSCEV(CmpIndVar), in linearFunctionTestReplace()
1153 SE->getZeroExtendExpr(TruncatedIV, CmpIndVar->getType()); in linearFunctionTestReplace()
1161 SE->getSignExtendExpr(TruncatedIV, CmpIndVar->getType()); in linearFunctionTestReplace()
1365 ScalarEvolution *SE, SCEVExpander &Rewriter, in optimizeLoopExitWithUnknownExitCount() argument
1385 const SCEV *LHSS = SE->getSCEVAtScope(LHS, L); in optimizeLoopExitWithUnknownExitCount()
1386 const SCEV *RHSS = SE->getSCEVAtScope(RHS, L); in optimizeLoopExitWithUnknownExitCount()
1388 if (SE->isKnownPredicateAt(Pred, LHSS, RHSS, BI)) { in optimizeLoopExitWithUnknownExitCount()
1399 if (SE->getTypeSizeInBits(ARTy) > SE->getTypeSizeInBits(MaxIterTy)) in optimizeLoopExitWithUnknownExitCount()
1400 MaxIter = SE->getZeroExtendExpr(MaxIter, ARTy); in optimizeLoopExitWithUnknownExitCount()
1401 else if (SE->getTypeSizeInBits(ARTy) < SE->getTypeSizeInBits(MaxIterTy)) { in optimizeLoopExitWithUnknownExitCount()
1402 const SCEV *MinusOne = SE->getMinusOne(ARTy); in optimizeLoopExitWithUnknownExitCount()
1403 auto *MaxAllowedIter = SE->getZeroExtendExpr(MinusOne, MaxIterTy); in optimizeLoopExitWithUnknownExitCount()
1404 if (SE->isKnownPredicateAt(ICmpInst::ICMP_ULE, MaxIter, MaxAllowedIter, BI)) in optimizeLoopExitWithUnknownExitCount()
1405 MaxIter = SE->getTruncateExpr(MaxIter, ARTy); in optimizeLoopExitWithUnknownExitCount()
1409 const SCEV *One = SE->getOne(MaxIter->getType()); in optimizeLoopExitWithUnknownExitCount()
1410 MaxIter = SE->getMinusSCEV(MaxIter, One); in optimizeLoopExitWithUnknownExitCount()
1414 auto LIP = SE->getLoopInvariantExitCondDuringFirstIterations(Pred, LHSS, RHSS, in optimizeLoopExitWithUnknownExitCount()
1420 if (SE->isKnownPredicateAt(LIP->Pred, LIP->LHS, LIP->RHS, BI)) in optimizeLoopExitWithUnknownExitCount()
1474 auto RHSCR = SE->getUnsignedRange(SE->applyLoopGuards(SE->getSCEV(RHS), L)); in canonicalizeExitCondition()
1525 if (!LHS->hasOneUse() && !isa<SCEVAddRecExpr>(SE->getSCEV(LHSOp))) in canonicalizeExitCondition()
1549 auto RHSCR = SE->getUnsignedRange(SE->applyLoopGuards(SE->getSCEV(RHS), L)); in canonicalizeExitCondition()
1601 const SCEV *MaxExitCount = SE->getSymbolicMaxBackedgeTakenCount(L); in optimizeLoopExits()
1630 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB); in optimizeLoopExits()
1637 L, BI, ExitingBB, MaxExitCount, Inverted, SkipLastIter, SE, in optimizeLoopExits()
1687 SE->getWiderType(MaxExitCount->getType(), ExitCount->getType()); in optimizeLoopExits()
1688 ExitCount = SE->getNoopOrZeroExtend(ExitCount, WiderType); in optimizeLoopExits()
1689 MaxExitCount = SE->getNoopOrZeroExtend(MaxExitCount, WiderType); in optimizeLoopExits()
1694 if (SE->isLoopEntryGuardedByCond(L, CmpInst::ICMP_ULT, in optimizeLoopExits()
1740 const SCEV *ExactBTC = SE->getBackedgeTakenCount(L); in predicateLoopExits()
1744 assert(SE->isLoopInvariant(ExactBTC, L) && "BTC must be loop invariant"); in predicateLoopExits()
1771 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB); in predicateLoopExits()
1776 assert(SE->isLoopInvariant(ExitCount, L) && in predicateLoopExits()
1853 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB); in predicateLoopExits()
1866 Type *WiderTy = SE->getWiderType(ECV->getType(), RHS->getType()); in predicateLoopExits()
1912 BackedgeTakenCount = SE->getBackedgeTakenCount(L); in run()
1921 SCEVExpander Rewriter(*SE, DL, "indvars"); in run()
1940 if (int Rewrites = rewriteLoopExitValues(L, LI, TLI, SE, TTI, Rewriter, DT, in run()
1960 SE->forgetTopmostLoop(L); in run()
1968 SE->forgetLoop(L); in run()
1992 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB); in run()
2003 PHINode *IndVar = FindLoopCounter(L, ExitingBB, ExitCount, SE, DT); in run()
2069 SE->forgetLoop(L); in run()
2070 const SCEV *NewBECount = SE->getBackedgeTakenCount(L); in run()
2071 if (SE->getTypeSizeInBits(BackedgeTakenCount->getType()) < in run()
2072 SE->getTypeSizeInBits(NewBECount->getType())) in run()
2073 NewBECount = SE->getTruncateOrNoop(NewBECount, in run()
2076 BackedgeTakenCount = SE->getTruncateOrNoop(BackedgeTakenCount, in run()
2078 assert(!SE->isKnownPredicate(ICmpInst::ICMP_ULT, BackedgeTakenCount, in run()
2094 IndVarSimplify IVS(&AR.LI, &AR.SE, &AR.DT, DL, &AR.TLI, &AR.TTI, AR.MSSA, in run()
2120 auto *SE = &getAnalysis<ScalarEvolutionWrapperPass>().getSE(); in runOnLoop() local
2132 IndVarSimplify IVS(LI, SE, DT, DL, TLI, TTI, MSSA, AllowIVWidening); in runOnLoop()