Home
last modified time | relevance | path

Searched refs:SCEVAddRecExpr (Results 1 – 25 of 53) sorted by relevance

123

/llvm-project-15.0.7/llvm/lib/Analysis/
H A DLoopCacheAnalysis.cpp83 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(&AccessFn); in isOneDimensionalArray()
92 if (isa<SCEVAddRecExpr>(Start) || isa<SCEVAddRecExpr>(Step)) in isOneDimensionalArray()
322 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(getSubscript(I)); in computeRefCost()
425 const SCEVAddRecExpr *AccessFnAR = dyn_cast<SCEVAddRecExpr>(AccessFn); in delinearize()
499 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(getSubscript(Idx)); in getSubscriptIndex()
509 auto *AR = cast<SCEVAddRecExpr>(LastSubscript); in getLastCoefficient()
515 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(&Subscript); in isCoeffForLoopZeroOrInvariant()
522 if (!isa<SCEVAddRecExpr>(Subscript)) in isSimpleAddRecurrence()
525 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(&Subscript); in isSimpleAddRecurrence()
H A DIVUsers.cpp59 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in isInteresting()
211 auto NormalizePred = [&](const SCEVAddRecExpr *AR) { in AddUsersIfInteresting()
341 static const SCEVAddRecExpr *findAddRecForLoop(const SCEV *S, const Loop *L) { in findAddRecForLoop()
342 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in findAddRecForLoop()
350 if (const SCEVAddRecExpr *AR = findAddRecForLoop(Op, L)) in findAddRecForLoop()
359 if (const SCEVAddRecExpr *AR = findAddRecForLoop(getExpr(IU), L)) in getStride()
H A DScalarEvolutionNormalization.cpp43 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr);
48 NormalizeDenormalizeRewriter::visitAddRecExpr(const SCEVAddRecExpr *AR) { in visitAddRecExpr()
100 auto Pred = [&](const SCEVAddRecExpr *AR) { in normalizeForPostIncUse()
114 auto Pred = [&](const SCEVAddRecExpr *AR) { in denormalizeForPostIncUse()
H A DScalarEvolution.cpp294 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(this); in print()
755 const SCEVAddRecExpr *LA = cast<SCEVAddRecExpr>(LHS); in CompareSCEVComplexity()
756 const SCEVAddRecExpr *RA = cast<SCEVAddRecExpr>(RHS); in CompareSCEVComplexity()
1425 const SCEVAddRecExpr *PreAR = dyn_cast<SCEVAddRecExpr>( in getPreStartForExtend()
1644 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(Op)) in getZeroExtendExpr()
1984 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(Op)) in getSignExtendExpr()
11791 const SCEVAddRecExpr *RAR = dyn_cast<SCEVAddRecExpr>(RHS); in isImpliedViaMerge()
12389 const SCEVAddRecExpr *IV = dyn_cast<SCEVAddRecExpr>(LHS); in howManyLessThans()
12822 const SCEVAddRecExpr *IV = dyn_cast<SCEVAddRecExpr>(LHS); in howManyGreaterThans()
13359 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(S); in computeLoopDisposition()
[all …]
H A DDependenceAnalysis.cpp901 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr); in checkSubscript()
1070 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(S)) { in isKnownNonNegative()
2168 const SCEVAddRecExpr *SrcAddRec = dyn_cast<SCEVAddRecExpr>(Src); in testSIV()
2169 const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst); in testSIV()
2245 const SCEVAddRecExpr *SrcAddRec = dyn_cast<SCEVAddRecExpr>(Src); in testRDIV()
2246 const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst); in testRDIV()
3020 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr); in findCoefficient()
3036 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr); in zeroCoefficient()
3056 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr); in addToCoefficient()
3438 const SCEVAddRecExpr *SrcAR = dyn_cast<SCEVAddRecExpr>(SrcSCEV); in tryDelinearizeParametricSize()
[all …]
H A DScalarEvolutionAliasAnalysis.cpp115 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in GetBaseValue()
H A DDelinearization.cpp58 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in follow()
98 if (isa<SCEVAddRecExpr>(S)) { in follow()
350 if (auto *AR = dyn_cast<SCEVAddRecExpr>(Expr)) in computeAccessFunctions()
/llvm-project-15.0.7/llvm/lib/Transforms/Scalar/
H A DLoopBoundSplit.cpp43 const SCEVAddRecExpr *AddRecSCEV = nullptr;
58 const SCEVAddRecExpr *LHSAddRecSCEV = dyn_cast<SCEVAddRecExpr>(AddRecSCEV); in analyzeICmp()
59 const SCEVAddRecExpr *RHSAddRecSCEV = dyn_cast<SCEVAddRecExpr>(BoundSCEV); in analyzeICmp()
67 Cond.AddRecSCEV = dyn_cast<SCEVAddRecExpr>(AddRecSCEV); in analyzeICmp()
386 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in splitLoopBound()
H A DLoopDataPrefetch.cpp76 bool isStrideLargeEnough(const SCEVAddRecExpr *AR, unsigned TargetMinStride);
156 bool LoopDataPrefetch::isStrideLargeEnough(const SCEVAddRecExpr *AR, in isStrideLargeEnough()
236 const SCEVAddRecExpr *LSCEVAddRec;
245 Prefetch(const SCEVAddRecExpr *L, Instruction *I) : LSCEVAddRec(L) { in Prefetch()
348 const SCEVAddRecExpr *LSCEVAddRec = dyn_cast<SCEVAddRecExpr>(LSCEV); in runOnLoop()
H A DLoopIdiomRecognize.cpp506 const SCEVAddRecExpr *StoreEv = in isLegalStore()
507 dyn_cast<SCEVAddRecExpr>(SE->getSCEV(StorePtr)); in isLegalStore()
565 const SCEVAddRecExpr *LoadEv = in isLegalStore()
671 const SCEVAddRecExpr *FirstStoreEv = in processLoopStores()
707 const SCEVAddRecExpr *SecondStoreEv = in processLoopStores()
775 const SCEVAddRecExpr *StoreEv = cast<SCEVAddRecExpr>(SE->getSCEV(StorePtr)); in processLoopStores()
844 const SCEVAddRecExpr *StoreEv = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(Dest)); in processLoopMemCpy()
847 const SCEVAddRecExpr *LoadEv = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(Source)); in processLoopMemCpy()
910 const SCEVAddRecExpr *Ev = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(Pointer)); in processLoopMemSet()
1257 const SCEVAddRecExpr *StoreEv = cast<SCEVAddRecExpr>(SE->getSCEV(StorePtr)); in processLoopStoreOfLoopLoad()
[all …]
H A DLoopLoadElimination.cpp117 auto *LoadPtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(LoadPtr)); in isDependenceDistanceOfOne()
118 auto *StorePtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(StorePtr)); in isDependenceDistanceOfOne()
429 auto *PtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(Ptr)); in propagateStoredValueToLoadUsers()
506 assert(isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Load->getPointerOperand())) && in processLoop()
509 isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Store->getPointerOperand())) && in processLoop()
571 return !isa<SCEVAddRecExpr>( in processLoop()
573 !isa<SCEVAddRecExpr>( in processLoop()
H A DLoopStrengthReduce.cpp425 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in DoInitialMatch()
717 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(LHS)) { in getExactSDiv()
799 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in ExtractImmediate()
825 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in ExtractSymbol()
1013 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in isHighCostExpansion()
1271 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(Reg)) { in RateRegister()
2155 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(PH)); in OptimizeShadowIV()
2340 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(IV); in OptimizeMax()
2706 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in CollectInterestingTypesAndFactors()
3594 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in CollectSubexprs()
[all …]
H A DInductiveRangeCheckElimination.cpp215 const SCEVAddRecExpr *IndVar,
378 const auto *IndexAddRec = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(Index)); in extractRangeChecksFromCond()
807 if (!isa<SCEVAddRecExpr>(LeftSCEV)) { in parseLoopStructure()
808 if (isa<SCEVAddRecExpr>(RightSCEV)) { in parseLoopStructure()
818 auto HasNoSignedWrap = [&](const SCEVAddRecExpr *AR) { in parseLoopStructure()
826 const SCEVAddRecExpr *ExtendAfterOp = in parseLoopStructure()
827 dyn_cast<SCEVAddRecExpr>(SE.getSignExtendExpr(AR, WideTy)); in parseLoopStructure()
847 const SCEVAddRecExpr *IndVarBase = cast<SCEVAddRecExpr>(LeftSCEV); in parseLoopStructure()
1581 ScalarEvolution &SE, const SCEVAddRecExpr *IndVar, in computeSafeIterationSpace()
1933 const SCEVAddRecExpr *IndVar = in run()
[all …]
H A DIndVarSimplify.cpp872 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in isLoopCounter()
883 isa<SCEVAddRecExpr>(SE->getSCEV(IncV))); in isLoopCounter()
916 const auto *AR = cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in FindLoopCounter()
981 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IndVar)); in genLoopLimit()
1104 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IncVar)); in linearFunctionTestReplace()
1525 if (!LHS->hasOneUse() && !isa<SCEVAddRecExpr>(SE->getSCEV(LHSOp))) in canonicalizeExitCondition()
2022 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(ExitCount); in run()
/llvm-project-15.0.7/llvm/include/llvm/Analysis/
H A DScalarEvolutionNormalization.h46 class SCEVAddRecExpr; variable
50 typedef function_ref<bool(const SCEVAddRecExpr *)> NormalizePredTy;
H A DScalarEvolution.h62 class SCEVAddRecExpr; variable
381 getImpliedFlags(const SCEVAddRecExpr *AR, ScalarEvolution &SE);
384 const SCEVAddRecExpr *AR;
389 const SCEVAddRecExpr *AR,
396 const SCEVAddRecExpr *getExpr() const;
1075 getMonotonicPredicateType(const SCEVAddRecExpr *LHS,
1168 getWrapPredicate(const SCEVAddRecExpr *AR,
1176 const SCEVAddRecExpr *convertSCEVToAddRecWithPredicates(
1983 getMonotonicPredicateTypeImpl(const SCEVAddRecExpr *LHS,
2208 const SCEVAddRecExpr *getAsAddRec(Value *V);
[all …]
H A DScalarEvolutionExpressions.h342 class SCEVAddRecExpr : public SCEVNAryExpr {
347 SCEVAddRecExpr(const FoldingSetNodeIDRef ID, const SCEV *const *O, size_t N, in SCEVAddRecExpr() function
410 const SCEVAddRecExpr *getPostIncExpr(ScalarEvolution &SE) const;
634 return ((SC *)this)->visitAddRecExpr((const SCEVAddRecExpr *)S); in visit()
837 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr) { in visitAddRecExpr()
949 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr) { in visitAddRecExpr()
958 return SCEVAddRecExpr::evaluateAtIteration(Operands, Map[L], SE); in visitAddRecExpr()
H A DScalarEvolutionDivision.h51 void visitAddRecExpr(const SCEVAddRecExpr *Numerator);
/llvm-project-15.0.7/llvm/lib/Target/PowerPC/
H A DPPCLoopInstrFormPrep.cpp325 rewriteForBase(Loop *L, const SCEVAddRecExpr *BasePtrSCEV,
568 const SCEVAddRecExpr *BasePtrSCEV = cast<SCEVAddRecExpr>(BaseSCEV); in rewriteLoadStoresForCommoningChains()
839 cast<SCEVAddRecExpr>(LSCEV)->getStepRecurrence(*SE)) in addOneCandidate()
882 const SCEVAddRecExpr *LARSCEV = dyn_cast<SCEVAddRecExpr>(LSCEV); in collectCandidates()
1016 const SCEVAddRecExpr *BasePtrSCEV = in rewriteLoadStores()
1017 cast<SCEVAddRecExpr>(BucketChain.BaseSCEV); in rewriteLoadStores()
1171 const SCEVAddRecExpr *PHIBasePtrSCEV = dyn_cast<SCEVAddRecExpr>(PHISCEV); in getNodeForInc()
1237 const SCEVAddRecExpr *PHIBasePtrSCEV = dyn_cast<SCEVAddRecExpr>(PHISCEV); in alreadyPrepared()
1324 const SCEVAddRecExpr *LARSCEV = dyn_cast<SCEVAddRecExpr>(LSCEV); in runOnLoop()
1369 const SCEVAddRecExpr *ARSCEV = in runOnLoop()
[all …]
/llvm-project-15.0.7/llvm/lib/Transforms/Utils/
H A DScalarEvolutionExpander.cpp344 if (const SCEVAddRecExpr *A = dyn_cast<SCEVAddRecExpr>(S)) { in FactorOutConstant()
401 while (const SCEVAddRecExpr *A = dyn_cast<SCEVAddRecExpr>(Ops[i])) { in SplitAddRecs()
692 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in getRelevantLoop()
1203 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in getAddRecExprPHILiterally()
1360 const SCEVAddRecExpr *Normalized = S; in expandAddRecExprLiterally()
1373 Normalized = cast<SCEVAddRecExpr>( in expandAddRecExprLiterally()
1393 cast<SCEVAddRecExpr>(SE.getAddRecExpr( in expandAddRecExprLiterally()
1634 if (isa<SCEVAddRecExpr>(Ext)) in visitAddRecExpr()
2327 Cost += costAndCollectOperands<SCEVAddRecExpr>( in isHighCostExpansionHelper()
2495 const auto *A = cast<SCEVAddRecExpr>(Pred->getExpr()); in expandWrapPredicate()
[all …]
H A DSimplifyIndVar.cpp856 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S); in isSimpleIVUser()
1100 const SCEVAddRecExpr *WideAR);
1105 using WidenedRecTy = std::pair<const SCEVAddRecExpr *, ExtendKind>;
1206 const SCEVAddRecExpr *WideAR) { in cloneIVUser()
1396 const SCEVAddRecExpr *AddRec = in getExtendedOperandRecurrence()
1397 dyn_cast<SCEVAddRecExpr>(getSCEVByOpCode(lhs, rhs, OpCode)); in getExtendedOperandRecurrence()
1426 if (isa<SCEVAddRecExpr>(WideExpr)) in getWideRecurrence()
1439 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(WideExpr); in getWideRecurrence()
1627 const SCEVAddRecExpr *AddRecOp1 = dyn_cast<SCEVAddRecExpr>(Op1); in widenWithVariantUse()
1880 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(OrigPhi)); in createWideIV()
[all …]
/llvm-project-15.0.7/llvm/unittests/Transforms/Utils/
H A DScalarEvolutionExpanderTest.cpp264 EXPECT_TRUE(isa<SCEVAddRecExpr>(S)); in TEST_F()
265 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(S); in TEST_F()
734 [&](std::function<const SCEVAddRecExpr *(ScalarEvolution & SE, Loop * L)> in TEST_F()
773 auto TestNarrowCanonicalIV = [&](std::function<const SCEVAddRecExpr *( in TEST_F()
823 [&](std::function<const SCEVAddRecExpr *(ScalarEvolution & SE, Loop * L)> in TEST_F()
879 auto GetAR3 = [&](ScalarEvolution &SE, Loop *L) -> const SCEVAddRecExpr * { in TEST_F()
882 return cast<SCEVAddRecExpr>(SE.getAddRecExpr(Ops, L, SCEV::FlagAnyWrap)); in TEST_F()
889 auto GetAR4 = [&](ScalarEvolution &SE, Loop *L) -> const SCEVAddRecExpr * { in TEST_F()
893 return cast<SCEVAddRecExpr>(SE.getAddRecExpr(Ops, L, SCEV::FlagAnyWrap)); in TEST_F()
900 auto GetAR5 = [&](ScalarEvolution &SE, Loop *L) -> const SCEVAddRecExpr * { in TEST_F()
[all …]
/llvm-project-15.0.7/llvm/include/llvm/Transforms/Utils/
H A DScalarEvolutionExpander.h295 Value *generateOverflowCheck(const SCEVAddRecExpr *AR, Instruction *Loc,
467 Value *visitAddRecExpr(const SCEVAddRecExpr *S);
487 Value *expandAddRecExprLiterally(const SCEVAddRecExpr *);
488 PHINode *getAddRecExprPHILiterally(const SCEVAddRecExpr *Normalized,
/llvm-project-15.0.7/llvm/unittests/Analysis/
H A DScalarEvolutionTest.cpp246 EXPECT_TRUE(isa<SCEVAddRecExpr>(FirstExprForIV0)); in TEST_F()
247 EXPECT_TRUE(isa<SCEVAddRecExpr>(FirstExprForIV0Inc)); in TEST_F()
248 EXPECT_TRUE(isa<SCEVAddRecExpr>(SecondExprForIV0)); in TEST_F()
529 auto *S0 = cast<SCEVAddRecExpr>(SE.getSCEV(&I0)); in TEST_F()
536 auto *S1 = cast<SCEVAddRecExpr>(SE.getSCEV(&I1)); in TEST_F()
1113 EXPECT_TRUE(isa<SCEVAddRecExpr>(ScevInc)); in TEST_F()
1210 auto *AR = dyn_cast<SCEVAddRecExpr>(WithUMin); in TEST_F()
1295 const Loop *L = cast<SCEVAddRecExpr>(ScevIV)->getLoop(); in TEST_F()
1571 const Loop *L = cast<SCEVAddRecExpr>(ScevIV)->getLoop(); in TEST_F()
1612 const Loop *L = cast<SCEVAddRecExpr>(ScevIV)->getLoop(); in TEST_F()
[all …]
/llvm-project-15.0.7/polly/lib/Support/
H A DSCEVValidator.cpp219 ValidatorResult visitAddRecExpr(const SCEVAddRecExpr *Expr) { in visitAddRecExpr()
503 if (auto AddRec = dyn_cast<SCEVAddRecExpr>(S)) { in follow()
528 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(S)) in follow()
677 auto *AddRec = dyn_cast<SCEVAddRecExpr>(S); in extractConstantFactor()

123