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()
246 const SCEV *Distance = D->getDistance(Level); in hasTemporalReuse()
287 const SCEV *TripCount = computeTripCount(L, *Sizes.back(), SE); in computeRefCost()
291 const SCEV *RefCost = nullptr; in computeRefCost()
292 const SCEV *Stride = nullptr; in computeRefCost()
299 const SCEV *CacheLineSize = SE.getConstant(WiderType, CLS); in computeRefCost()
302 const SCEV *Numerator = SE.getMulExpr(Stride, TripCount); in computeRefCost()
324 const SCEV *TripCount = in computeRefCost()
348 const SCEV *AccessFn, SmallVectorImpl<const SCEV *> &Subscripts) { in tryDelinearizeFixedSize()
373 const SCEV *ElemSize = SE.getElementSize(&StoreOrLoadInst); in delinearize()
377 const SCEV *AccessFn = in delinearize()
426 const SCEV *StepRec = AccessFnAR ? AccessFnAR->getStepRecurrence(SE) : nullptr; in delinearize()
433 const SCEV *Div = SE.getUDivExactExpr(AccessFn, ElemSize); in delinearize()
438 return all_of(Subscripts, [&](const SCEV *Subscript) { in delinearize()
456 bool allCoeffForLoopAreZero = all_of(Subscripts, [&](const SCEV *Subscript) { in isLoopInvariant()
463 bool IndexedReference::isConsecutive(const Loop &L, const SCEV *&Stride, in isConsecutive()
467 const SCEV *LastSubscript = Subscripts.back(); in isConsecutive()
468 for (const SCEV *Subscript : Subscripts) { in isConsecutive()
476 const SCEV *Coeff = getLastCoefficient(); in isConsecutive()
477 const SCEV *ElemSize = Sizes.back(); in isConsecutive()
491 const SCEV *CacheLineSize = SE.getConstant(Stride->getType(), CLS); in isConsecutive()
507 const SCEV *IndexedReference::getLastCoefficient() const { in getLastCoefficient()
508 const SCEV *LastSubscript = getLastSubscript(); in getLastCoefficient()
513 bool IndexedReference::isCoeffForLoopZeroOrInvariant(const SCEV &Subscript, in isCoeffForLoopZeroOrInvariant()
520 bool IndexedReference::isSimpleAddRecurrence(const SCEV &Subscript, in isSimpleAddRecurrence()
531 const SCEV *Start = AR->getStart(); in isSimpleAddRecurrence()
532 const SCEV *Step = AR->getStepRecurrence(SE); in isSimpleAddRecurrence()