Lines Matching refs:SE
53 ScalarEvolution *SE; member in __anon0030acaf0111::SimplifyIndvar
62 SimplifyIndvar(Loop *Loop, ScalarEvolution *SE, DominatorTree *DT, in SimplifyIndvar() argument
66 : L(Loop), LI(LI), SE(SE), DT(DT), TTI(TTI), Rewriter(Rewriter), in SimplifyIndvar()
152 assert(SE->isSCEVable(IVSrc->getType()) && "Expect SCEVable IV operand"); in foldIVUser()
164 const auto *LHS = SE->getSCEV(IVSrc); in foldIVUser()
165 const auto *RHS = SE->getSCEV(D); in foldIVUser()
166 FoldedExpr = SE->getUDivExpr(LHS, RHS); in foldIVUser()
169 if (UseInst->isExact() && LHS != SE->getMulExpr(FoldedExpr, RHS)) in foldIVUser()
173 if (!SE->isSCEVable(UseInst->getType())) in foldIVUser()
177 if (SE->getSCEV(UseInst) != FoldedExpr) in foldIVUser()
184 assert(SE->getSCEV(UseInst) == FoldedExpr && "bad SCEV with folded oper"); in foldIVUser()
210 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
211 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
216 auto LIP = SE->getLoopInvariantPredicate(Pred, S, X, L); in makeIVComparisonInvariant()
237 const SCEV *IncomingS = SE->getSCEV(Incoming); in makeIVComparisonInvariant()
281 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in eliminateIVComparison()
282 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in eliminateIVComparison()
290 if (auto Ev = SE->evaluatePredicateAt(Pred, S, X, CtxI)) { in eliminateIVComparison()
297 SE->isKnownNonNegative(S) && SE->isKnownNonNegative(X)) { in eliminateIVComparison()
316 auto *N = SE->getSCEV(SDiv->getOperand(0)); in eliminateSDiv()
317 auto *D = SE->getSCEV(SDiv->getOperand(1)); in eliminateSDiv()
321 N = SE->getSCEVAtScope(N, L); in eliminateSDiv()
322 D = SE->getSCEVAtScope(D, L); in eliminateSDiv()
325 if (SE->isKnownNonNegative(N) && SE->isKnownNonNegative(D)) { in eliminateSDiv()
390 const SCEV *N = SE->getSCEV(NValue); in simplifyIVRemainder()
394 N = SE->getSCEVAtScope(N, ICmpLoop); in simplifyIVRemainder()
396 bool IsNumeratorNonNegative = !IsSigned || SE->isKnownNonNegative(N); in simplifyIVRemainder()
402 const SCEV *D = SE->getSCEV(DValue); in simplifyIVRemainder()
403 D = SE->getSCEVAtScope(D, ICmpLoop); in simplifyIVRemainder()
407 if (SE->isKnownPredicate(LT, N, D)) { in simplifyIVRemainder()
413 const auto *NLessOne = SE->getMinusSCEV(N, SE->getOne(T)); in simplifyIVRemainder()
414 if (SE->isKnownPredicate(LT, NLessOne, D)) { in simplifyIVRemainder()
422 if (!IsSigned || !SE->isKnownNonNegative(D)) in simplifyIVRemainder()
429 const SCEV *LHS = SE->getSCEV(WO->getLHS()); in eliminateOverflowIntrinsic()
430 const SCEV *RHS = SE->getSCEV(WO->getRHS()); in eliminateOverflowIntrinsic()
431 if (!SE->willNotOverflow(WO->getBinaryOp(), WO->isSigned(), LHS, RHS)) in eliminateOverflowIntrinsic()
470 const SCEV *LHS = SE->getSCEV(SI->getLHS()); in eliminateSaturatingIntrinsic()
471 const SCEV *RHS = SE->getSCEV(SI->getRHS()); in eliminateSaturatingIntrinsic()
472 if (!SE->willNotOverflow(SI->getBinaryOp(), SI->isSigned(), LHS, RHS)) in eliminateSaturatingIntrinsic()
507 const SCEV *IVSCEV = SE->getSCEV(IV); in eliminateTrunc()
508 const SCEV *TISCEV = SE->getSCEV(TI); in eliminateTrunc()
514 if (IVSCEV == SE->getSignExtendExpr(TISCEV, IVTy)) in eliminateTrunc()
516 if (IVSCEV == SE->getZeroExtendExpr(TISCEV, IVTy)) in eliminateTrunc()
561 const SCEV *SCEVOP1 = SE->getSCEV(ICI->getOperand(0)); in eliminateTrunc()
562 const SCEV *SCEVOP2 = SE->getSCEV(ICI->getOperand(1)); in eliminateTrunc()
563 return SE->isKnownNonNegative(SCEVOP1) && SE->isKnownNonNegative(SCEVOP2); in eliminateTrunc()
648 if (!SE->isSCEVable(I->getType())) in replaceIVUserWithLoopInvariant()
652 const SCEV *S = SE->getSCEV(I); in replaceIVUserWithLoopInvariant()
654 if (!SE->isLoopInvariant(S, L)) in replaceIVUserWithLoopInvariant()
688 const SCEV *IV = SE->getSCEV(IVOperand); in replaceFloatIVWithIntegerIV()
691 MaskBits = SE->getSignedRange(IV).getMinSignedBits(); in replaceFloatIVWithIntegerIV()
693 MaskBits = SE->getUnsignedRange(IV).getActiveBits(); in replaceFloatIVWithIntegerIV()
722 if (!SE->isSCEVable(UseInst->getType()) || in eliminateIdentitySCEV()
724 (SE->getSCEV(UseInst) != SE->getSCEV(IVOperand))) in eliminateIdentitySCEV()
765 auto Flags = SE->getStrengthenedNoWrapFlagsFromBinOp( in strengthenOverflowingOperation()
793 ConstantRange IVRange = SE->getUnsignedRange(SE->getSCEV(IVOperand)); in strengthenRightShift()
848 static bool isSimpleIVUser(Instruction *I, const Loop *L, ScalarEvolution *SE) { in isSimpleIVUser() argument
849 if (!SE->isSCEVable(I->getType())) in isSimpleIVUser()
853 const SCEV *S = SE->getSCEV(I); in isSimpleIVUser()
876 if (!SE->isSCEVable(CurrIV->getType())) in simplifyUsers()
952 if (isSimpleIVUser(UseInst, L, SE)) { in simplifyUsers()
964 bool simplifyUsersOfIV(PHINode *CurrIV, ScalarEvolution *SE, DominatorTree *DT, in simplifyUsersOfIV() argument
968 SimplifyIndvar SIV(LI->getLoopFor(CurrIV->getParent()), SE, DT, LI, TTI, in simplifyUsersOfIV()
976 bool simplifyLoopIVs(Loop *L, ScalarEvolution *SE, DominatorTree *DT, in simplifyLoopIVs() argument
979 SCEVExpander Rewriter(*SE, SE->getDataLayout(), "indvars"); in simplifyLoopIVs()
986 simplifyUsersOfIV(cast<PHINode>(I), SE, DT, LI, TTI, Dead, Rewriter); in simplifyLoopIVs()
1007 ScalarEvolution *SE; member in __anon0030acaf0311::WidenIV
1181 L(LI->getLoopFor(OrigPhi->getParent())), SE(SEv), DT(DTree), in WidenIV()
1282 return SE->getSignExtendExpr(S, Ty); in cloneArithmeticIVUser()
1283 return SE->getZeroExtendExpr(S, Ty); in cloneArithmeticIVUser()
1287 WideLHS = SE->getSCEV(WideDef); in cloneArithmeticIVUser()
1288 const SCEV *NarrowRHS = SE->getSCEV(NarrowUse->getOperand(1)); in cloneArithmeticIVUser()
1291 const SCEV *NarrowLHS = SE->getSCEV(NarrowUse->getOperand(0)); in cloneArithmeticIVUser()
1293 WideRHS = SE->getSCEV(WideDef); in cloneArithmeticIVUser()
1339 return SE->getAddExpr(LHS, RHS); in getSCEVByOpCode()
1341 return SE->getMinusSCEV(LHS, RHS); in getSCEVByOpCode()
1343 return SE->getMulExpr(LHS, RHS); in getSCEVByOpCode()
1345 return SE->getUDivExpr(LHS, RHS); in getSCEVByOpCode()
1376 ExtendOperExpr = SE->getSignExtendExpr( in getExtendedOperandRecurrence()
1377 SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType); in getExtendedOperandRecurrence()
1379 ExtendOperExpr = SE->getZeroExtendExpr( in getExtendedOperandRecurrence()
1380 SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)), WideType); in getExtendedOperandRecurrence()
1389 const SCEV *lhs = SE->getSCEV(DU.WideDef); in getExtendedOperandRecurrence()
1414 const SCEV *NarrowExpr = SE->getSCEV(DU.NarrowUse); in getWideRecurrence()
1415 if (SE->getTypeSizeInBits(NarrowExpr->getType()) >= in getWideRecurrence()
1416 SE->getTypeSizeInBits(WideType)) { in getWideRecurrence()
1425 WideExpr = SE->getSignExtendExpr(NarrowExpr, WideType); in getWideRecurrence()
1429 WideExpr = SE->getZeroExtendExpr(NarrowExpr, WideType); in getWideRecurrence()
1433 WideExpr = SE->getSignExtendExpr(NarrowExpr, WideType); in getWideRecurrence()
1436 WideExpr = SE->getZeroExtendExpr(NarrowExpr, WideType); in getWideRecurrence()
1486 unsigned CastWidth = SE->getTypeSizeInBits(Op->getType()); in widenLoopCompare()
1487 unsigned IVWidth = SE->getTypeSizeInBits(WideType); in widenLoopCompare()
1609 const SCEV *LHS = SE->getSCEV(OBO->getOperand(0)); in widenWithVariantUse()
1610 const SCEV *RHS = SE->getSCEV(OBO->getOperand(1)); in widenWithVariantUse()
1614 if (!SE->isKnownNegative(RHS)) in widenWithVariantUse()
1616 bool ProvedSubNUW = SE->isKnownPredicateAt(ICmpInst::ICMP_UGE, LHS, in widenWithVariantUse()
1617 SE->getNegativeSCEV(RHS), CtxI); in widenWithVariantUse()
1626 const SCEV *Op1 = SE->getSCEV(WideDef); in widenWithVariantUse()
1749 unsigned CastWidth = SE->getTypeSizeInBits(DU.NarrowUse->getType()); in widenIVUse()
1750 unsigned IVWidth = SE->getTypeSizeInBits(WideType); in widenIVUse()
1828 if (WideAddRec.first != SE->getSCEV(WideUse)) { in widenIVUse()
1830 << *SE->getSCEV(WideUse) << " != " << *WideAddRec.first in widenIVUse()
1847 const SCEV *NarrowSCEV = SE->getSCEV(NarrowDef); in pushNarrowIVUsers()
1849 SE->isKnownPredicate(ICmpInst::ICMP_SGE, NarrowSCEV, in pushNarrowIVUsers()
1850 SE->getZero(NarrowSCEV->getType())); in pushNarrowIVUsers()
1880 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(OrigPhi)); in createWideIV()
1886 ? SE->getSignExtendExpr(AddRec, WideType) in createWideIV()
1887 : SE->getZeroExtendExpr(AddRec, WideType); in createWideIV()
1889 assert(SE->getEffectiveSCEVType(WideIVExpr->getType()) == WideType && in createWideIV()
1901 SE->properlyDominates(AddRec->getStart(), L->getHeader()) && in createWideIV()
1902 SE->properlyDominates(AddRec->getStepRecurrence(*SE), L->getHeader()) && in createWideIV()
1943 WideIncExpr = SE->getSCEV(WideInc); in createWideIV()
2006 auto CmpRHSRange = SE->getSignedRange(SE->getSCEV(CmpRHS)); in calculatePostIncRange()
2091 LoopInfo *LI, ScalarEvolution *SE, SCEVExpander &Rewriter, in createWideIV() argument
2095 WidenIV Widener(WI, LI, SE, DT, DeadInsts, HasGuards, UsePostIncrementRanges); in createWideIV()