Lines Matching refs:SE
130 ScalarEvolution *SE; member in __anonc22e0b5a0111::IndVarSimplify
163 IndVarSimplify(LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, in IndVarSimplify() argument
166 : LI(LI), SE(SE), DT(DT), DL(DL), TLI(TLI), TTI(TTI), in IndVarSimplify()
415 SE->forgetLoop(L); in rewriteNonIntegerIVs()
487 SE->forgetValue(&PN); in rewriteFirstIterationLoopExitValues()
503 ScalarEvolution *SE, in visitIVCast() argument
510 uint64_t Width = SE->getTypeSizeInBits(Ty); in visitIVCast()
518 uint64_t NarrowIVWidth = SE->getTypeSizeInBits(WI.NarrowIV->getType()); in visitIVCast()
536 Width > SE->getTypeSizeInBits(WI.WidestNativeType)) { in visitIVCast()
537 WI.WidestNativeType = SE->getEffectiveSCEVType(Ty); in visitIVCast()
560 ScalarEvolution *SE; member in __anonc22e0b5a0211::IndVarSimplifyVisitor
570 : SE(SCEV), TTI(TTI), IVPhi(IV) { in IndVarSimplifyVisitor()
576 void visitCast(CastInst *Cast) override { visitIVCast(Cast, WI, SE, TTI); } in visitCast()
615 IndVarSimplifyVisitor Visitor(CurrIV, SE, TTI, DT); in simplifyAndExtend()
617 Changed |= simplifyUsersOfIV(CurrIV, SE, DT, LI, TTI, DeadInsts, Rewriter, in simplifyAndExtend()
632 if (PHINode *WidePhi = createWideIV(WideIVs.back(), LI, SE, Rewriter, in simplifyAndExtend()
796 ScalarEvolution *SE) { in isLoopCounter() argument
800 if (!SE->isSCEVable(Phi->getType())) in isLoopCounter()
803 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in isLoopCounter()
807 const SCEV *Step = dyn_cast<SCEVConstant>(AR->getStepRecurrence(*SE)); in isLoopCounter()
814 isa<SCEVAddRecExpr>(SE->getSCEV(IncV))); in isLoopCounter()
826 ScalarEvolution *SE, DominatorTree *DT) { in FindLoopCounter() argument
827 uint64_t BCWidth = SE->getTypeSizeInBits(BECount->getType()); in FindLoopCounter()
840 if (!isLoopCounter(Phi, L, SE)) in FindLoopCounter()
843 const auto *AR = cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in FindLoopCounter()
848 uint64_t PhiWidth = SE->getTypeSizeInBits(AR->getType()); in FindLoopCounter()
892 else if (PhiWidth <= SE->getTypeSizeInBits(BestPhi->getType())) in FindLoopCounter()
906 SCEVExpander &Rewriter, ScalarEvolution *SE) { in genLoopLimit() argument
907 assert(isLoopCounter(IndVar, L, SE)); in genLoopLimit()
909 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IndVar)); in genLoopLimit()
910 assert(AR->getStepRecurrence(*SE)->isOne() && "only handles unit stride"); in genLoopLimit()
918 SE->getTypeSizeInBits(AR->getType()) > in genLoopLimit()
919 SE->getTypeSizeInBits(ExitCount->getType())) { in genLoopLimit()
922 AR = cast<SCEVAddRecExpr>(SE->getTruncateExpr(AR, ExitCount->getType())); in genLoopLimit()
925 const SCEVAddRecExpr *ARBase = UsePostInc ? AR->getPostIncExpr(*SE) : AR; in genLoopLimit()
926 const SCEV *IVLimit = ARBase->evaluateAtIteration(ExitCount, *SE); in genLoopLimit()
927 assert(SE->isLoopInvariant(IVLimit, L) && in genLoopLimit()
943 assert(isLoopCounter(IndVar, L, SE)); in linearFunctionTestReplace()
982 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IncVar)); in linearFunctionTestReplace()
990 IndVar, ExitingBB, ExitCount, UsePostInc, L, Rewriter, SE); in linearFunctionTestReplace()
1015 unsigned CmpIndVarSize = SE->getTypeSizeInBits(CmpIndVar->getType()); in linearFunctionTestReplace()
1016 unsigned ExitCntSize = SE->getTypeSizeInBits(ExitCnt->getType()); in linearFunctionTestReplace()
1027 const SCEV *IV = SE->getSCEV(CmpIndVar); in linearFunctionTestReplace()
1028 const SCEV *TruncatedIV = SE->getTruncateExpr(IV, ExitCnt->getType()); in linearFunctionTestReplace()
1030 SE->getZeroExtendExpr(TruncatedIV, CmpIndVar->getType()); in linearFunctionTestReplace()
1038 SE->getSignExtendExpr(TruncatedIV, CmpIndVar->getType()); in linearFunctionTestReplace()
1161 SE->forgetValue(ToMove); in sinkUnusedInvariants()
1197 ScalarEvolution &SE) { in replaceLoopPHINodesWithPreheaderValues() argument
1206 SE.forgetValue(&PN); in replaceLoopPHINodesWithPreheaderValues()
1255 ScalarEvolution *SE, SCEVExpander &Rewriter) { in createReplacement() argument
1265 const SCEV *LHSS = SE->getSCEVAtScope(LHS, L); in createReplacement()
1266 const SCEV *RHSS = SE->getSCEVAtScope(RHS, L); in createReplacement()
1268 if (auto EV = SE->evaluatePredicateAt(Pred, LHSS, RHSS, BI)) in createReplacement()
1274 if (SE->getTypeSizeInBits(ARTy) > SE->getTypeSizeInBits(MaxIterTy)) in createReplacement()
1275 MaxIter = SE->getZeroExtendExpr(MaxIter, ARTy); in createReplacement()
1276 else if (SE->getTypeSizeInBits(ARTy) < SE->getTypeSizeInBits(MaxIterTy)) { in createReplacement()
1277 const SCEV *MinusOne = SE->getMinusOne(ARTy); in createReplacement()
1278 auto *MaxAllowedIter = SE->getZeroExtendExpr(MinusOne, MaxIterTy); in createReplacement()
1279 if (SE->isKnownPredicateAt(ICmpInst::ICMP_ULE, MaxIter, MaxAllowedIter, BI)) in createReplacement()
1280 MaxIter = SE->getTruncateExpr(MaxIter, ARTy); in createReplacement()
1291 Elements.push_back(SE->getMinusSCEV(Op, SE->getOne(Op->getType()))); in createReplacement()
1292 MaxIter = SE->getUMinFromMismatchedTypes(Elements); in createReplacement()
1294 MaxIter = SE->getMinusSCEV(MaxIter, SE->getOne(MaxIter->getType())); in createReplacement()
1298 auto LIP = SE->getLoopInvariantExitCondDuringFirstIterations(Pred, LHSS, RHSS, in createReplacement()
1304 if (SE->isKnownPredicateAt(LIP->Pred, LIP->LHS, LIP->RHS, BI)) in createReplacement()
1312 bool SkipLastIter, ScalarEvolution *SE, SCEVExpander &Rewriter, in optimizeLoopExitWithUnknownExitCount() argument
1361 SE->getExitCount(L, ExitingBB, in optimizeLoopExitWithUnknownExitCount()
1365 auto EL = SE->computeExitLimitFromCond(L, ICmp, Inverted, in optimizeLoopExitWithUnknownExitCount()
1373 SE->getWiderType(ExitMax->getType(), MaxIter->getType()); in optimizeLoopExitWithUnknownExitCount()
1374 auto *WideExitMax = SE->getNoopOrZeroExtend(ExitMax, WiderType); in optimizeLoopExitWithUnknownExitCount()
1375 auto *WideMaxIter = SE->getNoopOrZeroExtend(MaxIter, WiderType); in optimizeLoopExitWithUnknownExitCount()
1395 OptimisticSkipLastIter, SE, Rewriter)) { in optimizeLoopExitWithUnknownExitCount()
1459 auto RHSCR = SE->getUnsignedRange(SE->applyLoopGuards(SE->getSCEV(RHS), L)); in canonicalizeExitCondition()
1510 if (!LHS->hasOneUse() && !isa<SCEVAddRecExpr>(SE->getSCEV(LHSOp))) in canonicalizeExitCondition()
1534 auto RHSCR = SE->getUnsignedRange(SE->applyLoopGuards(SE->getSCEV(RHS), L)); in canonicalizeExitCondition()
1575 replaceLoopPHINodesWithPreheaderValues(LI, L, DeadInsts, *SE); in optimizeLoopExits()
1586 const SCEV *MaxBECount = SE->getSymbolicMaxBackedgeTakenCount(L); in optimizeLoopExits()
1613 const SCEV *CurrMaxExit = SE->getCouldNotCompute(); in optimizeLoopExits()
1620 CurrMaxExit = SE->getUMinFromMismatchedTypes(CurrMaxExit, MaxExitCount); in optimizeLoopExits()
1628 const SCEV *ExactExitCount = SE->getExitCount(L, ExitingBB); in optimizeLoopExits()
1629 const SCEV *MaxExitCount = SE->getExitCount( in optimizeLoopExits()
1638 SE, Rewriter, DeadInsts); in optimizeLoopExits()
1674 replaceLoopPHINodesWithPreheaderValues(LI, L, DeadInsts, *SE); in optimizeLoopExits()
1684 SE->getWiderType(MaxBECount->getType(), ExactExitCount->getType()); in optimizeLoopExits()
1685 ExactExitCount = SE->getNoopOrZeroExtend(ExactExitCount, WiderType); in optimizeLoopExits()
1686 MaxBECount = SE->getNoopOrZeroExtend(MaxBECount, WiderType); in optimizeLoopExits()
1691 if (SE->isLoopEntryGuardedByCond(L, CmpInst::ICMP_ULT, MaxBECount, in optimizeLoopExits()
1737 const SCEV *ExactBTC = SE->getBackedgeTakenCount(L); in predicateLoopExits()
1741 assert(SE->isLoopInvariant(ExactBTC, L) && "BTC must be loop invariant"); in predicateLoopExits()
1768 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB); in predicateLoopExits()
1773 assert(SE->isLoopInvariant(ExitCount, L) && in predicateLoopExits()
1850 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB); in predicateLoopExits()
1863 Type *WiderTy = SE->getWiderType(ECV->getType(), RHS->getType()); in predicateLoopExits()
1908 SCEVExpander Rewriter(*SE, DL, "indvars"); in run()
1927 if (int Rewrites = rewriteLoopExitValues(L, LI, TLI, SE, TTI, Rewriter, DT, in run()
1947 SE->forgetTopmostLoop(L); in run()
1955 SE->forgetLoop(L); in run()
1979 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB); in run()
1990 PHINode *IndVar = FindLoopCounter(L, ExitingBB, ExitCount, SE, DT); in run()
2054 IndVarSimplify IVS(&AR.LI, &AR.SE, &AR.DT, DL, &AR.TLI, &AR.TTI, AR.MSSA, in run()