Lines Matching refs:SE

82                                   const Loop &L, ScalarEvolution &SE) {  in isOneDimensionalArray()  argument
91 const SCEV *Step = AR->getStepRecurrence(SE); in isOneDimensionalArray()
96 if (!SE.isLoopInvariant(Start, &L) || !SE.isLoopInvariant(Step, &L)) in isOneDimensionalArray()
99 const SCEV *StepRec = AR->getStepRecurrence(SE); in isOneDimensionalArray()
100 if (StepRec && SE.isKnownNegative(StepRec)) in isOneDimensionalArray()
101 StepRec = SE.getNegativeSCEV(StepRec); in isOneDimensionalArray()
110 ScalarEvolution &SE) { in computeTripCount() argument
111 const SCEV *BackedgeTakenCount = SE.getBackedgeTakenCount(&L); in computeTripCount()
114 ? SE.getTripCountFromExitCount(BackedgeTakenCount) in computeTripCount()
120 TripCount = SE.getConstant(ElemSize.getType(), DefaultTripCount); in computeTripCount()
148 const LoopInfo &LI, ScalarEvolution &SE) in IndexedReference() argument
149 : StoreOrLoadInst(StoreOrLoadInst), SE(SE) { in IndexedReference()
192 SE.getMinusSCEV(LastSubscript, OtherLastSubscript)); in hasSpacialReuse()
287 const SCEV *TripCount = computeTripCount(L, *Sizes.back(), SE); in computeRefCost()
298 Type *WiderType = SE.getWiderType(Stride->getType(), TripCount->getType()); in computeRefCost()
299 const SCEV *CacheLineSize = SE.getConstant(WiderType, CLS); in computeRefCost()
300 Stride = SE.getNoopOrAnyExtend(Stride, WiderType); in computeRefCost()
301 TripCount = SE.getNoopOrAnyExtend(TripCount, WiderType); in computeRefCost()
302 const SCEV *Numerator = SE.getMulExpr(Stride, TripCount); in computeRefCost()
303 RefCost = SE.getUDivExpr(Numerator, CacheLineSize); in computeRefCost()
325 computeTripCount(*AR->getLoop(), *Sizes.back(), SE); in computeRefCost()
326 Type *WiderType = SE.getWiderType(RefCost->getType(), TripCount->getType()); in computeRefCost()
327 RefCost = SE.getMulExpr(SE.getNoopOrAnyExtend(RefCost, WiderType), in computeRefCost()
328 SE.getNoopOrAnyExtend(TripCount, WiderType)); in computeRefCost()
350 if (!tryDelinearizeFixedSizeImpl(&SE, &StoreOrLoadInst, AccessFn, Subscripts, in tryDelinearizeFixedSize()
357 SE.getConstant(Subscripts[Idx]->getType(), ArraySizes[Idx - 1])); in tryDelinearizeFixedSize()
373 const SCEV *ElemSize = SE.getElementSize(&StoreOrLoadInst); in delinearize()
378 SE.getSCEVAtScope(getPointerOperand(&StoreOrLoadInst), L); in delinearize()
380 BasePointer = dyn_cast<SCEVUnknown>(SE.getPointerBase(AccessFn)); in delinearize()
398 AccessFn = SE.getMinusSCEV(AccessFn, BasePointer); in delinearize()
404 llvm::delinearize(SE, AccessFn, Subscripts, Sizes, in delinearize()
405 SE.getElementSize(&StoreOrLoadInst)); in delinearize()
412 if (!isOneDimensionalArray(*AccessFn, *ElemSize, *L, SE)) { in delinearize()
426 const SCEV *StepRec = AccessFnAR ? AccessFnAR->getStepRecurrence(SE) : nullptr; in delinearize()
428 if (StepRec && SE.isKnownNegative(StepRec)) in delinearize()
429 AccessFn = SE.getAddRecExpr(AccessFnAR->getStart(), in delinearize()
430 SE.getNegativeSCEV(StepRec), in delinearize()
433 const SCEV *Div = SE.getUDivExactExpr(AccessFn, ElemSize); in delinearize()
449 assert(SE.isSCEVable(Addr->getType()) && "Addr should be SCEVable"); in isLoopInvariant()
451 if (SE.isLoopInvariant(SE.getSCEV(Addr), &L)) in isLoopInvariant()
478 Type *WiderType = SE.getWiderType(Coeff->getType(), ElemSize->getType()); in isConsecutive()
489 Stride = SE.getMulExpr(SE.getNoopOrSignExtend(Coeff, WiderType), in isConsecutive()
490 SE.getNoopOrSignExtend(ElemSize, WiderType)); in isConsecutive()
491 const SCEV *CacheLineSize = SE.getConstant(Stride->getType(), CLS); in isConsecutive()
493 Stride = SE.isKnownNegative(Stride) ? SE.getNegativeSCEV(Stride) : Stride; in isConsecutive()
494 return SE.isKnownPredicate(ICmpInst::ICMP_ULT, Stride, CacheLineSize); in isConsecutive()
510 return AR->getStepRecurrence(SE); in getLastCoefficient()
517 : SE.isLoopInvariant(&Subscript, &L); in isCoeffForLoopZeroOrInvariant()
532 const SCEV *Step = AR->getStepRecurrence(SE); in isSimpleAddRecurrence()
534 if (!SE.isLoopInvariant(Start, &L) || !SE.isLoopInvariant(Step, &L)) in isSimpleAddRecurrence()
559 ScalarEvolution &SE, TargetTransformInfo &TTI, in CacheCost() argument
563 LI(LI), SE(SE), TTI(TTI), AA(AA), DI(DI) { in CacheCost()
567 unsigned TripCount = SE.getSmallConstantTripCount(L); in CacheCost()
592 return std::make_unique<CacheCost>(Loops, AR.LI, AR.SE, AR.TTI, AR.AA, DI, TRT); in getCacheCost()
627 std::unique_ptr<IndexedReference> R(new IndexedReference(I, LI, SE)); in populateReferenceGroups()
735 DependenceInfo DI(F, &AR.AA, &AR.SE, &AR.LI); in run()