Lines Matching refs:ScalarEvolution
479 const SCEV *ScalarEvolution::getConstant(ConstantInt *V) { in getConstant()
490 const SCEV *ScalarEvolution::getConstant(const APInt &Val) { in getConstant()
495 ScalarEvolution::getConstant(Type *Ty, uint64_t V, bool isSigned) { in getConstant()
500 const SCEV *ScalarEvolution::getVScale(Type *Ty) { in getVScale()
855 ScalarEvolution &SE, in BinomialCoefficient()
973 ScalarEvolution &SE) const { in evaluateAtIteration()
979 const SCEV *It, ScalarEvolution &SE) { in evaluateAtIteration()
999 const SCEV *ScalarEvolution::getLosslessPtrToIntExpr(const SCEV *Op, in getLosslessPtrToIntExpr()
1072 SCEVPtrToIntSinkingRewriter(ScalarEvolution &SE) : SCEVRewriteVisitor(SE) {} in getLosslessPtrToIntExpr()
1074 static const SCEV *rewrite(const SCEV *Scev, ScalarEvolution &SE) { in getLosslessPtrToIntExpr()
1123 const SCEV *ScalarEvolution::getPtrToIntExpr(const SCEV *Op, Type *Ty) { in getPtrToIntExpr()
1133 const SCEV *ScalarEvolution::getTruncateExpr(const SCEV *Op, Type *Ty, in getTruncateExpr()
1232 ScalarEvolution *SE) { in getSignedOverflowLimitForStep()
1252 ScalarEvolution *SE) { in getUnsignedOverflowLimitForStep()
1263 typedef const SCEV *(ScalarEvolution::*GetExtendExprTy)(const SCEV *, Type *,
1288 ScalarEvolution *SE) { in getOverflowLimitForStep()
1294 SCEVSignExtendExpr>::GetExtendExpr = &ScalarEvolution::getSignExtendExpr;
1304 ScalarEvolution *SE) { in getOverflowLimitForStep()
1310 SCEVZeroExtendExpr>::GetExtendExpr = &ScalarEvolution::getZeroExtendExpr;
1323 ScalarEvolution *SE, unsigned Depth) { in getPreStartForExtend()
1355 ScalarEvolution::maskFlags(SA->getNoWrapFlags(), SCEV::FlagNUW); in getPreStartForExtend()
1400 ScalarEvolution *SE, in getExtendAddRecStart()
1446 bool ScalarEvolution::proveNoWrapByVaryingStart(const SCEV *Start, in proveNoWrapByVaryingStart()
1493 static APInt extractConstantWithoutWrapping(ScalarEvolution &SE, in extractConstantWithoutWrapping()
1514 static APInt extractConstantWithoutWrapping(ScalarEvolution &SE, in extractConstantWithoutWrapping()
1526 const ScalarEvolution::FoldID &ID, const SCEV *S, in insertFoldCacheEntry()
1527 DenseMap<ScalarEvolution::FoldID, const SCEV *> &FoldCache, in insertFoldCacheEntry()
1528 DenseMap<const SCEV *, SmallVector<ScalarEvolution::FoldID, 2>> in insertFoldCacheEntry()
1549 ScalarEvolution::getZeroExtendExpr(const SCEV *Op, Type *Ty, unsigned Depth) { in getZeroExtendExpr()
1568 const SCEV *ScalarEvolution::getZeroExtendExprImpl(const SCEV *Op, Type *Ty, in getZeroExtendExprImpl()
1884 ScalarEvolution::getSignExtendExpr(const SCEV *Op, Type *Ty, unsigned Depth) { in getSignExtendExpr()
1903 const SCEV *ScalarEvolution::getSignExtendExprImpl(const SCEV *Op, Type *Ty, in getSignExtendExprImpl()
2146 const SCEV *ScalarEvolution::getCastExpr(SCEVTypes Kind, const SCEV *Op, in getCastExpr()
2164 const SCEV *ScalarEvolution::getAnyExtendExpr(const SCEV *Op, in getAnyExtendExpr()
2239 ScalarEvolution &SE) { in CollectAddOperandsWithScales()
2298 bool ScalarEvolution::willNotOverflow(Instruction::BinaryOps BinOp, bool Signed, in willNotOverflow()
2301 const SCEV *(ScalarEvolution::*Operation)(const SCEV *, const SCEV *, in willNotOverflow()
2307 Operation = &ScalarEvolution::getAddExpr; in willNotOverflow()
2310 Operation = &ScalarEvolution::getMinusSCEV; in willNotOverflow()
2313 Operation = &ScalarEvolution::getMulExpr; in willNotOverflow()
2317 const SCEV *(ScalarEvolution::*Extension)(const SCEV *, Type *, unsigned) = in willNotOverflow()
2318 Signed ? &ScalarEvolution::getSignExtendExpr in willNotOverflow()
2319 : &ScalarEvolution::getZeroExtendExpr; in willNotOverflow()
2375 ScalarEvolution::getStrengthenedNoWrapFlagsFromBinOp( in getStrengthenedNoWrapFlagsFromBinOp()
2384 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in getStrengthenedNoWrapFlagsFromBinOp()
2386 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW); in getStrengthenedNoWrapFlagsFromBinOp()
2403 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in getStrengthenedNoWrapFlagsFromBinOp()
2410 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW); in getStrengthenedNoWrapFlagsFromBinOp()
2423 StrengthenNoWrapFlags(ScalarEvolution *SE, SCEVTypes Type, in StrengthenNoWrapFlags()
2437 ScalarEvolution::maskFlags(Flags, SignOrUnsignMask); in StrengthenNoWrapFlags()
2446 ScalarEvolution::setFlags(Flags, (SCEV::NoWrapFlags)SignOrUnsignMask); in StrengthenNoWrapFlags()
2448 SignOrUnsignWrap = ScalarEvolution::maskFlags(Flags, SignOrUnsignMask); in StrengthenNoWrapFlags()
2472 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW); in StrengthenNoWrapFlags()
2480 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in StrengthenNoWrapFlags()
2486 if (Type == scAddRecExpr && ScalarEvolution::hasFlags(Flags, SCEV::FlagNW) && in StrengthenNoWrapFlags()
2487 !ScalarEvolution::hasFlags(Flags, SCEV::FlagNUW) && Ops.size() == 2 && in StrengthenNoWrapFlags()
2489 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in StrengthenNoWrapFlags()
2492 if (Type == scMulExpr && !ScalarEvolution::hasFlags(Flags, SCEV::FlagNUW) && in StrengthenNoWrapFlags()
2496 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in StrengthenNoWrapFlags()
2499 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in StrengthenNoWrapFlags()
2505 bool ScalarEvolution::isAvailableAtLoopEntry(const SCEV *S, const Loop *L) { in isAvailableAtLoopEntry()
2510 const SCEV *ScalarEvolution::getAddExpr(SmallVectorImpl<const SCEV *> &Ops, in getAddExpr()
2674 if (ScalarEvolution::hasFlags(AddFlags, SCEV::FlagNUW) && in getAddExpr()
2677 ScalarEvolution::setFlags(PreservedFlags, SCEV::FlagNUW); in getAddExpr()
2682 if (ScalarEvolution::hasFlags(AddFlags, SCEV::FlagNSW) && in getAddExpr()
2686 ScalarEvolution::setFlags(PreservedFlags, SCEV::FlagNSW); in getAddExpr()
2983 ScalarEvolution::getOrCreateAddExpr(ArrayRef<const SCEV *> Ops, in getOrCreateAddExpr()
3005 ScalarEvolution::getOrCreateAddRecExpr(ArrayRef<const SCEV *> Ops, in getOrCreateAddRecExpr()
3029 ScalarEvolution::getOrCreateMulExpr(ArrayRef<const SCEV *> Ops, in getOrCreateMulExpr()
3105 const SCEV *ScalarEvolution::getMulExpr(SmallVectorImpl<const SCEV *> &Ops, in getMulExpr()
3391 const SCEV *ScalarEvolution::getURemExpr(const SCEV *LHS, in getURemExpr()
3420 const SCEV *ScalarEvolution::getUDivExpr(const SCEV *LHS, in getUDivExpr()
3592 const SCEV *ScalarEvolution::getUDivExactExpr(const SCEV *LHS, in getUDivExactExpr()
3646 const SCEV *ScalarEvolution::getAddRecExpr(const SCEV *Start, const SCEV *Step, in getAddRecExpr()
3664 ScalarEvolution::getAddRecExpr(SmallVectorImpl<const SCEV *> &Operands, in getAddRecExpr()
3741 ScalarEvolution::getGEPExpr(GEPOperator *GEP, in getGEPExpr()
3815 SCEV *ScalarEvolution::findExistingSCEVInCache(SCEVTypes SCEVType, in findExistingSCEVInCache()
3825 const SCEV *ScalarEvolution::getAbsExpr(const SCEV *Op, bool IsNSW) { in getAbsExpr()
3830 const SCEV *ScalarEvolution::getMinMaxExpr(SCEVTypes Kind, in getMinMaxExpr()
3980 ScalarEvolution &SE;
4021 SCEVSequentialMinMaxDeduplicatingVisitor(ScalarEvolution &SE, in SCEVSequentialMinMaxDeduplicatingVisitor()
4179 void ScalarEvolution::getPoisonGeneratingValues( in getPoisonGeneratingValues()
4187 bool ScalarEvolution::canReuseInstruction( in canReuseInstruction()
4250 ScalarEvolution::getSequentialMinMaxExpr(SCEVTypes Kind, in getSequentialMinMaxExpr()
4360 const SCEV *ScalarEvolution::getSMaxExpr(const SCEV *LHS, const SCEV *RHS) { in getSMaxExpr()
4365 const SCEV *ScalarEvolution::getSMaxExpr(SmallVectorImpl<const SCEV *> &Ops) { in getSMaxExpr()
4369 const SCEV *ScalarEvolution::getUMaxExpr(const SCEV *LHS, const SCEV *RHS) { in getUMaxExpr()
4374 const SCEV *ScalarEvolution::getUMaxExpr(SmallVectorImpl<const SCEV *> &Ops) { in getUMaxExpr()
4378 const SCEV *ScalarEvolution::getSMinExpr(const SCEV *LHS, in getSMinExpr()
4384 const SCEV *ScalarEvolution::getSMinExpr(SmallVectorImpl<const SCEV *> &Ops) { in getSMinExpr()
4388 const SCEV *ScalarEvolution::getUMinExpr(const SCEV *LHS, const SCEV *RHS, in getUMinExpr()
4394 const SCEV *ScalarEvolution::getUMinExpr(SmallVectorImpl<const SCEV *> &Ops, in getUMinExpr()
4401 ScalarEvolution::getSizeOfExpr(Type *IntTy, TypeSize Size) { in getSizeOfExpr()
4408 const SCEV *ScalarEvolution::getSizeOfExpr(Type *IntTy, Type *AllocTy) { in getSizeOfExpr()
4412 const SCEV *ScalarEvolution::getStoreSizeOfExpr(Type *IntTy, Type *StoreTy) { in getStoreSizeOfExpr()
4416 const SCEV *ScalarEvolution::getOffsetOfExpr(Type *IntTy, in getOffsetOfExpr()
4428 const SCEV *ScalarEvolution::getUnknown(Value *V) { in getUnknown()
4458 bool ScalarEvolution::isSCEVable(Type *Ty) const { in isSCEVable()
4465 uint64_t ScalarEvolution::getTypeSizeInBits(Type *Ty) const { in getTypeSizeInBits()
4475 Type *ScalarEvolution::getEffectiveSCEVType(Type *Ty) const { in getEffectiveSCEVType()
4486 Type *ScalarEvolution::getWiderType(Type *T1, Type *T2) const { in getWiderType()
4490 bool ScalarEvolution::instructionCouldExistWithOperands(const SCEV *A, in instructionCouldExistWithOperands()
4504 const SCEV *ScalarEvolution::getCouldNotCompute() { in getCouldNotCompute()
4508 bool ScalarEvolution::checkValidity(const SCEV *S) const { in checkValidity()
4517 bool ScalarEvolution::containsAddRecurrence(const SCEV *S) { in containsAddRecurrence()
4530 ArrayRef<Value *> ScalarEvolution::getSCEVValues(const SCEV *S) { in getSCEVValues()
4540 void ScalarEvolution::eraseValueFromMap(Value *V) { in eraseValueFromMap()
4551 void ScalarEvolution::insertValueToMap(Value *V, const SCEV *S) { in insertValueToMap()
4564 const SCEV *ScalarEvolution::getSCEV(Value *V) { in getSCEV()
4572 const SCEV *ScalarEvolution::getExistingSCEV(Value *V) { in getExistingSCEV()
4586 const SCEV *ScalarEvolution::getNegativeSCEV(const SCEV *V, in getNegativeSCEV()
4613 const SCEV *ScalarEvolution::getNotSCEV(const SCEV *V) { in getNotSCEV()
4642 const SCEV *ScalarEvolution::removePointerBase(const SCEV *P) { in removePointerBase()
4672 const SCEV *ScalarEvolution::getMinusSCEV(const SCEV *LHS, const SCEV *RHS, in getMinusSCEV()
4722 const SCEV *ScalarEvolution::getTruncateOrZeroExtend(const SCEV *V, Type *Ty, in getTruncateOrZeroExtend()
4734 const SCEV *ScalarEvolution::getTruncateOrSignExtend(const SCEV *V, Type *Ty, in getTruncateOrSignExtend()
4747 ScalarEvolution::getNoopOrZeroExtend(const SCEV *V, Type *Ty) { in getNoopOrZeroExtend()
4759 ScalarEvolution::getNoopOrSignExtend(const SCEV *V, Type *Ty) { in getNoopOrSignExtend()
4771 ScalarEvolution::getNoopOrAnyExtend(const SCEV *V, Type *Ty) { in getNoopOrAnyExtend()
4783 ScalarEvolution::getTruncateOrNoop(const SCEV *V, Type *Ty) { in getTruncateOrNoop()
4794 const SCEV *ScalarEvolution::getUMaxFromMismatchedTypes(const SCEV *LHS, in getUMaxFromMismatchedTypes()
4807 const SCEV *ScalarEvolution::getUMinFromMismatchedTypes(const SCEV *LHS, in getUMinFromMismatchedTypes()
4815 ScalarEvolution::getUMinFromMismatchedTypes(SmallVectorImpl<const SCEV *> &Ops, in getUMinFromMismatchedTypes()
4840 const SCEV *ScalarEvolution::getPointerBase(const SCEV *V) { in getPointerBase()
4884 static const SCEV *rewrite(const SCEV *S, const Loop *L, ScalarEvolution &SE, in rewrite()
4914 explicit SCEVInitRewriter(const Loop *L, ScalarEvolution &SE) in SCEVInitRewriter()
4928 static const SCEV *rewrite(const SCEV *S, const Loop *L, ScalarEvolution &SE) { in rewrite()
4955 explicit SCEVPostIncRewriter(const Loop *L, ScalarEvolution &SE) in SCEVPostIncRewriter()
4970 ScalarEvolution &SE) { in rewrite()
5018 bool IsPosBECond, ScalarEvolution &SE) in SCEVBackedgeConditionFolder()
5046 ScalarEvolution &SE) { in rewrite()
5069 explicit SCEVShiftRewriter(const Loop *L, ScalarEvolution &SE) in SCEVShiftRewriter()
5079 ScalarEvolution::proveNoWrapViaConstantRanges(const SCEVAddRecExpr *AR) { in proveNoWrapViaConstantRanges()
5095 Result = ScalarEvolution::setFlags(Result, SCEV::FlagNW); in proveNoWrapViaConstantRanges()
5106 Result = ScalarEvolution::setFlags(Result, SCEV::FlagNSW); in proveNoWrapViaConstantRanges()
5116 Result = ScalarEvolution::setFlags(Result, SCEV::FlagNUW); in proveNoWrapViaConstantRanges()
5123 ScalarEvolution::proveNoSignedWrapViaInduction(const SCEVAddRecExpr *AR) { in proveNoSignedWrapViaInduction()
5176 ScalarEvolution::proveNoUnsignedWrapViaInduction(const SCEVAddRecExpr *AR) { in proveNoUnsignedWrapViaInduction()
5371 bool &Signed, ScalarEvolution &SE) { in isSimpleCastedPHI()
5469 ScalarEvolution::createAddRecFromPHIWithCastsImpl(const SCEVUnknown *SymbolicPHI) { in createAddRecFromPHIWithCastsImpl()
5680 ScalarEvolution::createAddRecFromPHIWithCasts(const SCEVUnknown *SymbolicPHI) { in createAddRecFromPHIWithCasts()
5744 const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN, in createSimpleAffineAddRec()
5796 const SCEV *ScalarEvolution::createAddRecFromPHI(PHINode *PN) { in createAddRecFromPHI()
5990 const SCEV *ScalarEvolution::createNodeFromSelectLikePHI(PHINode *PN) { in createNodeFromSelectLikePHI()
6022 const SCEV *ScalarEvolution::createNodeForPHI(PHINode *PN) { in createNodeForPHI()
6073 ScalarEvolution::createNodeForSelectOrPHIInstWithICmpInstCond(Type *Ty, in createNodeForSelectOrPHIInstWithICmpInstCond()
6180 createNodeForSelectViaUMinSeq(ScalarEvolution *SE, const SCEV *CondExpr, in createNodeForSelectViaUMinSeq()
6213 createNodeForSelectViaUMinSeq(ScalarEvolution *SE, Value *Cond, Value *TrueVal, in createNodeForSelectViaUMinSeq()
6224 const SCEV *ScalarEvolution::createNodeForSelectOrPHIViaUMinSeq( in createNodeForSelectOrPHIViaUMinSeq()
6242 const SCEV *ScalarEvolution::createNodeForSelectOrPHI(Value *V, Value *Cond, in createNodeForSelectOrPHI()
6264 const SCEV *ScalarEvolution::createNodeForGEP(GEPOperator *GEP) { in createNodeForGEP()
6274 APInt ScalarEvolution::getConstantMultipleImpl(const SCEV *S) { in getConstantMultipleImpl()
6360 APInt ScalarEvolution::getConstantMultiple(const SCEV *S) { in getConstantMultiple()
6371 APInt ScalarEvolution::getNonZeroConstantMultiple(const SCEV *S) { in getNonZeroConstantMultiple()
6376 uint32_t ScalarEvolution::getMinTrailingZeros(const SCEV *S) { in getMinTrailingZeros()
6390 void ScalarEvolution::setNoWrapFlags(SCEVAddRecExpr *AddRec, in setNoWrapFlags()
6400 ConstantRange ScalarEvolution::
6520 ScalarEvolution::getRangeRefIter(const SCEV *S, in getRangeRefIter()
6521 ScalarEvolution::RangeSignHint SignHint) { in getRangeRefIter()
6523 SignHint == ScalarEvolution::HINT_RANGE_UNSIGNED ? UnsignedRanges in getRangeRefIter()
6601 const ConstantRange &ScalarEvolution::getRangeRef( in getRangeRef()
6602 const SCEV *S, ScalarEvolution::RangeSignHint SignHint, unsigned Depth) { in getRangeRef()
6604 SignHint == ScalarEvolution::HINT_RANGE_UNSIGNED ? UnsignedRanges in getRangeRef()
6607 SignHint == ScalarEvolution::HINT_RANGE_UNSIGNED ? ConstantRange::Unsigned in getRangeRef()
6629 if (SignHint == ScalarEvolution::HINT_RANGE_UNSIGNED) { in getRangeRef()
7005 ConstantRange ScalarEvolution::getRangeForAffineAR(const SCEV *Start, in getRangeForAffineAR()
7034 ConstantRange ScalarEvolution::getRangeForAffineNoSelfWrappingAR( in getRangeForAffineNoSelfWrappingAR()
7036 ScalarEvolution::RangeSignHint SignHint) { in getRangeForAffineNoSelfWrappingAR()
7102 ConstantRange ScalarEvolution::getRangeViaFactoring(const SCEV *Start, in getRangeViaFactoring()
7118 explicit SelectPattern(ScalarEvolution &SE, unsigned BitWidth, in getRangeViaFactoring()
7221 SCEV::NoWrapFlags ScalarEvolution::getNoWrapFlagsFromUB(const Value *V) { in getNoWrapFlagsFromUB()
7228 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in getNoWrapFlagsFromUB()
7230 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW); in getNoWrapFlagsFromUB()
7238 ScalarEvolution::getNonTrivialDefiningScopeBound(const SCEV *S) { in getNonTrivialDefiningScopeBound()
7248 ScalarEvolution::getDefiningScopeBound(ArrayRef<const SCEV *> Ops, in getDefiningScopeBound()
7283 ScalarEvolution::getDefiningScopeBound(ArrayRef<const SCEV *> Ops) { in getDefiningScopeBound()
7288 bool ScalarEvolution::isGuaranteedToTransferExecutionTo(const Instruction *A, in isGuaranteedToTransferExecutionTo()
7307 bool ScalarEvolution::isSCEVExprNeverPoison(const Instruction *I) { in isSCEVExprNeverPoison()
7334 bool ScalarEvolution::isAddRecNeverPoison(const Instruction *I, const Loop *L) { in isAddRecNeverPoison()
7378 ScalarEvolution::LoopProperties
7379 ScalarEvolution::getLoopProperties(const Loop *L) { in getLoopProperties()
7380 using LoopProperties = ScalarEvolution::LoopProperties; in getLoopProperties()
7412 bool ScalarEvolution::loopIsFiniteByAssumption(const Loop *L) { in loopIsFiniteByAssumption()
7419 const SCEV *ScalarEvolution::createSCEVIter(Value *V) { in createSCEVIter()
7461 ScalarEvolution::getOperandsToCreate(Value *V, SmallVectorImpl<Value *> &Ops) { in getOperandsToCreate()
7647 const SCEV *ScalarEvolution::createSCEV(Value *V) { in createSCEV()
8127 const SCEV *ScalarEvolution::getTripCountFromExitCount(const SCEV *ExitCount) { in getTripCountFromExitCount()
8138 const SCEV *ScalarEvolution::getTripCountFromExitCount(const SCEV *ExitCount, in getTripCountFromExitCount()
8182 unsigned ScalarEvolution::getSmallConstantTripCount(const Loop *L) { in getSmallConstantTripCount()
8188 ScalarEvolution::getSmallConstantTripCount(const Loop *L, in getSmallConstantTripCount()
8198 unsigned ScalarEvolution::getSmallConstantMaxTripCount(const Loop *L) { in getSmallConstantMaxTripCount()
8204 unsigned ScalarEvolution::getSmallConstantTripMultiple(const Loop *L) { in getSmallConstantTripMultiple()
8218 unsigned ScalarEvolution::getSmallConstantTripMultiple(const Loop *L, in getSmallConstantTripMultiple()
8247 ScalarEvolution::getSmallConstantTripMultiple(const Loop *L, in getSmallConstantTripMultiple()
8256 const SCEV *ScalarEvolution::getExitCount(const Loop *L, in getExitCount()
8271 ScalarEvolution::getPredicatedBackedgeTakenCount(const Loop *L, in getPredicatedBackedgeTakenCount()
8276 const SCEV *ScalarEvolution::getBackedgeTakenCount(const Loop *L, in getBackedgeTakenCount()
8289 bool ScalarEvolution::isBackedgeTakenCountMaxOrZero(const Loop *L) { in isBackedgeTakenCountMaxOrZero()
8305 const ScalarEvolution::BackedgeTakenInfo &
8306 ScalarEvolution::getPredicatedBackedgeTakenInfo(const Loop *L) { in getPredicatedBackedgeTakenInfo()
8322 ScalarEvolution::BackedgeTakenInfo &
8323 ScalarEvolution::getBackedgeTakenInfo(const Loop *L) { in getBackedgeTakenInfo()
8365 void ScalarEvolution::forgetAllLoops() { in forgetAllLoops()
8390 void ScalarEvolution::visitAndClearUsers( in visitAndClearUsers()
8412 void ScalarEvolution::forgetLoop(const Loop *L) { in forgetLoop()
8454 void ScalarEvolution::forgetTopmostLoop(const Loop *L) { in forgetTopmostLoop()
8458 void ScalarEvolution::forgetValue(Value *V) { in forgetValue()
8473 void ScalarEvolution::forgetLcssaPhiWithNewPredecessor(Loop *L, PHINode *V) { in forgetLcssaPhiWithNewPredecessor()
8511 void ScalarEvolution::forgetLoopDispositions() { LoopDispositions.clear(); } in forgetLoopDispositions()
8513 void ScalarEvolution::forgetBlockAndLoopDispositions(Value *V) { in forgetBlockAndLoopDispositions()
8556 ScalarEvolution::BackedgeTakenInfo::getExact(const Loop *L, ScalarEvolution *SE, in getExact()
8595 ScalarEvolution::BackedgeTakenInfo::getExact(const BasicBlock *ExitingBlock, in getExact()
8596 ScalarEvolution *SE) const { in getExact()
8604 const SCEV *ScalarEvolution::BackedgeTakenInfo::getConstantMax( in getConstantMax()
8605 const BasicBlock *ExitingBlock, ScalarEvolution *SE) const { in getConstantMax()
8613 const SCEV *ScalarEvolution::BackedgeTakenInfo::getSymbolicMax( in getSymbolicMax()
8614 const BasicBlock *ExitingBlock, ScalarEvolution *SE) const { in getSymbolicMax()
8624 ScalarEvolution::BackedgeTakenInfo::getConstantMax(ScalarEvolution *SE) const { in getConstantMax()
8639 ScalarEvolution::BackedgeTakenInfo::getSymbolicMax(const Loop *L, in getSymbolicMax()
8640 ScalarEvolution *SE) { in getSymbolicMax()
8646 bool ScalarEvolution::BackedgeTakenInfo::isConstantMaxOrZero( in isConstantMaxOrZero()
8647 ScalarEvolution *SE) const { in isConstantMaxOrZero()
8654 ScalarEvolution::ExitLimit::ExitLimit(const SCEV *E) in ExitLimit()
8657 ScalarEvolution::ExitLimit::ExitLimit( in ExitLimit()
8693 ScalarEvolution::ExitLimit::ExitLimit( in ExitLimit()
8702 ScalarEvolution::BackedgeTakenInfo::BackedgeTakenInfo( in BackedgeTakenInfo()
8703 ArrayRef<ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo> ExitCounts, in BackedgeTakenInfo()
8706 using EdgeExitInfo = ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo; in BackedgeTakenInfo()
8724 ScalarEvolution::BackedgeTakenInfo
8725 ScalarEvolution::computeBackedgeTakenCount(const Loop *L, in computeBackedgeTakenCount()
8730 using EdgeExitInfo = ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo; in computeBackedgeTakenCount()
8828 ScalarEvolution::ExitLimit
8829 ScalarEvolution::computeExitLimit(const Loop *L, BasicBlock *ExitingBlock, in computeExitLimit()
8869 ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromCond( in computeExitLimitFromCond()
8872 ScalarEvolution::ExitLimitCacheTy Cache(L, ExitIfTrue, AllowPredicates); in computeExitLimitFromCond()
8877 std::optional<ScalarEvolution::ExitLimit>
8878 ScalarEvolution::ExitLimitCache::find(const Loop *L, Value *ExitCond, in find()
8894 void ScalarEvolution::ExitLimitCache::insert(const Loop *L, Value *ExitCond, in insert()
8909 ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromCondCached( in computeExitLimitFromCondCached()
8923 ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromCondImpl( in computeExitLimitFromCondImpl()
8985 std::optional<ScalarEvolution::ExitLimit>
8986 ScalarEvolution::computeExitLimitFromCondFromBinOp( in computeExitLimitFromCondFromBinOp()
9066 ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromICmp( in computeExitLimitFromICmp()
9094 ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromICmp( in computeExitLimitFromICmp()
9230 ScalarEvolution::ExitLimit
9231 ScalarEvolution::computeExitLimitFromSingleExitSwitch(const Loop *L, in computeExitLimitFromSingleExitSwitch()
9256 ScalarEvolution &SE) { in EvaluateConstantChrecAtConstant()
9264 ScalarEvolution::ExitLimit ScalarEvolution::computeShiftCompareExitLimit( in computeShiftCompareExitLimit()
9566 ScalarEvolution::getConstantEvolutionLoopExitValue(PHINode *PN, in getConstantEvolutionLoopExitValue()
9648 const SCEV *ScalarEvolution::computeExitCountExhaustively(const Loop *L, in computeExitCountExhaustively()
9715 const SCEV *ScalarEvolution::getSCEVAtScope(const SCEV *V, const Loop *L) { in getSCEVAtScope()
9803 ScalarEvolution::getWithOperands(const SCEV *S, in getWithOperands()
9838 const SCEV *ScalarEvolution::computeSCEVAtScope(const SCEV *V, const Loop *L) { in computeSCEVAtScope()
10036 const SCEV *ScalarEvolution::getSCEVAtScope(Value *V, const Loop *L) { in getSCEVAtScope()
10040 const SCEV *ScalarEvolution::stripInjectiveFunctions(const SCEV *S) const { in stripInjectiveFunctions()
10057 ScalarEvolution &SE) { in SolveLinEquationWithOverflow()
10207 SolveQuadraticAddRecExact(const SCEVAddRecExpr *AddRec, ScalarEvolution &SE) { in SolveQuadraticAddRecExact()
10241 const ConstantRange &Range, ScalarEvolution &SE) { in SolveQuadraticAddRecRange()
10368 ScalarEvolution::ExitLimit ScalarEvolution::howFarToZero(const SCEV *V, in howFarToZero()
10508 ScalarEvolution::ExitLimit
10509 ScalarEvolution::howFarToNonZero(const SCEV *V, const Loop *L) { in howFarToNonZero()
10528 ScalarEvolution::getPredecessorWithUniqueSuccessorForBB(const BasicBlock *BB) in getPredecessorWithUniqueSuccessorForBB()
10573 bool ScalarEvolution::SimplifyICmpOperands(ICmpInst::Predicate &Pred, in SimplifyICmpOperands()
10769 bool ScalarEvolution::isKnownNegative(const SCEV *S) { in isKnownNegative()
10773 bool ScalarEvolution::isKnownPositive(const SCEV *S) { in isKnownPositive()
10777 bool ScalarEvolution::isKnownNonNegative(const SCEV *S) { in isKnownNonNegative()
10781 bool ScalarEvolution::isKnownNonPositive(const SCEV *S) { in isKnownNonPositive()
10785 bool ScalarEvolution::isKnownNonZero(const SCEV *S) { in isKnownNonZero()
10794 ScalarEvolution::SplitIntoInitAndPostInc(const Loop *L, const SCEV *S) { in SplitIntoInitAndPostInc()
10805 bool ScalarEvolution::isKnownViaInduction(ICmpInst::Predicate Pred, in isKnownViaInduction()
10856 bool ScalarEvolution::isKnownPredicate(ICmpInst::Predicate Pred, in isKnownPredicate()
10871 std::optional<bool> ScalarEvolution::evaluatePredicate(ICmpInst::Predicate Pred, in evaluatePredicate()
10881 bool ScalarEvolution::isKnownPredicateAt(ICmpInst::Predicate Pred, in isKnownPredicateAt()
10890 ScalarEvolution::evaluatePredicateAt(ICmpInst::Predicate Pred, const SCEV *LHS, in evaluatePredicateAt()
10905 bool ScalarEvolution::isKnownOnEveryIteration(ICmpInst::Predicate Pred, in isKnownOnEveryIteration()
10913 std::optional<ScalarEvolution::MonotonicPredicateType>
10914 ScalarEvolution::getMonotonicPredicateType(const SCEVAddRecExpr *LHS, in getMonotonicPredicateType()
10933 std::optional<ScalarEvolution::MonotonicPredicateType>
10934 ScalarEvolution::getMonotonicPredicateTypeImpl(const SCEVAddRecExpr *LHS, in getMonotonicPredicateTypeImpl()
10976 std::optional<ScalarEvolution::LoopInvariantPredicate>
10977 ScalarEvolution::getLoopInvariantPredicate(ICmpInst::Predicate Pred, in getLoopInvariantPredicate()
11014 bool Increasing = *MonotonicType == ScalarEvolution::MonotonicallyIncreasing; in getLoopInvariantPredicate()
11018 return ScalarEvolution::LoopInvariantPredicate(Pred, ArLHS->getStart(), in getLoopInvariantPredicate()
11054 return ScalarEvolution::LoopInvariantPredicate(Pred, ArLHS->getStart(), in getLoopInvariantPredicate()
11062 std::optional<ScalarEvolution::LoopInvariantPredicate>
11063 ScalarEvolution::getLoopInvariantExitCondDuringFirstIterations( in getLoopInvariantExitCondDuringFirstIterations()
11082 std::optional<ScalarEvolution::LoopInvariantPredicate>
11083 ScalarEvolution::getLoopInvariantExitCondDuringFirstIterationsImpl( in getLoopInvariantExitCondDuringFirstIterationsImpl()
11143 return ScalarEvolution::LoopInvariantPredicate(Pred, Start, RHS); in getLoopInvariantExitCondDuringFirstIterationsImpl()
11146 bool ScalarEvolution::isKnownPredicateViaConstantRanges( in isKnownPredicateViaConstantRanges()
11188 bool ScalarEvolution::isKnownPredicateViaNoOverflow(ICmpInst::Predicate Pred, in isKnownPredicateViaNoOverflow()
11281 bool ScalarEvolution::isKnownPredicateViaSplitting(ICmpInst::Predicate Pred, in isKnownPredicateViaSplitting()
11303 bool ScalarEvolution::isImpliedViaGuard(const BasicBlock *BB, in isImpliedViaGuard()
11324 ScalarEvolution::isLoopBackedgeGuardedByCond(const Loop *L, in isLoopBackedgeGuardedByCond()
11429 bool ScalarEvolution::isBasicBlockEntryGuardedByCond(const BasicBlock *BB, in isBasicBlockEntryGuardedByCond()
11529 bool ScalarEvolution::isLoopEntryGuardedByCond(const Loop *L, in isLoopEntryGuardedByCond()
11550 bool ScalarEvolution::isImpliedCond(ICmpInst::Predicate Pred, const SCEV *LHS, in isImpliedCond()
11594 bool ScalarEvolution::isImpliedCond(ICmpInst::Predicate Pred, const SCEV *LHS, in isImpliedCond()
11649 bool ScalarEvolution::isImpliedCondBalancedTypes( in isImpliedCondBalancedTypes()
11853 bool ScalarEvolution::splitBinaryAdd(const SCEV *Expr, in splitBinaryAdd()
11867 ScalarEvolution::computeConstantDifference(const SCEV *More, const SCEV *Less) { in computeConstantDifference()
11925 bool ScalarEvolution::isImpliedCondOperandsViaAddRecStart( in isImpliedCondOperandsViaAddRecStart()
11970 bool ScalarEvolution::isImpliedCondOperandsViaNoOverflow( in isImpliedCondOperandsViaNoOverflow()
12047 bool ScalarEvolution::isImpliedViaMerge(ICmpInst::Predicate Pred, in isImpliedViaMerge()
12161 bool ScalarEvolution::isImpliedCondOperandsViaShift(ICmpInst::Predicate Pred, in isImpliedCondOperandsViaShift()
12203 bool ScalarEvolution::isImpliedCondOperands(ICmpInst::Predicate Pred, in isImpliedCondOperands()
12236 static bool IsKnownPredicateViaAddRecStart(ScalarEvolution &SE, in IsKnownPredicateViaAddRecStart()
12270 static bool IsKnownPredicateViaMinOrMax(ScalarEvolution &SE, in IsKnownPredicateViaMinOrMax()
12302 bool ScalarEvolution::isImpliedViaOperations(ICmpInst::Predicate Pred, in isImpliedViaOperations()
12503 ScalarEvolution::isKnownViaNonRecursiveReasoning(ICmpInst::Predicate Pred, in isKnownViaNonRecursiveReasoning()
12513 ScalarEvolution::isImpliedCondOperandsHelper(ICmpInst::Predicate Pred, in isImpliedCondOperandsHelper()
12557 bool ScalarEvolution::isImpliedCondOperandsViaRanges(ICmpInst::Predicate Pred, in isImpliedCondOperandsViaRanges()
12590 bool ScalarEvolution::canIVOverflowOnLT(const SCEV *RHS, const SCEV *Stride, in canIVOverflowOnLT()
12614 bool ScalarEvolution::canIVOverflowOnGT(const SCEV *RHS, const SCEV *Stride, in canIVOverflowOnGT()
12637 const SCEV *ScalarEvolution::getUDivCeilSCEV(const SCEV *N, const SCEV *D) { in getUDivCeilSCEV()
12646 const SCEV *ScalarEvolution::computeMaxBECountForLT(const SCEV *Start, in computeMaxBECountForLT()
12695 ScalarEvolution::ExitLimit
12696 ScalarEvolution::howManyLessThans(const SCEV *LHS, const SCEV *RHS, in howManyLessThans()
13130 ScalarEvolution::ExitLimit ScalarEvolution::howManyGreaterThans( in howManyGreaterThans()
13230 ScalarEvolution &SE) const { in getNumIterationsInRange()
13301 SCEVAddRecExpr::getPostIncExpr(ScalarEvolution &SE) const { in getPostIncExpr()
13326 bool ScalarEvolution::containsUndefs(const SCEV *S) const { in containsUndefs()
13335 bool ScalarEvolution::containsErasedValue(const SCEV *S) const { in containsErasedValue()
13344 const SCEV *ScalarEvolution::getElementSize(Instruction *Inst) { in getElementSize()
13361 void ScalarEvolution::SCEVCallbackVH::deleted() { in deleted()
13369 void ScalarEvolution::SCEVCallbackVH::allUsesReplacedWith(Value *V) { in allUsesReplacedWith()
13379 ScalarEvolution::SCEVCallbackVH::SCEVCallbackVH(Value *V, ScalarEvolution *se) in SCEVCallbackVH()
13386 ScalarEvolution::ScalarEvolution(Function &F, TargetLibraryInfo &TLI, in ScalarEvolution() function in ScalarEvolution
13407 ScalarEvolution::ScalarEvolution(ScalarEvolution &&Arg) in ScalarEvolution() function in ScalarEvolution
13438 ScalarEvolution::~ScalarEvolution() { in ~ScalarEvolution()
13461 bool ScalarEvolution::hasLoopInvariantBackedgeTakenCount(const Loop *L) { in hasLoopInvariantBackedgeTakenCount()
13465 static void PrintLoopInfo(raw_ostream &OS, ScalarEvolution *SE, in PrintLoopInfo()
13522 << *SE->getExitCount(L, ExitingBlock, ScalarEvolution::SymbolicMaximum) in PrintLoopInfo()
13550 raw_ostream &operator<<(raw_ostream &OS, ScalarEvolution::LoopDisposition LD) { in operator <<()
13552 case ScalarEvolution::LoopVariant: in operator <<()
13555 case ScalarEvolution::LoopInvariant: in operator <<()
13558 case ScalarEvolution::LoopComputable: in operator <<()
13565 raw_ostream &operator<<(raw_ostream &OS, ScalarEvolution::BlockDisposition BD) { in operator <<()
13567 case ScalarEvolution::DoesNotDominateBlock: in operator <<()
13570 case ScalarEvolution::DominatesBlock: in operator <<()
13573 case ScalarEvolution::ProperlyDominatesBlock: in operator <<()
13581 void ScalarEvolution::print(raw_ostream &OS) const { in print()
13588 ScalarEvolution &SE = *const_cast<ScalarEvolution *>(this); in print()
13671 ScalarEvolution::LoopDisposition
13672 ScalarEvolution::getLoopDisposition(const SCEV *S, const Loop *L) { in getLoopDisposition()
13690 ScalarEvolution::LoopDisposition
13691 ScalarEvolution::computeLoopDisposition(const SCEV *S, const Loop *L) { in computeLoopDisposition()
13762 bool ScalarEvolution::isLoopInvariant(const SCEV *S, const Loop *L) { in isLoopInvariant()
13766 bool ScalarEvolution::hasComputableLoopEvolution(const SCEV *S, const Loop *L) { in hasComputableLoopEvolution()
13770 ScalarEvolution::BlockDisposition
13771 ScalarEvolution::getBlockDisposition(const SCEV *S, const BasicBlock *BB) { in getBlockDisposition()
13789 ScalarEvolution::BlockDisposition
13790 ScalarEvolution::computeBlockDisposition(const SCEV *S, const BasicBlock *BB) { in computeBlockDisposition()
13845 bool ScalarEvolution::dominates(const SCEV *S, const BasicBlock *BB) { in dominates()
13849 bool ScalarEvolution::properlyDominates(const SCEV *S, const BasicBlock *BB) { in properlyDominates()
13853 bool ScalarEvolution::hasOperand(const SCEV *S, const SCEV *Op) const { in hasOperand()
13857 void ScalarEvolution::forgetBackedgeTakenCounts(const Loop *L, in forgetBackedgeTakenCounts()
13876 void ScalarEvolution::forgetMemoizedResults(ArrayRef<const SCEV *> SCEVs) { in forgetMemoizedResults()
13902 void ScalarEvolution::forgetMemoizedResultsImpl(const SCEV *S) { in forgetMemoizedResultsImpl()
13958 ScalarEvolution::getUsedLoops(const SCEV *S, in getUsedLoops()
13977 void ScalarEvolution::getReachableBlocks( in getReachableBlocks()
14014 void ScalarEvolution::verify() const { in verify()
14015 ScalarEvolution &SE = *const_cast<ScalarEvolution *>(this); in verify()
14016 ScalarEvolution SE2(F, TLI, AC, DT, LI); in verify()
14022 SCEVMapper(ScalarEvolution &SE) : SCEVRewriteVisitor<SCEVMapper>(SE) {} in verify()
14075 SCM.visit(It->second.getExact(L, const_cast<ScalarEvolution *>(this))); in verify()
14307 bool ScalarEvolution::invalidate( in invalidate()
14321 ScalarEvolution ScalarEvolutionAnalysis::run(Function &F, in run()
14327 return ScalarEvolution(F, TLI, AC, DT, LI); in run()
14363 SE.reset(new ScalarEvolution( in runOnFunction()
14392 const SCEVPredicate *ScalarEvolution::getEqualPredicate(const SCEV *LHS, in getEqualPredicate()
14398 ScalarEvolution::getComparePredicate(const ICmpInst::Predicate Pred, in getComparePredicate()
14417 const SCEVPredicate *ScalarEvolution::getWrapPredicate( in getWrapPredicate()
14447 static const SCEV *rewrite(const SCEV *S, const Loop *L, ScalarEvolution &SE, in rewrite()
14504 explicit SCEVPredicateRewriter(const Loop *L, ScalarEvolution &SE, in SCEVPredicateRewriter()
14558 ScalarEvolution::rewriteUsingPredicate(const SCEV *S, const Loop *L, in rewriteUsingPredicate()
14563 const SCEVAddRecExpr *ScalarEvolution::convertSCEVToAddRecWithPredicates( in convertSCEVToAddRecWithPredicates()
14634 if (ScalarEvolution::setFlags(ScevFlags, SCEV::FlagNSW) == ScevFlags) in isAlwaysTrue()
14651 ScalarEvolution &SE) { in getImpliedFlags()
14656 if (ScalarEvolution::setFlags(StaticFlags, SCEV::FlagNSW) == StaticFlags) in getImpliedFlags()
14659 if (ScalarEvolution::setFlags(StaticFlags, SCEV::FlagNUW) == StaticFlags) { in getImpliedFlags()
14706 PredicatedScalarEvolution::PredicatedScalarEvolution(ScalarEvolution &SE, in PredicatedScalarEvolution()
14713 void ScalarEvolution::registerUser(const SCEV *User, in registerUser()
14861 bool ScalarEvolution::matchURem(const SCEV *Expr, const SCEV *&LHS, in matchURem()
14915 ScalarEvolution::computeSymbolicMaxBackedgeTakenCount(const Loop *L) { in computeSymbolicMaxBackedgeTakenCount()
14925 getExitCount(L, ExitingBB, ScalarEvolution::SymbolicMaximum); in computeSymbolicMaxBackedgeTakenCount()
14945 SCEVLoopGuardRewriter(ScalarEvolution &SE, in SCEVLoopGuardRewriter()
15005 const SCEV *ScalarEvolution::applyLoopGuards(const SCEV *Expr, const Loop *L) { in applyLoopGuards()