Home
last modified time | relevance | path

Searched refs:SCEVAddRecExpr (Results 1 – 25 of 47) 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()
435 const SCEVAddRecExpr *AccessFnAR = dyn_cast<SCEVAddRecExpr>(AccessFn); in delinearize()
509 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(getSubscript(Idx)); in getSubscriptIndex()
519 auto *AR = cast<SCEVAddRecExpr>(LastSubscript); in getLastCoefficient()
525 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(&Subscript); in isCoeffForLoopZeroOrInvariant()
532 if (!isa<SCEVAddRecExpr>(Subscript)) in isSimpleAddRecurrence()
535 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()
339 static const SCEVAddRecExpr *findAddRecForLoop(const SCEV *S, const Loop *L) { in findAddRecForLoop()
340 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in findAddRecForLoop()
348 if (const SCEVAddRecExpr *AR = findAddRecForLoop(Op, L)) in findAddRecForLoop()
360 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.cpp310 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(this); in print()
396 return cast<SCEVAddRecExpr>(this)->getType(); in getType()
704 const SCEVAddRecExpr *LA = cast<SCEVAddRecExpr>(LHS); in CompareSCEVComplexity()
705 const SCEVAddRecExpr *RA = cast<SCEVAddRecExpr>(RHS); in CompareSCEVComplexity()
980 const SCEV *SCEVAddRecExpr::evaluateAtIteration(const SCEV *It, in evaluateAtIteration()
986 SCEVAddRecExpr::evaluateAtIteration(ArrayRef<const SCEV *> Operands, in evaluateAtIteration()
1213 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Op)) { in getTruncateExpr()
1330 static const SCEV *getPreStartForExtend(const SCEVAddRecExpr *AR, Type *Ty, in getPreStartForExtend()
1365 const SCEVAddRecExpr *PreAR = dyn_cast<SCEVAddRecExpr>( in getPreStartForExtend()
1388 SE->setNoWrapFlags(const_cast<SCEVAddRecExpr *>(PreAR), WrapType); in getPreStartForExtend()
[all …]
H A DDependenceAnalysis.cpp991 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Expr); in checkSubscript()
1130 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Bound)) { in isKnownLessThan()
1152 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(S)) { in isKnownNonNegative()
2250 const SCEVAddRecExpr *SrcAddRec = dyn_cast<SCEVAddRecExpr>(Src); in testSIV()
2251 const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst); in testSIV()
2327 const SCEVAddRecExpr *SrcAddRec = dyn_cast<SCEVAddRecExpr>(Src); in testRDIV()
2328 const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst); in testRDIV()
2338 if (const SCEVAddRecExpr *tmpAddRec = in testRDIV()
2339 dyn_cast<SCEVAddRecExpr>(SrcAddRec->getStart())) { in testRDIV()
2351 if (const SCEVAddRecExpr *tmpAddRec = in testRDIV()
[all …]
H A DDelinearization.cpp55 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in follow()
95 if (isa<SCEVAddRecExpr>(S)) { in follow()
347 if (auto *AR = dyn_cast<SCEVAddRecExpr>(Expr)) in computeAccessFunctions()
H A DScalarEvolutionAliasAnalysis.cpp128 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in GetBaseValue()
H A DLoopAccessAnalysis.cpp211 static bool evaluatePtrAddRecAtMaxBTCWillNotWrap(const SCEVAddRecExpr *AR, in evaluatePtrAddRecAtMaxBTCWillNotWrap()
295 } else if (auto *AR = dyn_cast<SCEVAddRecExpr>(PtrExpr)) { in getStartAndEndForAccess()
449 isa<SCEVAddRecExpr>(SinkStartInt) && isa<SCEVAddRecExpr>(SrcStartInt)) { in tryToCreateDiffCheck()
450 auto *SrcStartAR = cast<SCEVAddRecExpr>(SrcStartInt); in tryToCreateDiffCheck()
451 auto *SinkStartAR = cast<SCEVAddRecExpr>(SinkStartInt); in tryToCreateDiffCheck()
918 getStrideFromAddRec(const SCEVAddRecExpr *AR, const Loop *Lp, Type *AccessTy, in getStrideFromAddRec()
962 static bool isNoWrap(PredicatedScalarEvolution &PSE, const SCEVAddRecExpr *AR, in isNoWrap()
1053 if (isa<SCEVAddRecExpr>(Scev) || L->isLoopInvariant(Ptr) || in findForkedSCEVs()
1203 (isa<SCEVAddRecExpr>(get<0>(Scevs[0])) || in findForkedPointer()
1205 (isa<SCEVAddRecExpr>(get<0>(Scevs[1])) || in findForkedPointer()
[all …]
/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()
385 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in splitLoopBound()
H A DLoopDataPrefetch.cpp75 bool isStrideLargeEnough(const SCEVAddRecExpr *AR, unsigned TargetMinStride);
155 bool LoopDataPrefetch::isStrideLargeEnough(const SCEVAddRecExpr *AR, in isStrideLargeEnough()
235 const SCEVAddRecExpr *LSCEVAddRec;
244 Prefetch(const SCEVAddRecExpr *L, Instruction *I) : LSCEVAddRec(L) { in Prefetch()
347 const SCEVAddRecExpr *LSCEVAddRec = dyn_cast<SCEVAddRecExpr>(LSCEV); in runOnLoop()
H A DInductiveRangeCheckElimination.cpp145 const SCEVAddRecExpr *&Index,
155 const SCEVAddRecExpr *&Index,
160 const SCEVAddRecExpr *&Index, const SCEV *&End);
220 const SCEVAddRecExpr *IndVar,
266 const SCEVAddRecExpr *&Index, in parseRangeCheckICmp()
301 const SCEVAddRecExpr *&Index, in parseIvAgaisntLimit()
309 const auto *AddRec = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(LHS)); in parseIvAgaisntLimit()
363 ScalarEvolution &SE, const SCEVAddRecExpr *&Index, const SCEV *&End) { in reassociateSubLHS()
382 const auto *AddRec = dyn_cast<SCEVAddRecExpr>(IV); in reassociateSubLHS()
501 const SCEVAddRecExpr *IndexAddRec = nullptr; in extractRangeChecksFromCond()
[all …]
H A DLoopLoadElimination.cpp122 auto *LoadPtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(LoadPtr)); in isDependenceDistanceOfOne()
123 auto *StorePtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(StorePtr)); in isDependenceDistanceOfOne()
440 auto *PtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(Ptr)); in propagateStoredValueToLoadUsers()
544 assert(isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Load->getPointerOperand())) && in processLoop()
547 isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Store->getPointerOperand())) && in processLoop()
606 return !isa<SCEVAddRecExpr>( in processLoop()
608 !isa<SCEVAddRecExpr>( in processLoop()
H A DLoopIdiomRecognize.cpp234 const SCEVAddRecExpr *Ev, const SCEV *BECount,
241 const SCEVAddRecExpr *StoreEv,
242 const SCEVAddRecExpr *LoadEv,
385 static APInt getStoreStride(const SCEVAddRecExpr *StoreEv) { in getStoreStride()
627 const SCEVAddRecExpr *FirstStoreEv = in processLoopStores()
628 cast<SCEVAddRecExpr>(SE->getSCEV(FirstStorePtr)); in processLoopStores()
663 const SCEVAddRecExpr *SecondStoreEv = in processLoopStores()
664 cast<SCEVAddRecExpr>(SE->getSCEV(SecondStorePtr)); in processLoopStores()
731 const SCEVAddRecExpr *StoreEv = cast<SCEVAddRecExpr>(SE->getSCEV(StorePtr)); in processLoopStores()
841 cast<SCEVAddRecExpr>(StoreEv), cast<SCEVAddRecExpr>(LoadEv), BECount); in processLoopMemCpy()
[all …]
H A DLoopTermFold.cpp138 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in canFoldTermCondOfLoop()
160 const SCEVAddRecExpr *PostInc = AddRec->getPostIncExpr(SE); in canFoldTermCondOfLoop()
H A DLoopStrengthReduce.cpp619 return isa<SCEVAddRecExpr>(S) && (cast<SCEVAddRecExpr>(S)->getLoop() == &L); in containsAddRecDependentOnLoop()
804 static bool isAddRecSExtable(const SCEVAddRecExpr *AR, ScalarEvolution &SE) { in isAddRecSExtable()
807 return isa<SCEVAddRecExpr>(SE.getSignExtendExpr(AR, WideTy)); in isAddRecSExtable()
867 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(LHS)) { in getExactSDiv()
950 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in ExtractImmediate()
980 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in ExtractSymbol()
1092 static bool isExistingPhi(const SCEVAddRecExpr *AR, ScalarEvolution &SE) { in isExistingPhi()
1166 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in isHighCostExpansion()
1382 if (const auto *S = dyn_cast<SCEVAddRecExpr>(Reg)) in getSetupCost()
1401 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(Reg)) { in RateRegister()
[all …]
H A DIndVarSimplify.cpp817 isa<SCEVAddRecExpr>(SE->getSCEV(IncV))); in isLoopCounter()
846 const auto *AR = cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in FindLoopCounter()
912 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IndVar)); in genLoopLimit()
925 AR = cast<SCEVAddRecExpr>(SE->getTruncateExpr(AR, ExitCount->getType())); in genLoopLimit()
928 const SCEVAddRecExpr *ARBase = UsePostInc ? AR->getPostIncExpr(*SE) : AR; in genLoopLimit()
985 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IncVar)); in linearFunctionTestReplace()
1497 if (!LHS->hasOneUse() && !isa<SCEVAddRecExpr>(SE->getSCEV(LHSOp))) in canonicalizeExitCondition()
/freebsd/contrib/llvm-project/llvm/lib/Target/PowerPC/
H A DPPCLoopInstrFormPrep.cpp317 rewriteForBase(Loop *L, const SCEVAddRecExpr *BasePtrSCEV,
560 const SCEVAddRecExpr *BasePtrSCEV = cast<SCEVAddRecExpr>(BaseSCEV); in rewriteLoadStoresForCommoningChains()
640 PPCLoopInstrFormPrep::rewriteForBase(Loop *L, const SCEVAddRecExpr *BasePtrSCEV, in rewriteForBase()
835 if (cast<SCEVAddRecExpr>(B.BaseSCEV)->getStepRecurrence(*SE) != in addOneCandidate()
836 cast<SCEVAddRecExpr>(LSCEV)->getStepRecurrence(*SE)) in addOneCandidate()
879 const SCEVAddRecExpr *LARSCEV = dyn_cast<SCEVAddRecExpr>(LSCEV); in collectCandidates()
1013 const SCEVAddRecExpr *BasePtrSCEV = in rewriteLoadStores()
1014 cast<SCEVAddRecExpr>(BucketChain.BaseSCEV); in rewriteLoadStores()
1167 const SCEVAddRecExpr *PHIBasePtrSCEV = dyn_cast<SCEVAddRecExpr>(PHISCEV); in getNodeForInc()
1235 const SCEVAddRecExpr *PHIBasePtrSCEV = dyn_cast<SCEVAddRecExpr>(PHISCEV); in alreadyPrepared()
[all …]
/freebsd/contrib/llvm-project/llvm/include/llvm/Analysis/
H A DScalarEvolutionNormalization.h47 class SCEVAddRecExpr; variable
51 typedef function_ref<bool(const SCEVAddRecExpr *)> NormalizePredTy;
H A DScalarEvolution.h60 class SCEVAddRecExpr; variable
381 getImpliedFlags(const SCEVAddRecExpr *AR, ScalarEvolution &SE);
384 const SCEVAddRecExpr *AR;
389 const SCEVAddRecExpr *AR,
396 const SCEVAddRecExpr *getExpr() const;
1138 const SCEVAddRecExpr *LHS,
1217 getMonotonicPredicateType(const SCEVAddRecExpr *LHS,
1313 getWrapPredicate(const SCEVAddRecExpr *AR,
1321 LLVM_ABI const SCEVAddRecExpr *convertSCEVToAddRecWithPredicates(
1338 LLVM_ABI void setNoWrapFlags(SCEVAddRecExpr *AddRec, SCEV::NoWrapFlags Flags);
[all …]
H A DScalarEvolutionExpressions.h348 class SCEVAddRecExpr : public SCEVNAryExpr {
353 SCEVAddRecExpr(const FoldingSetNodeIDRef ID, const SCEV *const *O, size_t N, in SCEVAddRecExpr() function
418 LLVM_ABI const SCEVAddRecExpr *getPostIncExpr(ScalarEvolution &SE) const;
633 return ((SC *)this)->visitAddRecExpr((const SCEVAddRecExpr *)S); in visit()
832 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr) { in visitAddRecExpr()
944 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr) { in visitAddRecExpr()
954 return SCEVAddRecExpr::evaluateAtIteration(Operands, It->second, SE); in visitAddRecExpr()
H A DScalarEvolutionDivision.h53 void visitAddRecExpr(const SCEVAddRecExpr *Numerator);
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Utils/
H A DScalarEvolutionExpander.cpp449 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in getRelevantLoop()
894 const SCEVAddRecExpr *Phi, in canBeCheaplyTransformed()
895 const SCEVAddRecExpr *Requested, in canBeCheaplyTransformed()
907 Phi = dyn_cast<SCEVAddRecExpr>(SE.getTruncateOrNoop(Phi, RequestedTy)); in canBeCheaplyTransformed()
926 static bool IsIncrementNSW(ScalarEvolution &SE, const SCEVAddRecExpr *AR) { in IsIncrementNSW()
940 static bool IsIncrementNUW(ScalarEvolution &SE, const SCEVAddRecExpr *AR) { in IsIncrementNUW()
958 SCEVExpander::getAddRecExprPHILiterally(const SCEVAddRecExpr *Normalized, in getAddRecExprPHILiterally()
990 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN)); in getAddRecExprPHILiterally()
1136 Value *SCEVExpander::expandAddRecExprLiterally(const SCEVAddRecExpr *S) { in expandAddRecExprLiterally()
1141 const SCEVAddRecExpr *Normalized = S; in expandAddRecExprLiterally()
[all …]
H A DSimplifyIndVar.cpp894 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()
/freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/Utils/
H A DScalarEvolutionExpander.h340 LLVM_ABI Value *generateOverflowCheck(const SCEVAddRecExpr *AR,
511 Value *visitAddRecExpr(const SCEVAddRecExpr *S);
533 Value *expandAddRecExprLiterally(const SCEVAddRecExpr *);
534 PHINode *getAddRecExprPHILiterally(const SCEVAddRecExpr *Normalized,

12