Lines Matching refs:SCEV
81 static bool isOneDimensionalArray(const SCEV &AccessFn, const SCEV &ElemSize, in isOneDimensionalArray()
90 const SCEV *Start = AR->getStart(); in isOneDimensionalArray()
91 const SCEV *Step = AR->getStepRecurrence(SE); in isOneDimensionalArray()
99 const SCEV *StepRec = AR->getStepRecurrence(SE); in isOneDimensionalArray()
109 static const SCEV *computeTripCount(const Loop &L, const SCEV &ElemSize, in computeTripCount()
111 const SCEV *BackedgeTakenCount = SE.getBackedgeTakenCount(&L); in computeTripCount()
112 const SCEV *TripCount = (!isa<SCEVCouldNotCompute>(BackedgeTakenCount) && in computeTripCount()
137 for (const SCEV *Subscript : R.Subscripts) in operator <<()
141 for (const SCEV *Size : R.Sizes) in operator <<()
189 const SCEV *LastSubscript = getLastSubscript(); in hasSpacialReuse()
190 const SCEV *OtherLastSubscript = Other.getLastSubscript(); in hasSpacialReuse()
245 const SCEV *Distance = D->getDistance(Level); in hasTemporalReuse()
286 const SCEV *TripCount = computeTripCount(L, *Sizes.back(), SE); in computeRefCost()
290 const SCEV *RefCost = nullptr; in computeRefCost()
291 const SCEV *Stride = nullptr; in computeRefCost()
298 const SCEV *CacheLineSize = SE.getConstant(WiderType, CLS); in computeRefCost()
301 const SCEV *Numerator = SE.getMulExpr(Stride, TripCount); in computeRefCost()
323 const SCEV *TripCount = in computeRefCost()
347 const SCEV *AccessFn, SmallVectorImpl<const SCEV *> &Subscripts) { in tryDelinearizeFixedSize()
372 const SCEV *ElemSize = SE.getElementSize(&StoreOrLoadInst); in delinearize()
376 const SCEV *AccessFn = in delinearize()
425 const SCEV *StepRec = AccessFnAR ? AccessFnAR->getStepRecurrence(SE) : nullptr; in delinearize()
432 const SCEV *Div = SE.getUDivExactExpr(AccessFn, ElemSize); in delinearize()
437 return all_of(Subscripts, [&](const SCEV *Subscript) { in delinearize()
455 bool allCoeffForLoopAreZero = all_of(Subscripts, [&](const SCEV *Subscript) { in isLoopInvariant()
462 bool IndexedReference::isConsecutive(const Loop &L, const SCEV *&Stride, in isConsecutive()
466 const SCEV *LastSubscript = Subscripts.back(); in isConsecutive()
467 for (const SCEV *Subscript : Subscripts) { in isConsecutive()
475 const SCEV *Coeff = getLastCoefficient(); in isConsecutive()
476 const SCEV *ElemSize = Sizes.back(); in isConsecutive()
490 const SCEV *CacheLineSize = SE.getConstant(Stride->getType(), CLS); in isConsecutive()
506 const SCEV *IndexedReference::getLastCoefficient() const { in getLastCoefficient()
507 const SCEV *LastSubscript = getLastSubscript(); in getLastCoefficient()
512 bool IndexedReference::isCoeffForLoopZeroOrInvariant(const SCEV &Subscript, in isCoeffForLoopZeroOrInvariant()
519 bool IndexedReference::isSimpleAddRecurrence(const SCEV &Subscript, in isSimpleAddRecurrence()
530 const SCEV *Start = AR->getStart(); in isSimpleAddRecurrence()
531 const SCEV *Step = AR->getStepRecurrence(SE); in isSimpleAddRecurrence()