Lines Matching refs:SE

22                                   ScalarEvolution &SE) {  in isSafeDecreasingBound()  argument
27 if (!SE.isAvailableAtLoopEntry(BoundSCEV, L)) in isSafeDecreasingBound()
30 assert(SE.isKnownNegative(Step) && "expecting negative step"); in isSafeDecreasingBound()
46 return SE.isLoopEntryGuardedByCond(L, BoundPred, Start, BoundSCEV); in isSafeDecreasingBound()
50 const SCEV *StepPlusOne = SE.getAddExpr(Step, SE.getOne(Step->getType())); in isSafeDecreasingBound()
54 const SCEV *Limit = SE.getMinusSCEV(SE.getConstant(Min), StepPlusOne); in isSafeDecreasingBound()
57 SE.getMinusSCEV(BoundSCEV, SE.getOne(BoundSCEV->getType())); in isSafeDecreasingBound()
59 return SE.isLoopEntryGuardedByCond(L, BoundPred, Start, MinusOne) && in isSafeDecreasingBound()
60 SE.isLoopEntryGuardedByCond(L, BoundPred, BoundSCEV, Limit); in isSafeDecreasingBound()
68 ScalarEvolution &SE) { in isSafeIncreasingBound() argument
73 if (!SE.isAvailableAtLoopEntry(BoundSCEV, L)) in isSafeIncreasingBound()
90 return SE.isLoopEntryGuardedByCond(L, BoundPred, Start, BoundSCEV); in isSafeIncreasingBound()
94 const SCEV *StepMinusOne = SE.getMinusSCEV(Step, SE.getOne(Step->getType())); in isSafeIncreasingBound()
98 const SCEV *Limit = SE.getMinusSCEV(SE.getConstant(Max), StepMinusOne); in isSafeIncreasingBound()
100 return (SE.isLoopEntryGuardedByCond(L, BoundPred, Start, in isSafeIncreasingBound()
101 SE.getAddExpr(BoundSCEV, Step)) && in isSafeIncreasingBound()
102 SE.isLoopEntryGuardedByCond(L, BoundPred, BoundSCEV, Limit)); in isSafeIncreasingBound()
109 static const SCEV *getNarrowestLatchMaxTakenCountEstimate(ScalarEvolution &SE, in getNarrowestLatchMaxTakenCountEstimate() argument
112 SE.getExitCount(&L, L.getLoopLatch(), ScalarEvolution::SymbolicMaximum); in getNarrowestLatchMaxTakenCountEstimate()
114 return SE.getSymbolicMaxBackedgeTakenCount(&L); in getNarrowestLatchMaxTakenCountEstimate()
119 LoopStructure::parseLoopStructure(ScalarEvolution &SE, Loop &L, in parseLoopStructure() argument
161 const SCEV *MaxBETakenCount = getNarrowestLatchMaxTakenCountEstimate(SE, L); in parseLoopStructure()
166 assert(SE.getLoopDisposition(MaxBETakenCount, &L) == in parseLoopStructure()
172 const SCEV *LeftSCEV = SE.getSCEV(LeftValue); in parseLoopStructure()
176 const SCEV *RightSCEV = SE.getSCEV(RightValue); in parseLoopStructure()
199 dyn_cast<SCEVAddRecExpr>(SE.getSignExtendExpr(AR, WideTy)); in parseLoopStructure()
201 const SCEV *ExtendedStart = SE.getSignExtendExpr(AR->getStart(), WideTy); in parseLoopStructure()
203 SE.getSignExtendExpr(AR->getStepRecurrence(SE), WideTy); in parseLoopStructure()
206 ExtendAfterOp->getStepRecurrence(SE) == ExtendedStep; in parseLoopStructure()
228 const SCEV *StepRec = IndVarBase->getStepRecurrence(SE); in parseLoopStructure()
244 const SCEV *Addend = SE.getNegativeSCEV(IndVarBase->getStepRecurrence(SE)); in parseLoopStructure()
245 const SCEV *IndVarStart = SE.getAddExpr(StartNext, Addend); in parseLoopStructure()
246 const SCEV *Step = SE.getSCEV(StepCI); in parseLoopStructure()
267 if (isKnownNonNegativeInLoop(IndVarStart, &L, SE) && in parseLoopStructure()
268 isKnownNonNegativeInLoop(RightSCEV, &L, SE)) in parseLoopStructure()
279 cannotBeMinInLoop(RightSCEV, &L, SE, /*Signed*/ false)) { in parseLoopStructure()
282 SE.getMinusSCEV(RightSCEV, SE.getOne(RightSCEV->getType())); in parseLoopStructure()
284 } else if (cannotBeMinInLoop(RightSCEV, &L, SE, /*Signed*/ true)) { in parseLoopStructure()
287 SE.getMinusSCEV(RightSCEV, SE.getOne(RightSCEV->getType())); in parseLoopStructure()
310 LatchBrExitIdx, &L, SE)) { in parseLoopStructure()
319 SE.getAddExpr(RightSCEV, SE.getOne(RightSCEV->getType())); in parseLoopStructure()
343 cannotBeMaxInLoop(RightSCEV, &L, SE, /* Signed */ false)) { in parseLoopStructure()
345 RightSCEV = SE.getAddExpr(RightSCEV, SE.getOne(RightSCEV->getType())); in parseLoopStructure()
347 } else if (cannotBeMaxInLoop(RightSCEV, &L, SE, /* Signed */ true)) { in parseLoopStructure()
349 RightSCEV = SE.getAddExpr(RightSCEV, SE.getOne(RightSCEV->getType())); in parseLoopStructure()
375 LatchBrExitIdx, &L, SE)) { in parseLoopStructure()
385 SE.getMinusSCEV(RightSCEV, SE.getOne(RightSCEV->getType())); in parseLoopStructure()
395 SCEVExpander Expander(SE, DL, "loop-constrainer"); in parseLoopStructure()
456 const LoopStructure &LS, ScalarEvolution &SE, in LoopConstrainer() argument
458 : F(*L.getHeader()->getParent()), Ctx(L.getHeader()->getContext()), SE(SE), in LoopConstrainer()
507 SE.forgetValue(&PN); in cloneLoop()
730 SCEVExpander Expander(SE, F.getParent()->getDataLayout(), "loop-constrainer"); in run()
745 cast<SCEVConstant>(SE.getConstant(IVTy, -1, true /* isSigned */)); in run()
752 else if (cannotBeMinInLoop(*SR.HighLimit, &OriginalLoop, SE, in run()
754 ExitPreLoopAtSCEV = SE.getAddExpr(*SR.HighLimit, MinusOneS); in run()
779 else if (cannotBeMinInLoop(*SR.LowLimit, &OriginalLoop, SE, in run()
781 ExitMainLoopAtSCEV = SE.getAddExpr(*SR.LowLimit, MinusOneS); in run()
868 formLCSSARecursively(*L, DT, &LI, &SE); in run()
869 simplifyLoop(L, &DT, &LI, &SE, nullptr, nullptr, true); in run()