Home
last modified time | relevance | path

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

12

/freebsd/contrib/llvm-project/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()
326 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(getSubscript(I)); in computeRefCost()
429 const SCEVAddRecExpr *AccessFnAR = dyn_cast<SCEVAddRecExpr>(AccessFn); in delinearize()
503 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(getSubscript(Idx)); in getSubscriptIndex()
513 auto *AR = cast<SCEVAddRecExpr>(LastSubscript); in getLastCoefficient()
519 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(&Subscript); in isCoeffForLoopZeroOrInvariant()
526 if (!isa<SCEVAddRecExpr>(Subscript)) in isSimpleAddRecurrence()
529 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()
362 if (const SCEVAddRecExpr *AR = findAddRecForLoop(Expr, L)) in getStride()
H A DScalarEvolutionNormalization.cpp43 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr);
48 NormalizeDenormalizeRewriter::visitAddRecExpr(const SCEVAddRecExpr *AR) { in visitAddRecExpr()
103 auto Pred = [&](const SCEVAddRecExpr *AR) { in normalizeForPostIncUse()
125 auto Pred = [&](const SCEVAddRecExpr *AR) { in denormalizeForPostIncUse()
H A DScalarEvolution.cpp304 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(this); in print()
392 return cast<SCEVAddRecExpr>(this)->getType(); in getType()
735 const SCEVAddRecExpr *LA = cast<SCEVAddRecExpr>(LHS); in CompareSCEVComplexity()
736 const SCEVAddRecExpr *RA = cast<SCEVAddRecExpr>(RHS); in CompareSCEVComplexity()
974 const SCEV *SCEVAddRecExpr::evaluateAtIteration(const SCEV *It, in evaluateAtIteration()
980 SCEVAddRecExpr::evaluateAtIteration(ArrayRef<const SCEV *> Operands, in evaluateAtIteration()
1207 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Op)) { in getTruncateExpr()
1324 static const SCEV *getPreStartForExtend(const SCEVAddRecExpr *AR, Type *Ty, in getPreStartForExtend()
1359 const SCEVAddRecExpr *PreAR = dyn_cast<SCEVAddRecExpr>( in getPreStartForExtend()
1382 SE->setNoWrapFlags(const_cast<SCEVAddRecExpr *>(PreAR), WrapType); in getPreStartForExtend()
[all …]
H A DDependenceAnalysis.cpp964 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr); in checkSubscript()
1111 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Bound)) { in isKnownLessThan()
1133 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(S)) { in isKnownNonNegative()
2231 const SCEVAddRecExpr *SrcAddRec = dyn_cast<SCEVAddRecExpr>(Src); in testSIV()
2232 const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst); in testSIV()
2308 const SCEVAddRecExpr *SrcAddRec = dyn_cast<SCEVAddRecExpr>(Src); in testRDIV()
2309 const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst); in testRDIV()
2319 if (const SCEVAddRecExpr *tmpAddRec = in testRDIV()
2320 dyn_cast<SCEVAddRecExpr>(SrcAddRec->getStart())) { in testRDIV()
2332 if (const SCEVAddRecExpr *tmpAddRec = in testRDIV()
[all …]
H A DLoopAccessAnalysis.cpp224 } else if (auto *AR = dyn_cast<SCEVAddRecExpr>(PtrExpr)) { in getStartAndEndForAccess()
305 auto *SrcAR = dyn_cast<SCEVAddRecExpr>(Src->Expr); in tryToCreateDiffCheck()
306 auto *SinkAR = dyn_cast<SCEVAddRecExpr>(Sink->Expr); in tryToCreateDiffCheck()
353 isa<SCEVAddRecExpr>(SinkStartInt) && isa<SCEVAddRecExpr>(SrcStartInt)) { in tryToCreateDiffCheck()
354 auto *SrcStartAR = cast<SCEVAddRecExpr>(SrcStartInt); in tryToCreateDiffCheck()
355 auto *SinkStartAR = cast<SCEVAddRecExpr>(SinkStartInt); in tryToCreateDiffCheck()
821 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(PtrScev); in hasComputableBounds()
896 if (isa<SCEVAddRecExpr>(Scev) || L->isLoopInvariant(Ptr) || in findForkedSCEVs()
1053 (isa<SCEVAddRecExpr>(get<0>(Scevs[0])) || in findForkedPointer()
1055 (isa<SCEVAddRecExpr>(get<0>(Scevs[1])) || in findForkedPointer()
[all …]
H A DDelinearization.cpp56 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in follow()
96 if (isa<SCEVAddRecExpr>(S)) { in follow()
348 if (auto *AR = dyn_cast<SCEVAddRecExpr>(Expr)) in computeAccessFunctions()
H A DScalarEvolutionAliasAnalysis.cpp128 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in GetBaseValue()
/freebsd/contrib/llvm-project/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 DLoopLoadElimination.cpp124 auto *LoadPtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(LoadPtr)); in isDependenceDistanceOfOne()
125 auto *StorePtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(StorePtr)); in isDependenceDistanceOfOne()
442 auto *PtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(Ptr)); in propagateStoredValueToLoadUsers()
545 assert(isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Load->getPointerOperand())) && in processLoop()
548 isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Store->getPointerOperand())) && in processLoop()
610 return !isa<SCEVAddRecExpr>( in processLoop()
612 !isa<SCEVAddRecExpr>( in processLoop()
H A DLoopIdiomRecognize.cpp212 const SCEVAddRecExpr *Ev, const SCEV *BECount,
219 const SCEVAddRecExpr *StoreEv,
220 const SCEVAddRecExpr *LoadEv,
357 static APInt getStoreStride(const SCEVAddRecExpr *StoreEv) { in getStoreStride()
438 const SCEVAddRecExpr *StoreEv = in isLegalStore()
439 dyn_cast<SCEVAddRecExpr>(SE->getSCEV(StorePtr)); in isLegalStore()
497 const SCEVAddRecExpr *LoadEv = in isLegalStore()
498 dyn_cast<SCEVAddRecExpr>(SE->getSCEV(LI->getPointerOperand())); in isLegalStore()
603 const SCEVAddRecExpr *FirstStoreEv = in processLoopStores()
604 cast<SCEVAddRecExpr>(SE->getSCEV(FirstStorePtr)); in processLoopStores()
[all …]
H A DInductiveRangeCheckElimination.cpp153 const SCEVAddRecExpr *&Index,
163 const SCEVAddRecExpr *&Index,
168 const SCEVAddRecExpr *&Index, const SCEV *&End);
228 const SCEVAddRecExpr *IndVar,
272 const SCEVAddRecExpr *&Index,
307 const SCEVAddRecExpr *&Index, in parseIvAgaisntLimit()
315 const auto *AddRec = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(LHS)); in parseIvAgaisntLimit()
369 ScalarEvolution &SE, const SCEVAddRecExpr *&Index, const SCEV *&End) { in reassociateSubLHS()
388 const auto *AddRec = dyn_cast<SCEVAddRecExpr>(IV); in reassociateSubLHS()
507 const SCEVAddRecExpr *IndexAddRe in extractRangeChecksFromCond()
[all...]
H A DLoopStrengthReduce.cpp567 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in DoInitialMatch()
624 return isa<SCEVAddRecExpr>(S) && (cast<SCEVAddRecExpr>(S)->getLoop() == &L); in containsAddRecDependentOnLoop()
796 static bool isAddRecSExtable(const SCEVAddRecExpr *AR, ScalarEvolution &SE) { in isAddRecSExtable()
799 return isa<SCEVAddRecExpr>(SE.getSignExtendExpr(AR, WideTy)); in isAddRecSExtable()
859 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(LHS)) { in getExactSDiv()
941 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in ExtractImmediate()
975 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in ExtractSymbol()
1087 static bool isExistingPhi(const SCEVAddRecExpr *AR, ScalarEvolution &SE) { in isExistingPhi()
1162 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in isHighCostExpansion()
1402 if (const auto *S = dyn_cast<SCEVAddRecExpr>(Reg)) in getSetupCost()
[all …]
H A DIndVarSimplify.cpp815 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in isLoopCounter()
826 isa<SCEVAddRecExpr>(SE->getSCEV(IncV))); in isLoopCounter()
855 const auto *AR = cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in FindLoopCounter()
921 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IndVar)); in genLoopLimit()
934 AR = cast<SCEVAddRecExpr>(SE->getTruncateExpr(AR, ExitCount->getType())); in genLoopLimit()
937 const SCEVAddRecExpr *ARBase = UsePostInc ? AR->getPostIncExpr(*SE) : AR; in genLoopLimit()
994 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IncVar)); in linearFunctionTestReplace()
1522 if (!LHS->hasOneUse() && !isa<SCEVAddRecExpr>(SE->getSCEV(LHSOp))) in canonicalizeExitCondition()
/freebsd/contrib/llvm-project/llvm/lib/Target/PowerPC/
H A DPPCLoopInstrFormPrep.cpp326 rewriteForBase(Loop *L, const SCEVAddRecExpr *BasePtrSCEV,
569 const SCEVAddRecExpr *BasePtrSCEV = cast<SCEVAddRecExpr>(BaseSCEV); in rewriteLoadStoresForCommoningChains()
649 PPCLoopInstrFormPrep::rewriteForBase(Loop *L, const SCEVAddRecExpr *BasePtrSCEV, in rewriteForBase()
844 if (cast<SCEVAddRecExpr>(B.BaseSCEV)->getStepRecurrence(*SE) != in addOneCandidate()
845 cast<SCEVAddRecExpr>(LSCEV)->getStepRecurrence(*SE)) in addOneCandidate()
888 const SCEVAddRecExpr *LARSCEV = dyn_cast<SCEVAddRecExpr>(LSCEV); in collectCandidates()
1022 const SCEVAddRecExpr *BasePtrSCEV = in rewriteLoadStores()
1023 cast<SCEVAddRecExpr>(BucketChain.BaseSCEV); in rewriteLoadStores()
1176 const SCEVAddRecExpr *PHIBasePtrSCEV = dyn_cast<SCEVAddRecExpr>(PHISCEV); in getNodeForInc()
1244 const SCEVAddRecExpr *PHIBasePtrSCEV = dyn_cast<SCEVAddRecExpr>(PHISCEV); in alreadyPrepared()
[all …]
/freebsd/contrib/llvm-project/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
384 getImpliedFlags(const SCEVAddRecExpr *AR, ScalarEvolution &SE);
387 const SCEVAddRecExpr *AR;
392 const SCEVAddRecExpr *AR,
399 const SCEVAddRecExpr *getExpr() const;
1097 const SCEVAddRecExpr *LHS, const SCEV *RHS);
1180 getMonotonicPredicateType(const SCEVAddRecExpr *LHS,
1275 getWrapPredicate(const SCEVAddRecExpr *AR,
1283 const SCEVAddRecExpr *convertSCEVToAddRecWithPredicates(
1300 void setNoWrapFlags(SCEVAddRecExpr *AddRec, SCEV::NoWrapFlags Flags);
[all …]
H A DScalarEvolutionExpressions.h342 /// mostly just supporting infrastructure to allow SCEVAddRecExpr
347 class SCEVAddRecExpr : public SCEVNAryExpr {
352 SCEVAddRecExpr(const FoldingSetNodeIDRef ID, const SCEV *const *O, size_t N,
415 const SCEVAddRecExpr *getPostIncExpr(ScalarEvolution &SE) const;
629 return ((SC *)this)->visitAddRecExpr((const SCEVAddRecExpr *)S); in visit()
828 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr) {
940 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr) {
949 return SCEVAddRecExpr::evaluateAtIteration(Operands, Map[L], SE); in visitAddRecExpr()
353 SCEVAddRecExpr(const FoldingSetNodeIDRef ID, const SCEV *const *O, size_t N, SCEVAddRecExpr() function
H A DScalarEvolutionDivision.h53 void visitAddRecExpr(const SCEVAddRecExpr *Numerator);
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Utils/
H A DScalarEvolutionExpander.cpp439 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in getRelevantLoop()
870 const SCEVAddRecExpr *Phi, in canBeCheaplyTransformed()
871 const SCEVAddRecExpr *Requested, in canBeCheaplyTransformed()
883 Phi = dyn_cast<SCEVAddRecExpr>(SE.getTruncateOrNoop(Phi, RequestedTy)); in canBeCheaplyTransformed()
902 static bool IsIncrementNSW(ScalarEvolution &SE, const SCEVAddRecExpr *AR) { in IsIncrementNSW()
916 static bool IsIncrementNUW(ScalarEvolution &SE, const SCEVAddRecExpr *AR) { in IsIncrementNUW()
934 SCEVExpander::getAddRecExprPHILiterally(const SCEVAddRecExpr *Normalized, in getAddRecExprPHILiterally()
966 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in getAddRecExprPHILiterally()
1112 Value *SCEVExpander::expandAddRecExprLiterally(const SCEVAddRecExpr *S) { in expandAddRecExprLiterally()
1117 const SCEVAddRecExpr *Normalized = S; in expandAddRecExprLiterally()
[all …]
H A DSimplifyIndVar.cpp892 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S); in isSimpleIVUser()
1146 Instruction *cloneIVUser(NarrowIVDefUse DU, const SCEVAddRecExpr *WideAR);
1148 const SCEVAddRecExpr *WideAR);
1153 using WidenedRecTy = std::pair<const SCEVAddRecExpr *, ExtendKind>;
1256 const SCEVAddRecExpr *WideAR) { in cloneIVUser()
1308 const SCEVAddRecExpr *WideAR) { in cloneArithmeticIVUser()
1530 const SCEVAddRecExpr *AddRec = in getExtendedOperandRecurrence()
1531 dyn_cast<SCEVAddRecExpr>(getSCEVByOpCode(lhs, rhs, Op->Opcode)); in getExtendedOperandRecurrence()
1560 if (isa<SCEVAddRecExpr>(WideExpr)) in getWideRecurrence()
1573 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(WideExpr); in getWideRecurrence()
[all …]
H A DLoopConstrainer.cpp185 if (!isa<SCEVAddRecExpr>(LeftSCEV)) { in parseLoopStructure()
186 if (isa<SCEVAddRecExpr>(RightSCEV)) { in parseLoopStructure()
196 auto HasNoSignedWrap = [&](const SCEVAddRecExpr *AR) { in parseLoopStructure()
204 const SCEVAddRecExpr *ExtendAfterOp = in parseLoopStructure()
205 dyn_cast<SCEVAddRecExpr>(SE.getSignExtendExpr(AR, WideTy)); in parseLoopStructure()
225 const SCEVAddRecExpr *IndVarBase = cast<SCEVAddRecExpr>(LeftSCEV); in parseLoopStructure()
H A DLoopPeel.cpp397 if (!isa<SCEVAddRecExpr>(LeftSCEV)) { in countToEliminateCompares()
398 if (isa<SCEVAddRecExpr>(RightSCEV)) { in countToEliminateCompares()
405 const SCEVAddRecExpr *LeftAR = cast<SCEVAddRecExpr>(LeftSCEV); in countToEliminateCompares()
463 const auto *AddRec = dyn_cast<SCEVAddRecExpr>(IterSCEV); in countToEliminateCompares()
/freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/Utils/
H A DScalarEvolutionExpander.h327 Value *generateOverflowCheck(const SCEVAddRecExpr *AR, Instruction *Loc,
496 Value *visitAddRecExpr(const SCEVAddRecExpr *S);
518 Value *expandAddRecExprLiterally(const SCEVAddRecExpr *);
519 PHINode *getAddRecExprPHILiterally(const SCEVAddRecExpr *Normalized,

12