Lines Matching refs:PSE

153 const SCEV *llvm::replaceSymbolicStrideSCEV(PredicatedScalarEvolution &PSE,  in replaceSymbolicStrideSCEV()  argument
156 const SCEV *OrigSCEV = PSE.getSCEV(Ptr); in replaceSymbolicStrideSCEV()
172 ScalarEvolution *SE = PSE.getSE(); in replaceSymbolicStrideSCEV()
174 PSE.addPredicate(*SE->getEqualPredicate(StrideSCEV, CT)); in replaceSymbolicStrideSCEV()
175 auto *Expr = PSE.getSCEV(Ptr); in replaceSymbolicStrideSCEV()
208 PredicatedScalarEvolution &PSE, in insert() argument
210 ScalarEvolution *SE = PSE.getSE(); in insert()
220 const SCEV *Ex = PSE.getBackedgeTakenCount(); in insert()
660 PredicatedScalarEvolution &PSE, in AccessAnalysis() argument
662 : TheLoop(TheLoop), BAA(*AA), AST(BAA), LI(LI), DepCands(DA), PSE(PSE), in AccessAnalysis()
803 PredicatedScalarEvolution &PSE; member in __anon30e05fe90111::AccessAnalysis
817 static bool hasComputableBounds(PredicatedScalarEvolution &PSE, Value *Ptr, in hasComputableBounds() argument
820 if (PSE.getSE()->isLoopInvariant(PtrScev, L)) in hasComputableBounds()
826 AR = PSE.getAsAddRec(Ptr); in hasComputableBounds()
835 static bool isNoWrap(PredicatedScalarEvolution &PSE, in isNoWrap() argument
838 const SCEV *PtrScev = PSE.getSCEV(Ptr); in isNoWrap()
839 if (PSE.getSE()->isLoopInvariant(PtrScev, L)) in isNoWrap()
842 int64_t Stride = getPtrStride(PSE, AccessTy, Ptr, L, Strides).value_or(0); in isNoWrap()
843 if (Stride == 1 || PSE.hasNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW)) in isNoWrap()
1044 findForkedPointer(PredicatedScalarEvolution &PSE, in findForkedPointer() argument
1047 ScalarEvolution *SE = PSE.getSE(); in findForkedPointer()
1065 return {{replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr), false}}; in findForkedPointer()
1078 findForkedPointer(PSE, StridesMap, Ptr, TheLoop); in createCheckForAccess()
1082 if (!hasComputableBounds(PSE, Ptr, PtrExpr, TheLoop, Assume)) in createCheckForAccess()
1092 if (!isNoWrap(PSE, StridesMap, Ptr, AccessTy, TheLoop)) { in createCheckForAccess()
1093 auto *Expr = PSE.getSCEV(Ptr); in createCheckForAccess()
1096 PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW); in createCheckForAccess()
1102 TranslatedPtrs[0] = {replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr), in createCheckForAccess()
1121 RtCheck.insert(TheLoop, Ptr, PtrExpr, AccessTy, IsWrite, DepId, ASId, PSE, in createCheckForAccess()
1412 PredicatedScalarEvolution &PSE, const Loop *L) { in isNoWrapAddRec() argument
1418 if (PSE.hasNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW)) in isNoWrapAddRec()
1452 auto *OpScev = PSE.getSCEV(OBO->getOperand(0)); in isNoWrapAddRec()
1462 std::optional<int64_t> llvm::getPtrStride(PredicatedScalarEvolution &PSE, in getPtrStride() argument
1476 const SCEV *PtrScev = replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr); in getPtrStride()
1480 AR = PSE.getAsAddRec(Ptr); in getPtrStride()
1496 const SCEV *Step = AR->getStepRecurrence(*PSE.getSE()); in getPtrStride()
1528 if (isNoWrapAddRec(Ptr, AR, PSE, Lp)) in getPtrStride()
1548 PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW); in getPtrStride()
1933 PredicatedScalarEvolution &PSE, const Loop *InnermostLoop) { in getDependenceDistanceStrideAndSize() argument
1935 auto &SE = *PSE.getSE(); in getDependenceDistanceStrideAndSize()
1952 getPtrStride(PSE, ATy, APtr, InnermostLoop, Strides, true).value_or(0); in getDependenceDistanceStrideAndSize()
1954 getPtrStride(PSE, BTy, BPtr, InnermostLoop, Strides, true).value_or(0); in getDependenceDistanceStrideAndSize()
1956 const SCEV *Src = PSE.getSCEV(APtr); in getDependenceDistanceStrideAndSize()
1957 const SCEV *Sink = PSE.getSCEV(BPtr); in getDependenceDistanceStrideAndSize()
2009 A, InstMap[AIdx], B, InstMap[BIdx], Strides, UnderlyingObjects, PSE, in isDependent()
2018 ScalarEvolution &SE = *PSE.getSE(); in isDependent()
2021 isSafeDependenceDistance(DL, SE, *(PSE.getBackedgeTakenCount()), *Dist, in isDependent()
2301 const SCEV *ExitCount = PSE->getBackedgeTakenCount(); in canAnalyzeLoop()
2448 AccessAnalysis Accesses(TheLoop, AA, LI, DependentAccesses, *PSE, in analyzeLoop()
2514 !getPtrStride(*PSE, LD->getType(), Ptr, TheLoop, SymbolicStrides).value_or(0)) { in analyzeLoop()
2557 Accesses.canCheckPtrAtRT(*PtrRtChecking, PSE->getSE(), TheLoop, in analyzeLoop()
2588 auto *SE = PSE->getSE(); in analyzeLoop()
2723 auto *SE = PSE->getSE(); in isInvariant()
2883 const SCEV *StrideExpr = getStrideFromPointer(Ptr, PSE->getSE(), TheLoop); in collectStridedAccess()
2909 const SCEV *BETakenCount = PSE->getBackedgeTakenCount(); in collectStridedAccess()
2919 ScalarEvolution *SE = PSE->getSE(); in collectStridedAccess()
2948 : PSE(std::make_unique<PredicatedScalarEvolution>(*SE, *L)), in LoopAccessInfo()
2950 DepChecker(std::make_unique<MemoryDepChecker>(*PSE, L)), TheLoop(L) { in LoopAccessInfo()
2993 PSE->getPredicate().print(OS, Depth); in print()
2998 PSE->print(OS, Depth); in print()