Home
last modified time | relevance | path

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

12

/openbsd-src/gnu/llvm/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()
321 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(getSubscript(I)); in computeRefCost()
424 const SCEVAddRecExpr *AccessFnAR = dyn_cast<SCEVAddRecExpr>(AccessFn); in delinearize()
498 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(getSubscript(Idx)); in getSubscriptIndex()
508 auto *AR = cast<SCEVAddRecExpr>(LastSubscript); in getLastCoefficient()
514 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(&Subscript); in isCoeffForLoopZeroOrInvariant()
521 if (!isa<SCEVAddRecExpr>(Subscript)) in isSimpleAddRecurrence()
524 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.cpp303 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(this); in print()
411 return cast<SCEVAddRecExpr>(this)->getType(); in getType()
789 const SCEVAddRecExpr *LA = cast<SCEVAddRecExpr>(LHS); in CompareSCEVComplexity()
790 const SCEVAddRecExpr *RA = cast<SCEVAddRecExpr>(RHS); in CompareSCEVComplexity()
1034 const SCEV *SCEVAddRecExpr::evaluateAtIteration(const SCEV *It, in evaluateAtIteration()
1040 SCEVAddRecExpr::evaluateAtIteration(ArrayRef<const SCEV *> Operands, in evaluateAtIteration()
1268 if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(Op)) { in getTruncateExpr()
1385 static const SCEV *getPreStartForExtend(const SCEVAddRecExpr *AR, Type *Ty, in getPreStartForExtend()
1417 const SCEVAddRecExpr *PreAR = dyn_cast<SCEVAddRecExpr>( in getPreStartForExtend()
1440 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 DScalarEvolutionAliasAnalysis.cpp116 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()
H A DLoopAccessAnalysis.cpp213 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(PtrExpr); in insert()
282 auto *SrcAR = dyn_cast<SCEVAddRecExpr>(Src->Expr); in tryToCreateDiffCheck()
283 auto *SinkAR = dyn_cast<SCEVAddRecExpr>(Sink->Expr); in tryToCreateDiffCheck()
748 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(PtrScev); in hasComputableBounds()
823 if (isa<SCEVAddRecExpr>(Scev) || L->isLoopInvariant(Ptr) || in findForkedSCEVs()
964 (isa<SCEVAddRecExpr>(get<0>(Scevs[0])) || in findForkedPointer()
966 (isa<SCEVAddRecExpr>(get<0>(Scevs[1])) || in findForkedPointer()
1003 if (!Assume || !isa<SCEVAddRecExpr>(Expr)) in createCheckForAccess()
1322 static bool isNoWrapAddRec(Value *Ptr, const SCEVAddRecExpr *AR, in isNoWrapAddRec()
1361 if (auto *OpAR = dyn_cast<SCEVAddRecExpr>(OpScev)) in isNoWrapAddRec()
[all …]
/openbsd-src/gnu/llvm/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.cpp223 const SCEVAddRecExpr *Ev, const SCEV *BECount,
230 const SCEVAddRecExpr *StoreEv,
231 const SCEVAddRecExpr *LoadEv,
427 static APInt getStoreStride(const SCEVAddRecExpr *StoreEv) { in getStoreStride()
508 const SCEVAddRecExpr *StoreEv = in isLegalStore()
509 dyn_cast<SCEVAddRecExpr>(SE->getSCEV(StorePtr)); in isLegalStore()
567 const SCEVAddRecExpr *LoadEv = in isLegalStore()
568 dyn_cast<SCEVAddRecExpr>(SE->getSCEV(LI->getPointerOperand())); in isLegalStore()
673 const SCEVAddRecExpr *FirstStoreEv = in processLoopStores()
674 cast<SCEVAddRecExpr>(SE->getSCEV(FirstStorePtr)); in processLoopStores()
[all …]
H A DLoopLoadElimination.cpp118 auto *LoadPtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(LoadPtr)); in isDependenceDistanceOfOne()
119 auto *StorePtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(StorePtr)); in isDependenceDistanceOfOne()
431 auto *PtrSCEV = cast<SCEVAddRecExpr>(PSE.getSCEV(Ptr)); in propagateStoredValueToLoadUsers()
522 assert(isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Load->getPointerOperand())) && in processLoop()
525 isa<SCEVAddRecExpr>(PSE.getSCEV(Cand.Store->getPointerOperand())) && in processLoop()
587 return !isa<SCEVAddRecExpr>( in processLoop()
589 !isa<SCEVAddRecExpr>( in processLoop()
H A DLoopStrengthReduce.cpp438 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in DoInitialMatch()
495 return isa<SCEVAddRecExpr>(S) && (cast<SCEVAddRecExpr>(S)->getLoop() == &L); in containsAddRecDependentOnLoop()
667 static bool isAddRecSExtable(const SCEVAddRecExpr *AR, ScalarEvolution &SE) { in isAddRecSExtable()
670 return isa<SCEVAddRecExpr>(SE.getSignExtendExpr(AR, WideTy)); in isAddRecSExtable()
730 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(LHS)) { in getExactSDiv()
812 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in ExtractImmediate()
838 } else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in ExtractSymbol()
952 static bool isExistingPhi(const SCEVAddRecExpr *AR, ScalarEvolution &SE) { in isExistingPhi()
1026 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) { in isHighCostExpansion()
1266 if (const auto *S = dyn_cast<SCEVAddRecExpr>(Reg)) in getSetupCost()
[all …]
H A DInductiveRangeCheckElimination.cpp214 const SCEVAddRecExpr *IndVar,
377 const auto *IndexAddRec = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(Index)); in extractRangeChecksFromCond()
806 if (!isa<SCEVAddRecExpr>(LeftSCEV)) { in parseLoopStructure()
807 if (isa<SCEVAddRecExpr>(RightSCEV)) { in parseLoopStructure()
817 auto HasNoSignedWrap = [&](const SCEVAddRecExpr *AR) { in parseLoopStructure()
825 const SCEVAddRecExpr *ExtendAfterOp = in parseLoopStructure()
826 dyn_cast<SCEVAddRecExpr>(SE.getSignExtendExpr(AR, WideTy)); in parseLoopStructure()
846 const SCEVAddRecExpr *IndVarBase = cast<SCEVAddRecExpr>(LeftSCEV); in parseLoopStructure()
1585 const SCEVAddRecExpr *IndVar, in computeSafeIterationSpace()
1940 const SCEVAddRecExpr *IndVar = in run()
[all …]
H A DIndVarSimplify.cpp873 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in isLoopCounter()
884 isa<SCEVAddRecExpr>(SE->getSCEV(IncV))); in isLoopCounter()
917 const auto *AR = cast<SCEVAddRecExpr>(SE->getSCEV(Phi)); in FindLoopCounter()
982 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IndVar)); in genLoopLimit()
1105 const SCEVAddRecExpr *AR = cast<SCEVAddRecExpr>(SE->getSCEV(IncVar)); in linearFunctionTestReplace()
1633 if (!LHS->hasOneUse() && !isa<SCEVAddRecExpr>(SE->getSCEV(LHSOp))) in canonicalizeExitCondition()
2142 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(ExitCount); in run()
H A DAlignmentFromAssumptions.cpp155 if (const SCEVAddRecExpr *DiffARSCEV = dyn_cast<SCEVAddRecExpr>(DiffSCEV)) { in getNewAlignment()
/openbsd-src/gnu/llvm/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;
1075 const SCEVAddRecExpr *LHS, const SCEV *RHS);
1158 getMonotonicPredicateType(const SCEVAddRecExpr *LHS,
1257 getWrapPredicate(const SCEVAddRecExpr *AR,
1265 const SCEVAddRecExpr *convertSCEVToAddRecWithPredicates(
1282 void setNoWrapFlags(SCEVAddRecExpr *AddRec, SCEV::NoWrapFlags Flags);
[all …]
H A DScalarEvolutionExpressions.h330 class SCEVAddRecExpr : public SCEVNAryExpr {
335 SCEVAddRecExpr(const FoldingSetNodeIDRef ID, const SCEV *const *O, size_t N, in SCEVAddRecExpr() function
398 const SCEVAddRecExpr *getPostIncExpr(ScalarEvolution &SE) const;
622 return ((SC *)this)->visitAddRecExpr((const SCEVAddRecExpr *)S); in visit()
818 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr) { in visitAddRecExpr()
930 const SCEV *visitAddRecExpr(const SCEVAddRecExpr *Expr) { in visitAddRecExpr()
939 return SCEVAddRecExpr::evaluateAtIteration(Operands, Map[L], SE); in visitAddRecExpr()
H A DScalarEvolutionDivision.h51 void visitAddRecExpr(const SCEVAddRecExpr *Numerator);
/openbsd-src/gnu/llvm/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()
839 if (cast<SCEVAddRecExpr>(B.BaseSCEV)->getStepRecurrence(*SE) != in addOneCandidate()
840 cast<SCEVAddRecExpr>(LSCEV)->getStepRecurrence(*SE)) in addOneCandidate()
883 const SCEVAddRecExpr *LARSCEV = dyn_cast<SCEVAddRecExpr>(LSCEV); in collectCandidates()
1017 const SCEVAddRecExpr *BasePtrSCEV = in rewriteLoadStores()
1018 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()
[all …]
/openbsd-src/gnu/llvm/llvm/lib/Transforms/Utils/
H A DScalarEvolutionExpander.cpp345 if (const SCEVAddRecExpr *A = dyn_cast<SCEVAddRecExpr>(S)) { in FactorOutConstant()
371 for (unsigned i = Ops.size(); i > 0 && isa<SCEVAddRecExpr>(Ops[i-1]); --i) in SimplifyAddOperands()
402 while (const SCEVAddRecExpr *A = dyn_cast<SCEVAddRecExpr>(Ops[i])) { in SplitAddRecs()
698 if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) in getRelevantLoop()
1131 const SCEVAddRecExpr *Phi, in canBeCheaplyTransformed()
1132 const SCEVAddRecExpr *Requested, in canBeCheaplyTransformed()
1145 Phi = dyn_cast<SCEVAddRecExpr>(SE.getTruncateOrNoop(Phi, RequestedTy)); in canBeCheaplyTransformed()
1164 static bool IsIncrementNSW(ScalarEvolution &SE, const SCEVAddRecExpr *AR) { in IsIncrementNSW()
1178 static bool IsIncrementNUW(ScalarEvolution &SE, const SCEVAddRecExpr *AR) { in IsIncrementNUW()
1196 SCEVExpander::getAddRecExprPHILiterally(const SCEVAddRecExpr *Normalized, in getAddRecExprPHILiterally()
[all …]
H A DSimplifyIndVar.cpp845 const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S); in isSimpleIVUser()
1087 Instruction *cloneIVUser(NarrowIVDefUse DU, const SCEVAddRecExpr *WideAR);
1089 const SCEVAddRecExpr *WideAR);
1094 using WidenedRecTy = std::pair<const SCEVAddRecExpr *, ExtendKind>;
1195 const SCEVAddRecExpr *WideAR) { in cloneIVUser()
1247 const SCEVAddRecExpr *WideAR) { in cloneArithmeticIVUser()
1385 const SCEVAddRecExpr *AddRec = in getExtendedOperandRecurrence()
1386 dyn_cast<SCEVAddRecExpr>(getSCEVByOpCode(lhs, rhs, OpCode)); in getExtendedOperandRecurrence()
1415 if (isa<SCEVAddRecExpr>(WideExpr)) in getWideRecurrence()
1428 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(WideExpr); in getWideRecurrence()
[all …]
H A DLoopPeel.cpp373 if (!isa<SCEVAddRecExpr>(LeftSCEV)) { in countToEliminateCompares()
374 if (isa<SCEVAddRecExpr>(RightSCEV)) { in countToEliminateCompares()
381 const SCEVAddRecExpr *LeftAR = cast<SCEVAddRecExpr>(LeftSCEV); in countToEliminateCompares()
/openbsd-src/gnu/llvm/llvm/include/llvm/Transforms/Utils/
H A DScalarEvolutionExpander.h302 Value *generateOverflowCheck(const SCEVAddRecExpr *AR, Instruction *Loc,
474 Value *visitAddRecExpr(const SCEVAddRecExpr *S);
494 Value *expandAddRecExprLiterally(const SCEVAddRecExpr *);
495 PHINode *getAddRecExprPHILiterally(const SCEVAddRecExpr *Normalized,

12