Lines Matching full:pse

154 const SCEV *llvm::replaceSymbolicStrideSCEV(PredicatedScalarEvolution &PSE,  in replaceSymbolicStrideSCEV()  argument
157 const SCEV *OrigSCEV = PSE.getSCEV(Ptr); in replaceSymbolicStrideSCEV()
173 ScalarEvolution *SE = PSE.getSE(); in replaceSymbolicStrideSCEV()
175 PSE.addPredicate(*SE->getEqualPredicate(StrideSCEV, CT)); in replaceSymbolicStrideSCEV()
176 auto *Expr = PSE.getSCEV(Ptr); in replaceSymbolicStrideSCEV()
208 PredicatedScalarEvolution &PSE, in getStartAndEndForAccess() argument
211 ScalarEvolution *SE = PSE.getSE(); in getStartAndEndForAccess()
225 const SCEV *Ex = PSE.getSymbolicMaxBackedgeTakenCount(); in getStartAndEndForAccess()
264 PredicatedScalarEvolution &PSE, in insert() argument
267 Lp, PtrExpr, AccessTy, PSE, DC.getPointerBounds()); in insert()
663 PredicatedScalarEvolution &PSE, in AccessAnalysis() argument
665 : TheLoop(TheLoop), BAA(*AA), AST(BAA), LI(LI), DepCands(DA), PSE(PSE), in AccessAnalysis()
801 PredicatedScalarEvolution &PSE; member in __anonaf4eb2f30111::AccessAnalysis
815 static bool hasComputableBounds(PredicatedScalarEvolution &PSE, Value *Ptr, in hasComputableBounds() argument
818 if (PSE.getSE()->isLoopInvariant(PtrScev, L)) in hasComputableBounds()
824 AR = PSE.getAsAddRec(Ptr); in hasComputableBounds()
833 static bool isNoWrap(PredicatedScalarEvolution &PSE, in isNoWrap() argument
836 const SCEV *PtrScev = PSE.getSCEV(Ptr); in isNoWrap()
837 if (PSE.getSE()->isLoopInvariant(PtrScev, L)) in isNoWrap()
840 int64_t Stride = getPtrStride(PSE, AccessTy, Ptr, L, Strides).value_or(0); in isNoWrap()
841 if (Stride == 1 || PSE.hasNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW)) in isNoWrap()
1042 findForkedPointer(PredicatedScalarEvolution &PSE, in findForkedPointer() argument
1045 ScalarEvolution *SE = PSE.getSE(); in findForkedPointer()
1063 return {{replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr), false}}; in findForkedPointer()
1076 findForkedPointer(PSE, StridesMap, Ptr, TheLoop); in createCheckForAccess()
1080 if (!hasComputableBounds(PSE, Ptr, PtrExpr, TheLoop, Assume)) in createCheckForAccess()
1090 if (!isNoWrap(PSE, StridesMap, Ptr, AccessTy, TheLoop)) { in createCheckForAccess()
1091 auto *Expr = PSE.getSCEV(Ptr); in createCheckForAccess()
1094 PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW); in createCheckForAccess()
1098 // checking, because assumptions might have been added to PSE. in createCheckForAccess()
1100 TranslatedPtrs[0] = {replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr), in createCheckForAccess()
1119 RtCheck.insert(TheLoop, Ptr, PtrExpr, AccessTy, IsWrite, DepId, ASId, PSE, in createCheckForAccess()
1407 PredicatedScalarEvolution &PSE, const Loop *L) { in isNoWrapAddRec() argument
1413 if (PSE.hasNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW)) in isNoWrapAddRec()
1447 auto *OpScev = PSE.getSCEV(OBO->getOperand(0)); in isNoWrapAddRec()
1458 llvm::getPtrStride(PredicatedScalarEvolution &PSE, Type *AccessTy, Value *Ptr, in getPtrStride() argument
1462 const SCEV *PtrScev = replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr); in getPtrStride()
1463 if (PSE.getSE()->isLoopInvariant(PtrScev, Lp)) in getPtrStride()
1476 AR = PSE.getAsAddRec(Ptr); in getPtrStride()
1492 const SCEV *Step = AR->getStepRecurrence(*PSE.getSE()); in getPtrStride()
1524 if (isNoWrapAddRec(Ptr, AR, PSE, Lp)) in getPtrStride()
1544 PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW); in getPtrStride()
1904 auto &SE = *PSE.getSE(); in getDependenceDistanceStrideAndSize()
1921 getPtrStride(PSE, ATy, APtr, InnermostLoop, SymbolicStrides, true, true); in getDependenceDistanceStrideAndSize()
1923 getPtrStride(PSE, BTy, BPtr, InnermostLoop, SymbolicStrides, true, true); in getDependenceDistanceStrideAndSize()
1925 const SCEV *Src = PSE.getSCEV(APtr); in getDependenceDistanceStrideAndSize()
1926 const SCEV *Sink = PSE.getSCEV(BPtr); in getDependenceDistanceStrideAndSize()
1951 getStartAndEndForAccess(InnermostLoop, Src, ATy, PSE, PointerBounds); in getDependenceDistanceStrideAndSize()
1953 getStartAndEndForAccess(InnermostLoop, Sink, BTy, PSE, PointerBounds); in getDependenceDistanceStrideAndSize()
2031 ScalarEvolution &SE = *PSE.getSE(); in isDependent()
2041 DL, SE, *(PSE.getSymbolicMaxBackedgeTakenCount()), in isDependent()
2378 const SCEV *ExitCount = PSE->getSymbolicMaxBackedgeTakenCount(); in canAnalyzeLoop()
2522 AccessAnalysis Accesses(TheLoop, AA, LI, DependentAccesses, *PSE, in analyzeLoop()
2587 !getPtrStride(*PSE, LD->getType(), Ptr, TheLoop, SymbolicStrides).value_or(0)) { in analyzeLoop()
2629 Accesses.canCheckPtrAtRT(*PtrRtChecking, PSE->getSE(), TheLoop, in analyzeLoop()
2658 auto *SE = PSE->getSE(); in analyzeLoop()
2794 auto *SE = PSE->getSE(); in isInvariant()
2932 const SCEV *StrideExpr = getStrideFromPointer(Ptr, PSE->getSE(), TheLoop); in collectStridedAccess()
2958 const SCEV *MaxBTC = PSE->getSymbolicMaxBackedgeTakenCount(); in collectStridedAccess()
2968 ScalarEvolution *SE = PSE->getSE(); in collectStridedAccess()
2998 : PSE(std::make_unique<PredicatedScalarEvolution>(*SE, *L)), in LoopAccessInfo()
3015 DepChecker = std::make_unique<MemoryDepChecker>(*PSE, L, SymbolicStrides, in LoopAccessInfo()
3062 PSE->getPredicate().print(OS, Depth); in print()
3067 PSE->print(OS, Depth); in print()