Lines Matching refs:SCEV
154 const SCEV *llvm::replaceSymbolicStrideSCEV(PredicatedScalarEvolution &PSE, in replaceSymbolicStrideSCEV()
155 const DenseMap<Value *, const SCEV *> &PtrToStride, in replaceSymbolicStrideSCEV()
157 const SCEV *OrigSCEV = PSE.getSCEV(Ptr); in replaceSymbolicStrideSCEV()
161 DenseMap<Value *, const SCEV *>::const_iterator SI = PtrToStride.find(Ptr); in replaceSymbolicStrideSCEV()
166 const SCEV *StrideSCEV = SI->second; in replaceSymbolicStrideSCEV()
206 static std::pair<const SCEV *, const SCEV *> getStartAndEndForAccess( in getStartAndEndForAccess() argument
207 const Loop *Lp, const SCEV *PtrExpr, Type *AccessTy, in getStartAndEndForAccess()
209 DenseMap<std::pair<const SCEV *, Type *>, in getStartAndEndForAccess() argument
210 std::pair<const SCEV *, const SCEV *>> &PointerBounds) { in getStartAndEndForAccess()
219 const SCEV *ScStart; in getStartAndEndForAccess()
220 const SCEV *ScEnd; in getStartAndEndForAccess()
225 const SCEV *Ex = PSE.getSymbolicMaxBackedgeTakenCount(); in getStartAndEndForAccess()
229 const SCEV *Step = AR->getStepRecurrence(*SE); in getStartAndEndForAccess()
252 const SCEV *EltSizeSCEV = SE->getStoreSizeOfExpr(IdxTy, AccessTy); in getStartAndEndForAccess()
261 void RuntimePointerChecking::insert(Loop *Lp, Value *Ptr, const SCEV *PtrExpr, in insert()
341 const SCEV *SinkStartInt = SE->getPtrToIntExpr(SinkAR->getStart(), IntTy); in tryToCreateDiffCheck()
342 const SCEV *SrcStartInt = SE->getPtrToIntExpr(SrcAR->getStart(), IntTy); in tryToCreateDiffCheck()
413 static const SCEV *getMinFromExprs(const SCEV *I, const SCEV *J, in getMinFromExprs()
415 const SCEV *Diff = SE->getMinusSCEV(J, I); in getMinFromExprs()
431 bool RuntimeCheckingPtrGroup::addPointer(unsigned Index, const SCEV *Start, in addPointer()
432 const SCEV *End, unsigned AS, in addPointer()
441 const SCEV *Min0 = getMinFromExprs(Start, Low, &SE); in addPointer()
445 const SCEV *Min1 = getMinFromExprs(End, High, &SE); in addPointer()
696 const DenseMap<Value *, const SCEV *> &Strides,
707 Loop *TheLoop, const DenseMap<Value *, const SCEV *> &Strides,
816 const SCEV *PtrScev, Loop *L, bool Assume) { in hasComputableBounds()
834 const DenseMap<Value *, const SCEV *> &Strides, Value *Ptr, Type *AccessTy, in isNoWrap()
836 const SCEV *PtrScev = PSE.getSCEV(Ptr); in isNoWrap()
889 SmallVectorImpl<PointerIntPair<const SCEV *, 1, bool>> &ScevList, in findForkedSCEVs() argument
895 const SCEV *Scev = SE->getSCEV(Ptr); in findForkedSCEVs()
904 auto UndefPoisonCheck = [](PointerIntPair<const SCEV *, 1, bool> S) { in findForkedSCEVs() argument
908 auto GetBinOpExpr = [&SE](unsigned Opcode, const SCEV *L, const SCEV *R) { in findForkedSCEVs()
931 SmallVector<PointerIntPair<const SCEV *, 1, bool>, 2> BaseScevs; in findForkedSCEVs()
932 SmallVector<PointerIntPair<const SCEV *, 1, bool>, 2> OffsetScevs; in findForkedSCEVs()
959 const SCEV *Size = SE->getSizeOfExpr(IntPtrTy, SourceTy); in findForkedSCEVs()
962 const SCEV *Scaled1 = SE->getMulExpr( in findForkedSCEVs()
964 const SCEV *Scaled2 = SE->getMulExpr( in findForkedSCEVs()
973 SmallVector<PointerIntPair<const SCEV *, 1, bool>, 2> ChildScevs; in findForkedSCEVs()
987 SmallVector<PointerIntPair<const SCEV *, 1, bool>, 2> ChildScevs; in findForkedSCEVs()
1004 SmallVector<PointerIntPair<const SCEV *, 1, bool>> LScevs; in findForkedSCEVs()
1005 SmallVector<PointerIntPair<const SCEV *, 1, bool>> RScevs; in findForkedSCEVs()
1041 static SmallVector<PointerIntPair<const SCEV *, 1, bool>>
1043 const DenseMap<Value *, const SCEV *> &StridesMap, Value *Ptr, in findForkedPointer()
1047 SmallVector<PointerIntPair<const SCEV *, 1, bool>> Scevs; in findForkedPointer()
1068 const DenseMap<Value *, const SCEV *> &StridesMap, in createCheckForAccess()
1075 SmallVector<PointerIntPair<const SCEV *, 1, bool>> TranslatedPtrs = in createCheckForAccess()
1079 const SCEV *PtrExpr = get<0>(P); in createCheckForAccess()
1129 const DenseMap<Value *, const SCEV *> &StridesMap, in canCheckPtrAtRT()
1410 if (AR->getNoWrapFlags(SCEV::NoWrapMask)) in isNoWrapAddRec()
1450 return OpAR->getLoop() == L && OpAR->getNoWrapFlags(SCEV::FlagNSW); in isNoWrapAddRec()
1460 const DenseMap<Value *, const SCEV *> &StridesMap, in getPtrStride()
1462 const SCEV *PtrScev = replaceSymbolicStrideSCEV(PSE, StridesMap, Ptr); in getPtrStride()
1492 const SCEV *Step = AR->getStepRecurrence(*PSE.getSE()); in getPtrStride()
1602 const SCEV *PtrSCEVA = SE.getSCEV(PtrA); in getPointersDiff()
1603 const SCEV *PtrSCEVB = SE.getSCEV(PtrB); in getPointersDiff()
1811 const SCEV &MaxBTC, const SCEV &Dist, in isSafeDependenceDistance()
1833 const SCEV *Step = SE.getConstant(MaxBTC.getType(), ByteStride); in isSafeDependenceDistance()
1834 const SCEV *Product = SE.getMulExpr(&MaxBTC, Step); in isSafeDependenceDistance()
1836 const SCEV *CastedDist = &Dist; in isSafeDependenceDistance()
1837 const SCEV *CastedProduct = Product; in isSafeDependenceDistance()
1851 const SCEV *Minus = SE.getMinusSCEV(CastedDist, CastedProduct); in isSafeDependenceDistance()
1857 const SCEV *NegDist = SE.getNegativeSCEV(CastedDist); in isSafeDependenceDistance()
1925 const SCEV *Src = PSE.getSCEV(APtr); in getDependenceDistanceStrideAndSize()
1926 const SCEV *Sink = PSE.getSCEV(BPtr); in getDependenceDistanceStrideAndSize()
1937 const SCEV *Dist = SE.getMinusSCEV(Sink, Src); in getDependenceDistanceStrideAndSize()
2378 const SCEV *ExitCount = PSE->getSymbolicMaxBackedgeTakenCount(); in canAnalyzeLoop()
2799 const SCEV *S = SE->getSCEV(V); in isInvariant()
2851 static const SCEV *getStrideFromPointer(Value *Ptr, ScalarEvolution *SE, Loop *Lp) { in getStrideFromPointer()
2865 const SCEV *V = SE->getSCEV(Ptr); in getStrideFromPointer()
2932 const SCEV *StrideExpr = getStrideFromPointer(Ptr, PSE->getSE(), TheLoop); in collectStridedAccess()
2958 const SCEV *MaxBTC = PSE->getSymbolicMaxBackedgeTakenCount(); in collectStridedAccess()
2966 const SCEV *CastedStride = StrideExpr; in collectStridedAccess()
2967 const SCEV *CastedBECount = MaxBTC; in collectStridedAccess()
2973 const SCEV *StrideMinusBETaken = SE->getMinusSCEV(CastedStride, CastedBECount); in collectStridedAccess()
2988 const SCEV *StrideBase = StrideExpr; in collectStridedAccess()