Lines Matching refs:SE

55     ScalarEvolution  *SE;  member in __anoncf1033750111::SimplifyIndvar
64 SimplifyIndvar(Loop *Loop, ScalarEvolution *SE, DominatorTree *DT, in SimplifyIndvar() argument
68 : L(Loop), LI(LI), SE(SE), DT(DT), TTI(TTI), Rewriter(Rewriter), in SimplifyIndvar()
150 assert(SE->isSCEVable(IVSrc->getType()) && "Expect SCEVable IV operand"); in foldIVUser()
162 const auto *LHS = SE->getSCEV(IVSrc); in foldIVUser()
163 const auto *RHS = SE->getSCEV(D); in foldIVUser()
164 FoldedExpr = SE->getUDivExpr(LHS, RHS); in foldIVUser()
167 if (UseInst->isExact() && LHS != SE->getMulExpr(FoldedExpr, RHS)) in foldIVUser()
171 if (!SE->isSCEVable(UseInst->getType())) in foldIVUser()
175 if (SE->getSCEV(UseInst) != FoldedExpr) in foldIVUser()
182 assert(SE->getSCEV(UseInst) == FoldedExpr && "bad SCEV with folded oper"); in foldIVUser()
211 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
212 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in makeIVComparisonInvariant()
213 auto LIP = SE->getLoopInvariantPredicate(Pred, S, X, L, ICmp); in makeIVComparisonInvariant()
255 const SCEV *S = SE->getSCEVAtScope(ICmp->getOperand(IVOperIdx), ICmpLoop); in eliminateIVComparison()
256 const SCEV *X = SE->getSCEVAtScope(ICmp->getOperand(1 - IVOperIdx), ICmpLoop); in eliminateIVComparison()
264 if (auto Ev = SE->evaluatePredicateAt(Pred, S, X, CtxI)) { in eliminateIVComparison()
265 SE->forgetValue(ICmp); in eliminateIVComparison()
272 SE->isKnownNonNegative(S) && SE->isKnownNonNegative(X)) { in eliminateIVComparison()
291 auto *N = SE->getSCEV(SDiv->getOperand(0)); in eliminateSDiv()
292 auto *D = SE->getSCEV(SDiv->getOperand(1)); in eliminateSDiv()
296 N = SE->getSCEVAtScope(N, L); in eliminateSDiv()
297 D = SE->getSCEVAtScope(D, L); in eliminateSDiv()
300 if (SE->isKnownNonNegative(N) && SE->isKnownNonNegative(D)) { in eliminateSDiv()
365 const SCEV *N = SE->getSCEV(NValue); in simplifyIVRemainder()
369 N = SE->getSCEVAtScope(N, ICmpLoop); in simplifyIVRemainder()
371 bool IsNumeratorNonNegative = !IsSigned || SE->isKnownNonNegative(N); in simplifyIVRemainder()
377 const SCEV *D = SE->getSCEV(DValue); in simplifyIVRemainder()
378 D = SE->getSCEVAtScope(D, ICmpLoop); in simplifyIVRemainder()
382 if (SE->isKnownPredicate(LT, N, D)) { in simplifyIVRemainder()
388 const auto *NLessOne = SE->getMinusSCEV(N, SE->getOne(T)); in simplifyIVRemainder()
389 if (SE->isKnownPredicate(LT, NLessOne, D)) { in simplifyIVRemainder()
397 if (!IsSigned || !SE->isKnownNonNegative(D)) in simplifyIVRemainder()
404 const SCEV *LHS = SE->getSCEV(WO->getLHS()); in eliminateOverflowIntrinsic()
405 const SCEV *RHS = SE->getSCEV(WO->getRHS()); in eliminateOverflowIntrinsic()
406 if (!SE->willNotOverflow(WO->getBinaryOp(), WO->isSigned(), LHS, RHS)) in eliminateOverflowIntrinsic()
445 const SCEV *LHS = SE->getSCEV(SI->getLHS()); in eliminateSaturatingIntrinsic()
446 const SCEV *RHS = SE->getSCEV(SI->getRHS()); in eliminateSaturatingIntrinsic()
447 if (!SE->willNotOverflow(SI->getBinaryOp(), SI->isSigned(), LHS, RHS)) in eliminateSaturatingIntrinsic()
482 const SCEV *IVSCEV = SE->getSCEV(IV); in eliminateTrunc()
483 const SCEV *TISCEV = SE->getSCEV(TI); in eliminateTrunc()
489 if (IVSCEV == SE->getSignExtendExpr(TISCEV, IVTy)) in eliminateTrunc()
491 if (IVSCEV == SE->getZeroExtendExpr(TISCEV, IVTy)) in eliminateTrunc()
536 const SCEV *SCEVOP1 = SE->getSCEV(ICI->getOperand(0)); in eliminateTrunc()
537 const SCEV *SCEVOP2 = SE->getSCEV(ICI->getOperand(1)); in eliminateTrunc()
538 return SE->isKnownNonNegative(SCEVOP1) && SE->isKnownNonNegative(SCEVOP2); in eliminateTrunc()
624 if (!SE->isSCEVable(I->getType())) in replaceIVUserWithLoopInvariant()
628 const SCEV *S = SE->getSCEV(I); in replaceIVUserWithLoopInvariant()
630 if (!SE->isLoopInvariant(S, L)) in replaceIVUserWithLoopInvariant()
664 const SCEV *IV = SE->getSCEV(IVOperand); in replaceFloatIVWithIntegerIV()
667 MaskBits = (int)SE->getSignedRange(IV).getMinSignedBits(); in replaceFloatIVWithIntegerIV()
669 MaskBits = (int)SE->getUnsignedRange(IV).getActiveBits(); in replaceFloatIVWithIntegerIV()
688 if (SE->getTypeSizeInBits(IVOperand->getType()) > in replaceFloatIVWithIntegerIV()
689 SE->getTypeSizeInBits(CI->getType())) { in replaceFloatIVWithIntegerIV()
716 if (!SE->isSCEVable(UseInst->getType()) || in eliminateIdentitySCEV()
720 const SCEV *UseSCEV = SE->getSCEV(UseInst); in eliminateIdentitySCEV()
721 if (UseSCEV != SE->getSCEV(IVOperand)) in eliminateIdentitySCEV()
752 if (!SE->canReuseInstruction(UseSCEV, IVOperand, DropPoisonGeneratingInsts)) in eliminateIdentitySCEV()
761 SE->forgetValue(UseInst); in eliminateIdentitySCEV()
780 auto Flags = SE->getStrengthenedNoWrapFlagsFromBinOp( in strengthenOverflowingOperation()
806 ConstantRange IVRange = SE->getUnsignedRange(SE->getSCEV(IVOperand)); in strengthenRightShift()
861 static bool isSimpleIVUser(Instruction *I, const Loop *L, ScalarEvolution *SE) { in isSimpleIVUser() argument
862 if (!SE->isSCEVable(I->getType())) in isSimpleIVUser()
866 const SCEV *S = SE->getSCEV(I); in isSimpleIVUser()
889 if (!SE->isSCEVable(CurrIV->getType())) in simplifyUsers()
972 if (isSimpleIVUser(UseInst, L, SE)) { in simplifyUsers()
984 bool simplifyUsersOfIV(PHINode *CurrIV, ScalarEvolution *SE, DominatorTree *DT, in simplifyUsersOfIV() argument
988 SimplifyIndvar SIV(LI->getLoopFor(CurrIV->getParent()), SE, DT, LI, TTI, in simplifyUsersOfIV()
996 bool simplifyLoopIVs(Loop *L, ScalarEvolution *SE, DominatorTree *DT, in simplifyLoopIVs() argument
999 SCEVExpander Rewriter(*SE, SE->getDataLayout(), "indvars"); in simplifyLoopIVs()
1006 simplifyUsersOfIV(cast<PHINode>(I), SE, DT, LI, TTI, Dead, Rewriter); in simplifyLoopIVs()
1027 ScalarEvolution *SE; member in __anoncf1033750311::WidenIV
1201 L(LI->getLoopFor(OrigPhi->getParent())), SE(SEv), DT(DTree), in WidenIV()
1302 return SE->getSignExtendExpr(S, Ty); in cloneArithmeticIVUser()
1303 return SE->getZeroExtendExpr(S, Ty); in cloneArithmeticIVUser()
1307 WideLHS = SE->getSCEV(WideDef); in cloneArithmeticIVUser()
1308 const SCEV *NarrowRHS = SE->getSCEV(NarrowUse->getOperand(1)); in cloneArithmeticIVUser()
1311 const SCEV *NarrowLHS = SE->getSCEV(NarrowUse->getOperand(0)); in cloneArithmeticIVUser()
1313 WideRHS = SE->getSCEV(WideDef); in cloneArithmeticIVUser()
1359 return SE->getAddExpr(LHS, RHS); in getSCEVByOpCode()
1361 return SE->getMinusSCEV(LHS, RHS); in getSCEVByOpCode()
1363 return SE->getMulExpr(LHS, RHS); in getSCEVByOpCode()
1365 return SE->getUDivExpr(LHS, RHS); in getSCEVByOpCode()
1412 SE->getSCEV(DU.NarrowUse->getOperand(ExtendOperIdx)); in getExtendedOperandRecurrence()
1414 ExtendOperExpr = SE->getSignExtendExpr(ExtendOperExpr, WideType); in getExtendedOperandRecurrence()
1416 ExtendOperExpr = SE->getZeroExtendExpr(ExtendOperExpr, WideType); in getExtendedOperandRecurrence()
1425 const SCEV *lhs = SE->getSCEV(DU.WideDef); in getExtendedOperandRecurrence()
1450 const SCEV *NarrowExpr = SE->getSCEV(DU.NarrowUse); in getWideRecurrence()
1451 if (SE->getTypeSizeInBits(NarrowExpr->getType()) >= in getWideRecurrence()
1452 SE->getTypeSizeInBits(WideType)) { in getWideRecurrence()
1461 WideExpr = SE->getSignExtendExpr(NarrowExpr, WideType); in getWideRecurrence()
1465 WideExpr = SE->getZeroExtendExpr(NarrowExpr, WideType); in getWideRecurrence()
1469 WideExpr = SE->getSignExtendExpr(NarrowExpr, WideType); in getWideRecurrence()
1472 WideExpr = SE->getZeroExtendExpr(NarrowExpr, WideType); in getWideRecurrence()
1522 unsigned CastWidth = SE->getTypeSizeInBits(Op->getType()); in widenLoopCompare()
1523 unsigned IVWidth = SE->getTypeSizeInBits(WideType); in widenLoopCompare()
1641 const SCEV *LHS = SE->getSCEV(OBO->getOperand(0)); in widenWithVariantUse()
1642 const SCEV *RHS = SE->getSCEV(OBO->getOperand(1)); in widenWithVariantUse()
1646 if (!SE->isKnownNegative(RHS)) in widenWithVariantUse()
1648 bool ProvedSubNUW = SE->isKnownPredicateAt(ICmpInst::ICMP_UGE, LHS, in widenWithVariantUse()
1649 SE->getNegativeSCEV(RHS), CtxI); in widenWithVariantUse()
1658 const SCEV *Op1 = SE->getSCEV(WideDef); in widenWithVariantUse()
1783 unsigned CastWidth = SE->getTypeSizeInBits(DU.NarrowUse->getType()); in widenIVUse()
1784 unsigned IVWidth = SE->getTypeSizeInBits(WideType); in widenIVUse()
1844 if (WideAddRec.first != SE->getSCEV(WideUse)) { in widenIVUse()
1846 << *SE->getSCEV(WideUse) << " != " << *WideAddRec.first in widenIVUse()
1886 const SCEV *NarrowSCEV = SE->getSCEV(NarrowDef); in pushNarrowIVUsers()
1888 SE->isKnownPredicate(ICmpInst::ICMP_SGE, NarrowSCEV, in pushNarrowIVUsers()
1889 SE->getZero(NarrowSCEV->getType())); in pushNarrowIVUsers()
1919 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(OrigPhi)); in createWideIV()
1925 ? SE->getSignExtendExpr(AddRec, WideType) in createWideIV()
1926 : SE->getZeroExtendExpr(AddRec, WideType); in createWideIV()
1928 assert(SE->getEffectiveSCEVType(WideIVExpr->getType()) == WideType && in createWideIV()
1940 SE->properlyDominates(AddRec->getStart(), L->getHeader()) && in createWideIV()
1941 SE->properlyDominates(AddRec->getStepRecurrence(*SE), L->getHeader()) && in createWideIV()
1983 WideIncExpr = SE->getSCEV(WideInc); in createWideIV()
2045 auto CmpRHSRange = SE->getSignedRange(SE->getSCEV(CmpRHS)); in calculatePostIncRange()
2130 LoopInfo *LI, ScalarEvolution *SE, SCEVExpander &Rewriter, in createWideIV() argument
2134 WidenIV Widener(WI, LI, SE, DT, DeadInsts, HasGuards, UsePostIncrementRanges); in createWideIV()