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()
328 const SCEV *TripCount = in computeRefCost()
352 const SCEV *AccessFn, SmallVectorImpl<const SCEV *> &Subscripts) { in tryDelinearizeFixedSize()
377 const SCEV *ElemSize = SE.getElementSize(&StoreOrLoadInst); in delinearize()
381 const SCEV *AccessFn = in delinearize()
430 const SCEV *StepRec = AccessFnAR ? AccessFnAR->getStepRecurrence(SE) : nullptr; in delinearize()
437 const SCEV *Div = SE.getUDivExactExpr(AccessFn, ElemSize); in delinearize()
442 return all_of(Subscripts, [&](const SCEV *Subscript) { in delinearize()
460 bool allCoeffForLoopAreZero = all_of(Subscripts, [&](const SCEV *Subscript) { in isLoopInvariant()
467 bool IndexedReference::isConsecutive(const Loop &L, const SCEV *&Stride, in isConsecutive()
471 const SCEV *LastSubscript = Subscripts.back(); in isConsecutive()
472 for (const SCEV *Subscript : Subscripts) { in isConsecutive()
480 const SCEV *Coeff = getLastCoefficient(); in isConsecutive()
481 const SCEV *ElemSize = Sizes.back(); in isConsecutive()
495 const SCEV *CacheLineSize = SE.getConstant(Stride->getType(), CLS); in isConsecutive()
511 const SCEV *IndexedReference::getLastCoefficient() const { in getLastCoefficient()
512 const SCEV *LastSubscript = getLastSubscript(); in getLastCoefficient()
517 bool IndexedReference::isCoeffForLoopZeroOrInvariant(const SCEV &Subscript, in isCoeffForLoopZeroOrInvariant()
524 bool IndexedReference::isSimpleAddRecurrence(const SCEV &Subscript, in isSimpleAddRecurrence()
535 const SCEV *Start = AR->getStart(); in isSimpleAddRecurrence()
536 const SCEV *Step = AR->getStepRecurrence(SE); in isSimpleAddRecurrence()