Lines Matching defs:PSE

154 const SCEV *llvm::replaceSymbolicStrideSCEV(PredicatedScalarEvolution &PSE,
157 const SCEV *OrigSCEV = PSE.getSCEV(Ptr);
173 ScalarEvolution *SE = PSE.getSE();
175 PSE.addPredicate(*SE->getEqualPredicate(StrideSCEV, CT));
176 const SCEV *Expr = PSE.getSCEV(Ptr);
253 PredicatedScalarEvolution &PSE,
255 const SCEV *MaxBECount = PSE.getSymbolicMaxBackedgeTakenCount();
257 Lp, PtrExpr, AccessTy, MaxBECount, PSE.getSE(), &DC.getPointerBounds());
646 PredicatedScalarEvolution &PSE,
648 : TheLoop(TheLoop), BAA(*AA), AST(BAA), LI(LI), DepCands(DA), PSE(PSE),
785 PredicatedScalarEvolution &PSE;
799 static bool hasComputableBounds(PredicatedScalarEvolution &PSE, Value *Ptr,
802 if (PSE.getSE()->isLoopInvariant(PtrScev, L))
808 AR = PSE.getAsAddRec(Ptr);
817 static bool isNoWrap(PredicatedScalarEvolution &PSE,
820 const SCEV *PtrScev = PSE.getSCEV(Ptr);
821 if (PSE.getSE()->isLoopInvariant(PtrScev, L))
824 return getPtrStride(PSE, AccessTy, Ptr, L, Strides, Assume).has_value() ||
825 PSE.hasNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW);
1023 findForkedPointer(PredicatedScalarEvolution &PSE,
1026 ScalarEvolution *SE = PSE.getSE();
1044 return {{replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr), false}};
1057 findForkedPointer(PSE, StridesMap, Ptr, TheLoop);
1061 if (!hasComputableBounds(PSE, Ptr, PtrExpr, TheLoop, Assume))
1071 if (!isNoWrap(PSE, StridesMap, Ptr, AccessTy, TheLoop, Assume))
1075 // checking, because assumptions might have been added to PSE.
1077 TranslatedPtrs[0] = {replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr),
1096 RtCheck.insert(TheLoop, Ptr, PtrExpr, AccessTy, IsWrite, DepId, ASId, PSE,
1384 PredicatedScalarEvolution &PSE, const Loop *L) {
1390 if (PSE.hasNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW))
1424 const SCEV *OpScev = PSE.getSCEV(OBO->getOperand(0));
1435 llvm::getPtrStride(PredicatedScalarEvolution &PSE, Type *AccessTy, Value *Ptr,
1439 const SCEV *PtrScev = replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr);
1440 if (PSE.getSE()->isLoopInvariant(PtrScev, Lp))
1453 AR = PSE.getAsAddRec(Ptr);
1469 const SCEV *Step = AR->getStepRecurrence(*PSE.getSE());
1501 if (isNoWrapAddRec(Ptr, AR, PSE, Lp))
1522 PSE.setNoOverflow(Ptr, SCEVWrapPredicate::IncrementNUSW);
1884 auto &SE = *PSE.getSE();
1901 getPtrStride(PSE, ATy, APtr, InnermostLoop, SymbolicStrides, true, true);
1903 getPtrStride(PSE, BTy, BPtr, InnermostLoop, SymbolicStrides, true, true);
1905 const SCEV *Src = PSE.getSCEV(APtr);
1906 const SCEV *Sink = PSE.getSCEV(BPtr);
1931 const SCEV *MaxBECount = PSE.getSymbolicMaxBackedgeTakenCount();
1933 InnermostLoop, Src, ATy, MaxBECount, PSE.getSE(), &PointerBounds);
1935 InnermostLoop, Sink, BTy, MaxBECount, PSE.getSE(), &PointerBounds);
2034 ScalarEvolution &SE = *PSE.getSE();
2043 DL, SE, *(PSE.getSymbolicMaxBackedgeTakenCount()),
2380 const SCEV *ExitCount = PSE->getSymbolicMaxBackedgeTakenCount();
2531 AccessAnalysis Accesses(TheLoop, AA, LI, DependentAccesses, *PSE,
2596 !getPtrStride(*PSE, AccessTy, Ptr, TheLoop, SymbolicStrides)) {
2638 Accesses.canCheckPtrAtRT(*PtrRtChecking, PSE->getSE(), TheLoop,
2667 auto *SE = PSE->getSE();
2803 auto *SE = PSE->getSE();
2941 const SCEV *StrideExpr = getStrideFromPointer(Ptr, PSE->getSE(), TheLoop);
2967 const SCEV *MaxBTC = PSE->getSymbolicMaxBackedgeTakenCount();
2977 ScalarEvolution *SE = PSE->getSE();
3007 : PSE(std::make_unique<PredicatedScalarEvolution>(*SE, *L)),
3024 DepChecker = std::make_unique<MemoryDepChecker>(*PSE, L, SymbolicStrides,
3071 PSE->getPredicate().print(OS, Depth);
3076 PSE->print(OS, Depth);