Lines Matching refs:ScalarEvolution
461 const SCEV *ScalarEvolution::getConstant(ConstantInt *V) { in getConstant()
472 const SCEV *ScalarEvolution::getConstant(const APInt &Val) { in getConstant()
477 ScalarEvolution::getConstant(Type *Ty, uint64_t V, bool isSigned) { in getConstant()
925 ScalarEvolution &SE, in BinomialCoefficient()
1043 ScalarEvolution &SE) const { in evaluateAtIteration()
1049 const SCEV *It, ScalarEvolution &SE) { in evaluateAtIteration()
1069 const SCEV *ScalarEvolution::getLosslessPtrToIntExpr(const SCEV *Op, in getLosslessPtrToIntExpr()
1142 SCEVPtrToIntSinkingRewriter(ScalarEvolution &SE) : SCEVRewriteVisitor(SE) {} in getLosslessPtrToIntExpr()
1144 static const SCEV *rewrite(const SCEV *Scev, ScalarEvolution &SE) { in getLosslessPtrToIntExpr()
1193 const SCEV *ScalarEvolution::getPtrToIntExpr(const SCEV *Op, Type *Ty) { in getPtrToIntExpr()
1203 const SCEV *ScalarEvolution::getTruncateExpr(const SCEV *Op, Type *Ty, in getTruncateExpr()
1303 ScalarEvolution *SE) { in getSignedOverflowLimitForStep()
1323 ScalarEvolution *SE) { in getUnsignedOverflowLimitForStep()
1334 typedef const SCEV *(ScalarEvolution::*GetExtendExprTy)(const SCEV *, Type *,
1359 ScalarEvolution *SE) { in getOverflowLimitForStep()
1365 SCEVSignExtendExpr>::GetExtendExpr = &ScalarEvolution::getSignExtendExpr;
1375 ScalarEvolution *SE) { in getOverflowLimitForStep()
1381 SCEVZeroExtendExpr>::GetExtendExpr = &ScalarEvolution::getZeroExtendExpr;
1394 ScalarEvolution *SE, unsigned Depth) { in getPreStartForExtend()
1423 ScalarEvolution::maskFlags(SA->getNoWrapFlags(), SCEV::FlagNUW); in getPreStartForExtend()
1468 ScalarEvolution *SE, in getExtendAddRecStart()
1514 bool ScalarEvolution::proveNoWrapByVaryingStart(const SCEV *Start, in proveNoWrapByVaryingStart()
1561 static APInt extractConstantWithoutWrapping(ScalarEvolution &SE, in extractConstantWithoutWrapping()
1582 static APInt extractConstantWithoutWrapping(ScalarEvolution &SE, in extractConstantWithoutWrapping()
1594 ScalarEvolution::getZeroExtendExpr(const SCEV *Op, Type *Ty, unsigned Depth) { in getZeroExtendExpr()
1896 ScalarEvolution::getSignExtendExpr(const SCEV *Op, Type *Ty, unsigned Depth) { in getSignExtendExpr()
2133 const SCEV *ScalarEvolution::getCastExpr(SCEVTypes Kind, const SCEV *Op, in getCastExpr()
2151 const SCEV *ScalarEvolution::getAnyExtendExpr(const SCEV *Op, in getAnyExtendExpr()
2227 ScalarEvolution &SE) { in CollectAddOperandsWithScales()
2287 bool ScalarEvolution::willNotOverflow(Instruction::BinaryOps BinOp, bool Signed, in willNotOverflow()
2289 const SCEV *(ScalarEvolution::*Operation)(const SCEV *, const SCEV *, in willNotOverflow()
2295 Operation = &ScalarEvolution::getAddExpr; in willNotOverflow()
2298 Operation = &ScalarEvolution::getMinusSCEV; in willNotOverflow()
2301 Operation = &ScalarEvolution::getMulExpr; in willNotOverflow()
2305 const SCEV *(ScalarEvolution::*Extension)(const SCEV *, Type *, unsigned) = in willNotOverflow()
2306 Signed ? &ScalarEvolution::getSignExtendExpr in willNotOverflow()
2307 : &ScalarEvolution::getZeroExtendExpr; in willNotOverflow()
2323 ScalarEvolution::getStrengthenedNoWrapFlagsFromBinOp( in getStrengthenedNoWrapFlagsFromBinOp()
2332 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in getStrengthenedNoWrapFlagsFromBinOp()
2334 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW); in getStrengthenedNoWrapFlagsFromBinOp()
2349 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in getStrengthenedNoWrapFlagsFromBinOp()
2356 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW); in getStrengthenedNoWrapFlagsFromBinOp()
2369 StrengthenNoWrapFlags(ScalarEvolution *SE, SCEVTypes Type, in StrengthenNoWrapFlags()
2383 ScalarEvolution::maskFlags(Flags, SignOrUnsignMask); in StrengthenNoWrapFlags()
2392 ScalarEvolution::setFlags(Flags, (SCEV::NoWrapFlags)SignOrUnsignMask); in StrengthenNoWrapFlags()
2394 SignOrUnsignWrap = ScalarEvolution::maskFlags(Flags, SignOrUnsignMask); in StrengthenNoWrapFlags()
2418 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW); in StrengthenNoWrapFlags()
2426 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in StrengthenNoWrapFlags()
2432 if (Type == scAddRecExpr && ScalarEvolution::hasFlags(Flags, SCEV::FlagNW) && in StrengthenNoWrapFlags()
2433 !ScalarEvolution::hasFlags(Flags, SCEV::FlagNUW) && Ops.size() == 2 && in StrengthenNoWrapFlags()
2435 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in StrengthenNoWrapFlags()
2438 if (Type == scMulExpr && !ScalarEvolution::hasFlags(Flags, SCEV::FlagNUW) && in StrengthenNoWrapFlags()
2442 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in StrengthenNoWrapFlags()
2445 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in StrengthenNoWrapFlags()
2451 bool ScalarEvolution::isAvailableAtLoopEntry(const SCEV *S, const Loop *L) { in isAvailableAtLoopEntry()
2456 const SCEV *ScalarEvolution::getAddExpr(SmallVectorImpl<const SCEV *> &Ops, in getAddExpr()
2620 if (ScalarEvolution::hasFlags(AddFlags, SCEV::FlagNUW) && in getAddExpr()
2623 ScalarEvolution::setFlags(PreservedFlags, SCEV::FlagNUW); in getAddExpr()
2628 if (ScalarEvolution::hasFlags(AddFlags, SCEV::FlagNSW) && in getAddExpr()
2632 ScalarEvolution::setFlags(PreservedFlags, SCEV::FlagNSW); in getAddExpr()
2931 ScalarEvolution::getOrCreateAddExpr(ArrayRef<const SCEV *> Ops, in getOrCreateAddExpr()
2953 ScalarEvolution::getOrCreateAddRecExpr(ArrayRef<const SCEV *> Ops, in getOrCreateAddRecExpr()
2977 ScalarEvolution::getOrCreateMulExpr(ArrayRef<const SCEV *> Ops, in getOrCreateMulExpr()
3053 const SCEV *ScalarEvolution::getMulExpr(SmallVectorImpl<const SCEV *> &Ops, in getMulExpr()
3319 const SCEV *ScalarEvolution::getURemExpr(const SCEV *LHS, in getURemExpr()
3348 const SCEV *ScalarEvolution::getUDivExpr(const SCEV *LHS, in getUDivExpr()
3520 const SCEV *ScalarEvolution::getUDivExactExpr(const SCEV *LHS, in getUDivExactExpr()
3574 const SCEV *ScalarEvolution::getAddRecExpr(const SCEV *Start, const SCEV *Step, in getAddRecExpr()
3592 ScalarEvolution::getAddRecExpr(SmallVectorImpl<const SCEV *> &Operands, in getAddRecExpr()
3669 ScalarEvolution::getGEPExpr(GEPOperator *GEP, in getGEPExpr()
3743 SCEV *ScalarEvolution::findExistingSCEVInCache(SCEVTypes SCEVType, in findExistingSCEVInCache()
3753 const SCEV *ScalarEvolution::getAbsExpr(const SCEV *Op, bool IsNSW) { in getAbsExpr()
3758 const SCEV *ScalarEvolution::getMinMaxExpr(SCEVTypes Kind, in getMinMaxExpr()
3905 ScalarEvolution &SE;
3947 SCEVSequentialMinMaxDeduplicatingVisitor(ScalarEvolution &SE, in SCEVSequentialMinMaxDeduplicatingVisitor()
4072 ScalarEvolution::getSequentialMinMaxExpr(SCEVTypes Kind, in getSequentialMinMaxExpr()
4181 const SCEV *ScalarEvolution::getSMaxExpr(const SCEV *LHS, const SCEV *RHS) { in getSMaxExpr()
4186 const SCEV *ScalarEvolution::getSMaxExpr(SmallVectorImpl<const SCEV *> &Ops) { in getSMaxExpr()
4190 const SCEV *ScalarEvolution::getUMaxExpr(const SCEV *LHS, const SCEV *RHS) { in getUMaxExpr()
4195 const SCEV *ScalarEvolution::getUMaxExpr(SmallVectorImpl<const SCEV *> &Ops) { in getUMaxExpr()
4199 const SCEV *ScalarEvolution::getSMinExpr(const SCEV *LHS, in getSMinExpr()
4205 const SCEV *ScalarEvolution::getSMinExpr(SmallVectorImpl<const SCEV *> &Ops) { in getSMinExpr()
4209 const SCEV *ScalarEvolution::getUMinExpr(const SCEV *LHS, const SCEV *RHS, in getUMinExpr()
4215 const SCEV *ScalarEvolution::getUMinExpr(SmallVectorImpl<const SCEV *> &Ops, in getUMinExpr()
4222 ScalarEvolution::getSizeOfScalableVectorExpr(Type *IntTy, in getSizeOfScalableVectorExpr()
4233 const SCEV *ScalarEvolution::getSizeOfExpr(Type *IntTy, Type *AllocTy) { in getSizeOfExpr()
4242 const SCEV *ScalarEvolution::getStoreSizeOfExpr(Type *IntTy, Type *StoreTy) { in getStoreSizeOfExpr()
4251 const SCEV *ScalarEvolution::getOffsetOfExpr(Type *IntTy, in getOffsetOfExpr()
4261 const SCEV *ScalarEvolution::getUnknown(Value *V) { in getUnknown()
4291 bool ScalarEvolution::isSCEVable(Type *Ty) const { in isSCEVable()
4298 uint64_t ScalarEvolution::getTypeSizeInBits(Type *Ty) const { in getTypeSizeInBits()
4308 Type *ScalarEvolution::getEffectiveSCEVType(Type *Ty) const { in getEffectiveSCEVType()
4319 Type *ScalarEvolution::getWiderType(Type *T1, Type *T2) const { in getWiderType()
4323 bool ScalarEvolution::instructionCouldExistWitthOperands(const SCEV *A, in instructionCouldExistWitthOperands()
4338 const SCEV *ScalarEvolution::getCouldNotCompute() { in getCouldNotCompute()
4342 bool ScalarEvolution::checkValidity(const SCEV *S) const { in checkValidity()
4351 bool ScalarEvolution::containsAddRecurrence(const SCEV *S) { in containsAddRecurrence()
4364 ArrayRef<Value *> ScalarEvolution::getSCEVValues(const SCEV *S) { in getSCEVValues()
4381 void ScalarEvolution::eraseValueFromMap(Value *V) { in eraseValueFromMap()
4392 void ScalarEvolution::insertValueToMap(Value *V, const SCEV *S) { in insertValueToMap()
4405 const SCEV *ScalarEvolution::getSCEV(Value *V) { in getSCEV()
4413 const SCEV *ScalarEvolution::getExistingSCEV(Value *V) { in getExistingSCEV()
4427 const SCEV *ScalarEvolution::getNegativeSCEV(const SCEV *V, in getNegativeSCEV()
4454 const SCEV *ScalarEvolution::getNotSCEV(const SCEV *V) { in getNotSCEV()
4483 const SCEV *ScalarEvolution::removePointerBase(const SCEV *P) { in removePointerBase()
4513 const SCEV *ScalarEvolution::getMinusSCEV(const SCEV *LHS, const SCEV *RHS, in getMinusSCEV()
4563 const SCEV *ScalarEvolution::getTruncateOrZeroExtend(const SCEV *V, Type *Ty, in getTruncateOrZeroExtend()
4575 const SCEV *ScalarEvolution::getTruncateOrSignExtend(const SCEV *V, Type *Ty, in getTruncateOrSignExtend()
4588 ScalarEvolution::getNoopOrZeroExtend(const SCEV *V, Type *Ty) { in getNoopOrZeroExtend()
4600 ScalarEvolution::getNoopOrSignExtend(const SCEV *V, Type *Ty) { in getNoopOrSignExtend()
4612 ScalarEvolution::getNoopOrAnyExtend(const SCEV *V, Type *Ty) { in getNoopOrAnyExtend()
4624 ScalarEvolution::getTruncateOrNoop(const SCEV *V, Type *Ty) { in getTruncateOrNoop()
4635 const SCEV *ScalarEvolution::getUMaxFromMismatchedTypes(const SCEV *LHS, in getUMaxFromMismatchedTypes()
4648 const SCEV *ScalarEvolution::getUMinFromMismatchedTypes(const SCEV *LHS, in getUMinFromMismatchedTypes()
4656 ScalarEvolution::getUMinFromMismatchedTypes(SmallVectorImpl<const SCEV *> &Ops, in getUMinFromMismatchedTypes()
4681 const SCEV *ScalarEvolution::getPointerBase(const SCEV *V) { in getPointerBase()
4725 static const SCEV *rewrite(const SCEV *S, const Loop *L, ScalarEvolution &SE, in rewrite()
4755 explicit SCEVInitRewriter(const Loop *L, ScalarEvolution &SE) in SCEVInitRewriter()
4769 static const SCEV *rewrite(const SCEV *S, const Loop *L, ScalarEvolution &SE) { in rewrite()
4796 explicit SCEVPostIncRewriter(const Loop *L, ScalarEvolution &SE) in SCEVPostIncRewriter()
4811 ScalarEvolution &SE) { in rewrite()
4859 bool IsPosBECond, ScalarEvolution &SE) in SCEVBackedgeConditionFolder()
4887 ScalarEvolution &SE) { in rewrite()
4910 explicit SCEVShiftRewriter(const Loop *L, ScalarEvolution &SE) in SCEVShiftRewriter()
4920 ScalarEvolution::proveNoWrapViaConstantRanges(const SCEVAddRecExpr *AR) { in proveNoWrapViaConstantRanges()
4935 Result = ScalarEvolution::setFlags(Result, SCEV::FlagNSW); in proveNoWrapViaConstantRanges()
4945 Result = ScalarEvolution::setFlags(Result, SCEV::FlagNUW); in proveNoWrapViaConstantRanges()
4952 ScalarEvolution::proveNoSignedWrapViaInduction(const SCEVAddRecExpr *AR) { in proveNoSignedWrapViaInduction()
5001 ScalarEvolution::proveNoUnsignedWrapViaInduction(const SCEVAddRecExpr *AR) { in proveNoUnsignedWrapViaInduction()
5182 bool &Signed, ScalarEvolution &SE) { in isSimpleCastedPHI()
5280 ScalarEvolution::createAddRecFromPHIWithCastsImpl(const SCEVUnknown *SymbolicPHI) { in createAddRecFromPHIWithCastsImpl()
5491 ScalarEvolution::createAddRecFromPHIWithCasts(const SCEVUnknown *SymbolicPHI) { in createAddRecFromPHIWithCasts()
5555 const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN, in createSimpleAffineAddRec()
5601 const SCEV *ScalarEvolution::createAddRecFromPHI(PHINode *PN) { in createAddRecFromPHI()
5874 const SCEV *ScalarEvolution::createNodeFromSelectLikePHI(PHINode *PN) { in createNodeFromSelectLikePHI()
5913 const SCEV *ScalarEvolution::createNodeForPHI(PHINode *PN) { in createNodeForPHI()
5968 const SCEV *ScalarEvolution::createNodeForSelectOrPHIInstWithICmpInstCond( in createNodeForSelectOrPHIInstWithICmpInstCond()
6073 createNodeForSelectViaUMinSeq(ScalarEvolution *SE, const SCEV *CondExpr, in createNodeForSelectViaUMinSeq()
6105 static Optional<const SCEV *> createNodeForSelectViaUMinSeq(ScalarEvolution *SE, in createNodeForSelectViaUMinSeq()
6118 const SCEV *ScalarEvolution::createNodeForSelectOrPHIViaUMinSeq( in createNodeForSelectOrPHIViaUMinSeq()
6136 const SCEV *ScalarEvolution::createNodeForSelectOrPHI(Value *V, Value *Cond, in createNodeForSelectOrPHI()
6158 const SCEV *ScalarEvolution::createNodeForGEP(GEPOperator *GEP) { in createNodeForGEP()
6168 uint32_t ScalarEvolution::GetMinTrailingZerosImpl(const SCEV *S) { in GetMinTrailingZerosImpl()
6246 uint32_t ScalarEvolution::GetMinTrailingZeros(const SCEV *S) { in GetMinTrailingZeros()
6266 void ScalarEvolution::setNoWrapFlags(SCEVAddRecExpr *AddRec, in setNoWrapFlags()
6275 ConstantRange ScalarEvolution::
6398 ScalarEvolution::getRangeRef(const SCEV *S, in getRangeRef()
6399 ScalarEvolution::RangeSignHint SignHint) { in getRangeRef()
6401 SignHint == ScalarEvolution::HINT_RANGE_UNSIGNED ? UnsignedRanges in getRangeRef()
6404 SignHint == ScalarEvolution::HINT_RANGE_UNSIGNED in getRangeRef()
6423 if (SignHint == ScalarEvolution::HINT_RANGE_UNSIGNED) in getRangeRef()
6736 ConstantRange ScalarEvolution::getRangeForAffineAR(const SCEV *Start, in getRangeForAffineAR()
6769 ConstantRange ScalarEvolution::getRangeForAffineNoSelfWrappingAR( in getRangeForAffineNoSelfWrappingAR()
6771 ScalarEvolution::RangeSignHint SignHint) { in getRangeForAffineNoSelfWrappingAR()
6837 ConstantRange ScalarEvolution::getRangeViaFactoring(const SCEV *Start, in getRangeViaFactoring()
6849 explicit SelectPattern(ScalarEvolution &SE, unsigned BitWidth, in getRangeViaFactoring()
6952 SCEV::NoWrapFlags ScalarEvolution::getNoWrapFlagsFromUB(const Value *V) { in getNoWrapFlagsFromUB()
6959 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW); in getNoWrapFlagsFromUB()
6961 Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW); in getNoWrapFlagsFromUB()
6969 ScalarEvolution::getNonTrivialDefiningScopeBound(const SCEV *S) { in getNonTrivialDefiningScopeBound()
6999 ScalarEvolution::getDefiningScopeBound(ArrayRef<const SCEV *> Ops, in getDefiningScopeBound()
7036 ScalarEvolution::getDefiningScopeBound(ArrayRef<const SCEV *> Ops) { in getDefiningScopeBound()
7041 bool ScalarEvolution::isGuaranteedToTransferExecutionTo(const Instruction *A, in isGuaranteedToTransferExecutionTo()
7060 bool ScalarEvolution::isSCEVExprNeverPoison(const Instruction *I) { in isSCEVExprNeverPoison()
7087 bool ScalarEvolution::isAddRecNeverPoison(const Instruction *I, const Loop *L) { in isAddRecNeverPoison()
7149 ScalarEvolution::LoopProperties
7150 ScalarEvolution::getLoopProperties(const Loop *L) { in getLoopProperties()
7151 using LoopProperties = ScalarEvolution::LoopProperties; in getLoopProperties()
7183 bool ScalarEvolution::loopIsFiniteByAssumption(const Loop *L) { in loopIsFiniteByAssumption()
7190 const SCEV *ScalarEvolution::createSCEVIter(Value *V) { in createSCEVIter()
7232 ScalarEvolution::getOperandsToCreate(Value *V, SmallVectorImpl<Value *> &Ops) { in getOperandsToCreate()
7425 const SCEV *ScalarEvolution::createSCEV(Value *V) { in createSCEV()
7883 const SCEV *ScalarEvolution::getTripCountFromExitCount(const SCEV *ExitCount, in getTripCountFromExitCount()
7914 unsigned ScalarEvolution::getSmallConstantTripCount(const Loop *L) { in getSmallConstantTripCount()
7920 ScalarEvolution::getSmallConstantTripCount(const Loop *L, in getSmallConstantTripCount()
7930 unsigned ScalarEvolution::getSmallConstantMaxTripCount(const Loop *L) { in getSmallConstantMaxTripCount()
7936 const SCEV *ScalarEvolution::getConstantMaxTripCountFromArray(const Loop *L) { in getConstantMaxTripCountFromArray()
8056 unsigned ScalarEvolution::getSmallConstantTripMultiple(const Loop *L) { in getSmallConstantTripMultiple()
8070 unsigned ScalarEvolution::getSmallConstantTripMultiple(const Loop *L, in getSmallConstantTripMultiple()
8111 ScalarEvolution::getSmallConstantTripMultiple(const Loop *L, in getSmallConstantTripMultiple()
8120 const SCEV *ScalarEvolution::getExitCount(const Loop *L, in getExitCount()
8134 ScalarEvolution::getPredicatedBackedgeTakenCount(const Loop *L, in getPredicatedBackedgeTakenCount()
8139 const SCEV *ScalarEvolution::getBackedgeTakenCount(const Loop *L, in getBackedgeTakenCount()
8152 bool ScalarEvolution::isBackedgeTakenCountMaxOrZero(const Loop *L) { in isBackedgeTakenCountMaxOrZero()
8168 const ScalarEvolution::BackedgeTakenInfo &
8169 ScalarEvolution::getPredicatedBackedgeTakenInfo(const Loop *L) { in getPredicatedBackedgeTakenInfo()
8185 ScalarEvolution::BackedgeTakenInfo &
8186 ScalarEvolution::getBackedgeTakenInfo(const Loop *L) { in getBackedgeTakenInfo()
8245 void ScalarEvolution::forgetAllLoops() { in forgetAllLoops()
8269 void ScalarEvolution::forgetLoop(const Loop *L) { in forgetLoop()
8325 void ScalarEvolution::forgetTopmostLoop(const Loop *L) { in forgetTopmostLoop()
8329 void ScalarEvolution::forgetValue(Value *V) { in forgetValue()
8356 void ScalarEvolution::forgetLoopDispositions(const Loop *L) { in forgetLoopDispositions()
8367 ScalarEvolution::BackedgeTakenInfo::getExact(const Loop *L, ScalarEvolution *SE, in getExact()
8406 ScalarEvolution::BackedgeTakenInfo::getExact(const BasicBlock *ExitingBlock, in getExact()
8407 ScalarEvolution *SE) const { in getExact()
8415 const SCEV *ScalarEvolution::BackedgeTakenInfo::getConstantMax( in getConstantMax()
8416 const BasicBlock *ExitingBlock, ScalarEvolution *SE) const { in getConstantMax()
8426 ScalarEvolution::BackedgeTakenInfo::getConstantMax(ScalarEvolution *SE) const { in getConstantMax()
8441 ScalarEvolution::BackedgeTakenInfo::getSymbolicMax(const Loop *L, in getSymbolicMax()
8442 ScalarEvolution *SE) { in getSymbolicMax()
8448 bool ScalarEvolution::BackedgeTakenInfo::isConstantMaxOrZero( in isConstantMaxOrZero()
8449 ScalarEvolution *SE) const { in isConstantMaxOrZero()
8456 ScalarEvolution::ExitLimit::ExitLimit(const SCEV *E) in ExitLimit()
8460 ScalarEvolution::ExitLimit::ExitLimit( in ExitLimit()
8485 ScalarEvolution::ExitLimit::ExitLimit( in ExitLimit()
8491 ScalarEvolution::ExitLimit::ExitLimit(const SCEV *E, const SCEV *M, in ExitLimit()
8498 ScalarEvolution::BackedgeTakenInfo::BackedgeTakenInfo( in BackedgeTakenInfo()
8499 ArrayRef<ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo> ExitCounts, in BackedgeTakenInfo()
8502 using EdgeExitInfo = ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo; in BackedgeTakenInfo()
8519 ScalarEvolution::BackedgeTakenInfo
8520 ScalarEvolution::computeBackedgeTakenCount(const Loop *L, in computeBackedgeTakenCount()
8525 using EdgeExitInfo = ScalarEvolution::BackedgeTakenInfo::EdgeExitInfo; in computeBackedgeTakenCount()
8608 ScalarEvolution::ExitLimit
8609 ScalarEvolution::computeExitLimit(const Loop *L, BasicBlock *ExitingBlock, in computeExitLimit()
8648 ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromCond( in computeExitLimitFromCond()
8651 ScalarEvolution::ExitLimitCacheTy Cache(L, ExitIfTrue, AllowPredicates); in computeExitLimitFromCond()
8656 Optional<ScalarEvolution::ExitLimit>
8657 ScalarEvolution::ExitLimitCache::find(const Loop *L, Value *ExitCond, in find()
8673 void ScalarEvolution::ExitLimitCache::insert(const Loop *L, Value *ExitCond, in insert()
8688 ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromCondCached( in computeExitLimitFromCondCached()
8702 ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromCondImpl( in computeExitLimitFromCondImpl()
8763 Optional<ScalarEvolution::ExitLimit>
8764 ScalarEvolution::computeExitLimitFromCondFromBinOp( in computeExitLimitFromCondFromBinOp()
8832 ScalarEvolution::ExitLimit
8833 ScalarEvolution::computeExitLimitFromICmp(const Loop *L, in computeExitLimitFromICmp()
8862 ScalarEvolution::ExitLimit
8863 ScalarEvolution::computeExitLimitFromICmp(const Loop *L, in computeExitLimitFromICmp()
8983 ScalarEvolution::ExitLimit
8984 ScalarEvolution::computeExitLimitFromSingleExitSwitch(const Loop *L, in computeExitLimitFromSingleExitSwitch()
9009 ScalarEvolution &SE) { in EvaluateConstantChrecAtConstant()
9017 ScalarEvolution::ExitLimit ScalarEvolution::computeShiftCompareExitLimit( in computeShiftCompareExitLimit()
9319 ScalarEvolution::getConstantEvolutionLoopExitValue(PHINode *PN, in getConstantEvolutionLoopExitValue()
9401 const SCEV *ScalarEvolution::computeExitCountExhaustively(const Loop *L, in computeExitCountExhaustively()
9468 const SCEV *ScalarEvolution::getSCEVAtScope(const SCEV *V, const Loop *L) { in getSCEVAtScope()
9578 const SCEV *ScalarEvolution::computeSCEVAtScope(const SCEV *V, const Loop *L) { in computeSCEVAtScope()
9790 const SCEV *ScalarEvolution::getSCEVAtScope(Value *V, const Loop *L) { in getSCEVAtScope()
9794 const SCEV *ScalarEvolution::stripInjectiveFunctions(const SCEV *S) const { in stripInjectiveFunctions()
9811 ScalarEvolution &SE) { in SolveLinEquationWithOverflow()
9959 SolveQuadraticAddRecExact(const SCEVAddRecExpr *AddRec, ScalarEvolution &SE) { in SolveQuadraticAddRecExact()
9992 const ConstantRange &Range, ScalarEvolution &SE) { in SolveQuadraticAddRecRange()
10118 ScalarEvolution::ExitLimit
10119 ScalarEvolution::howFarToZero(const SCEV *V, const Loop *L, bool ControlsExit, in howFarToZero()
10252 ScalarEvolution::ExitLimit
10253 ScalarEvolution::howFarToNonZero(const SCEV *V, const Loop *L) { in howFarToNonZero()
10272 ScalarEvolution::getPredecessorWithUniqueSuccessorForBB(const BasicBlock *BB) in getPredecessorWithUniqueSuccessorForBB()
10317 bool ScalarEvolution::SimplifyICmpOperands(ICmpInst::Predicate &Pred, in SimplifyICmpOperands()
10521 bool ScalarEvolution::isKnownNegative(const SCEV *S) { in isKnownNegative()
10525 bool ScalarEvolution::isKnownPositive(const SCEV *S) { in isKnownPositive()
10529 bool ScalarEvolution::isKnownNonNegative(const SCEV *S) { in isKnownNonNegative()
10533 bool ScalarEvolution::isKnownNonPositive(const SCEV *S) { in isKnownNonPositive()
10537 bool ScalarEvolution::isKnownNonZero(const SCEV *S) { in isKnownNonZero()
10542 ScalarEvolution::SplitIntoInitAndPostInc(const Loop *L, const SCEV *S) { in SplitIntoInitAndPostInc()
10553 bool ScalarEvolution::isKnownViaInduction(ICmpInst::Predicate Pred, in isKnownViaInduction()
10604 bool ScalarEvolution::isKnownPredicate(ICmpInst::Predicate Pred, in isKnownPredicate()
10619 Optional<bool> ScalarEvolution::evaluatePredicate(ICmpInst::Predicate Pred, in evaluatePredicate()
10629 bool ScalarEvolution::isKnownPredicateAt(ICmpInst::Predicate Pred, in isKnownPredicateAt()
10637 Optional<bool> ScalarEvolution::evaluatePredicateAt(ICmpInst::Predicate Pred, in evaluatePredicateAt()
10654 bool ScalarEvolution::isKnownOnEveryIteration(ICmpInst::Predicate Pred, in isKnownOnEveryIteration()
10662 Optional<ScalarEvolution::MonotonicPredicateType>
10663 ScalarEvolution::getMonotonicPredicateType(const SCEVAddRecExpr *LHS, in getMonotonicPredicateType()
10683 Optional<ScalarEvolution::MonotonicPredicateType>
10684 ScalarEvolution::getMonotonicPredicateTypeImpl(const SCEVAddRecExpr *LHS, in getMonotonicPredicateTypeImpl()
10727 Optional<ScalarEvolution::LoopInvariantPredicate>
10728 ScalarEvolution::getLoopInvariantPredicate(ICmpInst::Predicate Pred, in getLoopInvariantPredicate()
10765 bool Increasing = *MonotonicType == ScalarEvolution::MonotonicallyIncreasing; in getLoopInvariantPredicate()
10771 return ScalarEvolution::LoopInvariantPredicate(Pred, ArLHS->getStart(), RHS); in getLoopInvariantPredicate()
10774 Optional<ScalarEvolution::LoopInvariantPredicate>
10775 ScalarEvolution::getLoopInvariantExitCondDuringFirstIterations( in getLoopInvariantExitCondDuringFirstIterations()
10835 return ScalarEvolution::LoopInvariantPredicate(Pred, Start, RHS); in getLoopInvariantExitCondDuringFirstIterations()
10838 bool ScalarEvolution::isKnownPredicateViaConstantRanges( in isKnownPredicateViaConstantRanges()
10880 bool ScalarEvolution::isKnownPredicateViaNoOverflow(ICmpInst::Predicate Pred, in isKnownPredicateViaNoOverflow()
10973 bool ScalarEvolution::isKnownPredicateViaSplitting(ICmpInst::Predicate Pred, in isKnownPredicateViaSplitting()
10995 bool ScalarEvolution::isImpliedViaGuard(const BasicBlock *BB, in isImpliedViaGuard()
11016 ScalarEvolution::isLoopBackedgeGuardedByCond(const Loop *L, in isLoopBackedgeGuardedByCond()
11121 bool ScalarEvolution::isBasicBlockEntryGuardedByCond(const BasicBlock *BB, in isBasicBlockEntryGuardedByCond()
11221 bool ScalarEvolution::isLoopEntryGuardedByCond(const Loop *L, in isLoopEntryGuardedByCond()
11242 bool ScalarEvolution::isImpliedCond(ICmpInst::Predicate Pred, const SCEV *LHS, in isImpliedCond()
11286 bool ScalarEvolution::isImpliedCond(ICmpInst::Predicate Pred, const SCEV *LHS, in isImpliedCond()
11341 bool ScalarEvolution::isImpliedCondBalancedTypes( in isImpliedCondBalancedTypes()
11542 bool ScalarEvolution::splitBinaryAdd(const SCEV *Expr, in splitBinaryAdd()
11555 Optional<APInt> ScalarEvolution::computeConstantDifference(const SCEV *More, in computeConstantDifference()
11614 bool ScalarEvolution::isImpliedCondOperandsViaAddRecStart( in isImpliedCondOperandsViaAddRecStart()
11659 bool ScalarEvolution::isImpliedCondOperandsViaNoOverflow( in isImpliedCondOperandsViaNoOverflow()
11736 bool ScalarEvolution::isImpliedViaMerge(ICmpInst::Predicate Pred, in isImpliedViaMerge()
11850 bool ScalarEvolution::isImpliedCondOperandsViaShift(ICmpInst::Predicate Pred, in isImpliedCondOperandsViaShift()
11892 bool ScalarEvolution::isImpliedCondOperands(ICmpInst::Predicate Pred, in isImpliedCondOperands()
11925 static bool IsKnownPredicateViaAddRecStart(ScalarEvolution &SE, in IsKnownPredicateViaAddRecStart()
11959 static bool IsKnownPredicateViaMinOrMax(ScalarEvolution &SE, in IsKnownPredicateViaMinOrMax()
11991 bool ScalarEvolution::isImpliedViaOperations(ICmpInst::Predicate Pred, in isImpliedViaOperations()
12192 ScalarEvolution::isKnownViaNonRecursiveReasoning(ICmpInst::Predicate Pred, in isKnownViaNonRecursiveReasoning()
12202 ScalarEvolution::isImpliedCondOperandsHelper(ICmpInst::Predicate Pred, in isImpliedCondOperandsHelper()
12246 bool ScalarEvolution::isImpliedCondOperandsViaRanges(ICmpInst::Predicate Pred, in isImpliedCondOperandsViaRanges()
12278 bool ScalarEvolution::canIVOverflowOnLT(const SCEV *RHS, const SCEV *Stride, in canIVOverflowOnLT()
12302 bool ScalarEvolution::canIVOverflowOnGT(const SCEV *RHS, const SCEV *Stride, in canIVOverflowOnGT()
12325 const SCEV *ScalarEvolution::getUDivCeilSCEV(const SCEV *N, const SCEV *D) { in getUDivCeilSCEV()
12334 const SCEV *ScalarEvolution::computeMaxBECountForLT(const SCEV *Start, in computeMaxBECountForLT()
12383 ScalarEvolution::ExitLimit
12384 ScalarEvolution::howManyLessThans(const SCEV *LHS, const SCEV *RHS, in howManyLessThans()
12813 ScalarEvolution::ExitLimit
12814 ScalarEvolution::howManyGreaterThans(const SCEV *LHS, const SCEV *RHS, in howManyGreaterThans()
12910 ScalarEvolution &SE) const { in getNumIterationsInRange()
12981 SCEVAddRecExpr::getPostIncExpr(ScalarEvolution &SE) const { in getPostIncExpr()
13006 bool ScalarEvolution::containsUndefs(const SCEV *S) const { in containsUndefs()
13015 bool ScalarEvolution::containsErasedValue(const SCEV *S) const { in containsErasedValue()
13024 const SCEV *ScalarEvolution::getElementSize(Instruction *Inst) { in getElementSize()
13041 void ScalarEvolution::SCEVCallbackVH::deleted() { in deleted()
13049 void ScalarEvolution::SCEVCallbackVH::allUsesReplacedWith(Value *V) { in allUsesReplacedWith()
13078 ScalarEvolution::SCEVCallbackVH::SCEVCallbackVH(Value *V, ScalarEvolution *se) in SCEVCallbackVH()
13085 ScalarEvolution::ScalarEvolution(Function &F, TargetLibraryInfo &TLI, in ScalarEvolution() function in ScalarEvolution
13106 ScalarEvolution::ScalarEvolution(ScalarEvolution &&Arg) in ScalarEvolution() function in ScalarEvolution
13137 ScalarEvolution::~ScalarEvolution() { in ~ScalarEvolution()
13160 bool ScalarEvolution::hasLoopInvariantBackedgeTakenCount(const Loop *L) { in hasLoopInvariantBackedgeTakenCount()
13164 static void PrintLoopInfo(raw_ostream &OS, ScalarEvolution *SE, in PrintLoopInfo()
13227 static StringRef loopDispositionToStr(ScalarEvolution::LoopDisposition LD) { in loopDispositionToStr()
13229 case ScalarEvolution::LoopVariant: in loopDispositionToStr()
13231 case ScalarEvolution::LoopInvariant: in loopDispositionToStr()
13233 case ScalarEvolution::LoopComputable: in loopDispositionToStr()
13239 void ScalarEvolution::print(raw_ostream &OS) const { in print()
13246 ScalarEvolution &SE = *const_cast<ScalarEvolution *>(this); in print()
13329 ScalarEvolution::LoopDisposition
13330 ScalarEvolution::getLoopDisposition(const SCEV *S, const Loop *L) { in getLoopDisposition()
13348 ScalarEvolution::LoopDisposition
13349 ScalarEvolution::computeLoopDisposition(const SCEV *S, const Loop *L) { in computeLoopDisposition()
13430 bool ScalarEvolution::isLoopInvariant(const SCEV *S, const Loop *L) { in isLoopInvariant()
13434 bool ScalarEvolution::hasComputableLoopEvolution(const SCEV *S, const Loop *L) { in hasComputableLoopEvolution()
13438 ScalarEvolution::BlockDisposition
13439 ScalarEvolution::getBlockDisposition(const SCEV *S, const BasicBlock *BB) { in getBlockDisposition()
13457 ScalarEvolution::BlockDisposition
13458 ScalarEvolution::computeBlockDisposition(const SCEV *S, const BasicBlock *BB) { in computeBlockDisposition()
13525 bool ScalarEvolution::dominates(const SCEV *S, const BasicBlock *BB) { in dominates()
13529 bool ScalarEvolution::properlyDominates(const SCEV *S, const BasicBlock *BB) { in properlyDominates()
13533 bool ScalarEvolution::hasOperand(const SCEV *S, const SCEV *Op) const { in hasOperand()
13537 void ScalarEvolution::forgetBackedgeTakenCounts(const Loop *L, in forgetBackedgeTakenCounts()
13554 void ScalarEvolution::forgetMemoizedResults(ArrayRef<const SCEV *> SCEVs) { in forgetMemoizedResults()
13580 void ScalarEvolution::forgetMemoizedResultsImpl(const SCEV *S) { in forgetMemoizedResultsImpl()
13625 ScalarEvolution::getUsedLoops(const SCEV *S, in getUsedLoops()
13644 void ScalarEvolution::getReachableBlocks( in getReachableBlocks()
13681 void ScalarEvolution::verify() const { in verify()
13682 ScalarEvolution &SE = *const_cast<ScalarEvolution *>(this); in verify()
13683 ScalarEvolution SE2(F, TLI, AC, DT, LI); in verify()
13689 SCEVMapper(ScalarEvolution &SE) : SCEVRewriteVisitor<SCEVMapper>(SE) {} in verify()
13742 SCM.visit(It->second.getExact(L, const_cast<ScalarEvolution *>(this))); in verify()
13902 bool ScalarEvolution::invalidate( in invalidate()
13916 ScalarEvolution ScalarEvolutionAnalysis::run(Function &F, in run()
13918 return ScalarEvolution(F, AM.getResult<TargetLibraryAnalysis>(F), in run()
13957 SE.reset(new ScalarEvolution( in runOnFunction()
13986 const SCEVPredicate *ScalarEvolution::getEqualPredicate(const SCEV *LHS, in getEqualPredicate()
13992 ScalarEvolution::getComparePredicate(const ICmpInst::Predicate Pred, in getComparePredicate()
14011 const SCEVPredicate *ScalarEvolution::getWrapPredicate( in getWrapPredicate()
14041 static const SCEV *rewrite(const SCEV *S, const Loop *L, ScalarEvolution &SE, in rewrite()
14098 explicit SCEVPredicateRewriter(const Loop *L, ScalarEvolution &SE, in SCEVPredicateRewriter()
14151 ScalarEvolution::rewriteUsingPredicate(const SCEV *S, const Loop *L, in rewriteUsingPredicate()
14156 const SCEVAddRecExpr *ScalarEvolution::convertSCEVToAddRecWithPredicates( in convertSCEVToAddRecWithPredicates()
14228 if (ScalarEvolution::setFlags(ScevFlags, SCEV::FlagNSW) == ScevFlags) in isAlwaysTrue()
14245 ScalarEvolution &SE) { in getImpliedFlags()
14250 if (ScalarEvolution::setFlags(StaticFlags, SCEV::FlagNSW) == StaticFlags) in getImpliedFlags()
14253 if (ScalarEvolution::setFlags(StaticFlags, SCEV::FlagNUW) == StaticFlags) { in getImpliedFlags()
14300 PredicatedScalarEvolution::PredicatedScalarEvolution(ScalarEvolution &SE, in PredicatedScalarEvolution()
14307 void ScalarEvolution::registerUser(const SCEV *User, in registerUser()
14455 bool ScalarEvolution::matchURem(const SCEV *Expr, const SCEV *&LHS, in matchURem()
14509 ScalarEvolution::computeSymbolicMaxBackedgeTakenCount(const Loop *L) { in computeSymbolicMaxBackedgeTakenCount()
14521 ScalarEvolution::ConstantMaximum); in computeSymbolicMaxBackedgeTakenCount()
14544 SCEVLoopGuardRewriter(ScalarEvolution &SE, in SCEVLoopGuardRewriter()
14566 const SCEV *ScalarEvolution::applyLoopGuards(const SCEV *Expr, const Loop *L) { in applyLoopGuards()