Lines Matching defs:SE

51 static void analyzeICmp(ScalarEvolution &SE, ICmpInst *ICmp,
56 const SCEV *AddRecSCEV = SE.getSCEV(Cond.AddRecValue);
57 const SCEV *BoundSCEV = SE.getSCEV(Cond.BoundValue);
80 static bool calculateUpperBound(const Loop &L, ScalarEvolution &SE,
83 const SCEV *ExitCount = SE.getExitCount(&L, Cond.ICmp->getParent());
107 const SCEV *MaxSCEV = SE.getConstant(Max);
111 if (SE.isKnownPredicate(Pred, Cond.BoundSCEV, MaxSCEV)) {
113 SE.getAddExpr(Cond.BoundSCEV, SE.getOne(BoundSCEVIntType));
125 static bool hasProcessableCondition(const Loop &L, ScalarEvolution &SE,
128 analyzeICmp(SE, ICmp, Cond, L);
131 if (!SE.isAvailableAtLoopEntry(Cond.BoundSCEV, &L))
141 const SCEV *StepRecSCEV = Cond.AddRecSCEV->getStepRecurrence(SE);
153 if (!calculateUpperBound(L, SE, Cond, IsExitCond))
159 static bool isProcessableCondBI(const ScalarEvolution &SE,
169 if (!SE.isSCEVable(LHS->getType()))
171 assert(SE.isSCEVable(RHS->getType()) && "Expected RHS's type is SCEVable");
180 ScalarEvolution &SE, ConditionInfo &Cond) {
211 if (!isProcessableCondBI(SE, ExitingBI))
216 if (!hasProcessableCondition(L, SE, ICmp, Cond, /*IsExitCond*/ true))
243 static BranchInst *findSplitCandidate(const Loop &L, ScalarEvolution &SE,
256 if (!isProcessableCondBI(SE, BI))
265 if (!hasProcessableCondition(L, SE, ICmp, SplitCandidateCond,
276 if (!SE.isLoopEntryGuardedByCond(&L, SplitCandidateCond.Pred,
289 ScalarEvolution &SE, LPMUpdater &U) {
294 if (!canSplitLoopBound(L, DT, SE, ExitingCond))
297 if (!findSplitCandidate(L, SE, ExitingCond, SplitCandidateCond))
383 if (!SE.isSCEVable(PN.getType()))
386 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN));
404 ? SE.getSMinExpr(NewBoundSCEV, SplitBoundSCEV)
405 : SE.getUMinExpr(NewBoundSCEV, SplitBoundSCEV);
408 SE, L.getHeader()->getDataLayout(), "split");
460 // Invalidate cached SE information.
461 SE.forgetLoop(&L);
464 simplifyLoop(&L, &DT, &LI, &SE, nullptr, nullptr, true);
465 simplifyLoop(PostLoop, &DT, &LI, &SE, nullptr, nullptr, true);
482 if (!splitLoopBound(L, AR.DT, AR.LI, AR.SE, U))