Lines Matching refs:SCEV

39 static inline bool containsUndefs(const SCEV *S) {  in containsUndefs()
40 return SCEVExprContains(S, [](const SCEV *S) { in containsUndefs()
52 SmallVectorImpl<const SCEV *> &Strides;
54 SCEVCollectStrides(ScalarEvolution &SE, SmallVectorImpl<const SCEV *> &S) in SCEVCollectStrides()
57 bool follow(const SCEV *S) { in follow()
68 SmallVectorImpl<const SCEV *> &Terms;
70 SCEVCollectTerms(SmallVectorImpl<const SCEV *> &T) : Terms(T) {} in SCEVCollectTerms()
72 bool follow(const SCEV *S) { in follow()
97 bool follow(const SCEV *S) { in follow()
125 SmallVectorImpl<const SCEV *> &Terms;
128 SCEVCollectAddRecMultiplies(SmallVectorImpl<const SCEV *> &T, in SCEVCollectAddRecMultiplies()
132 bool follow(const SCEV *S) { in follow()
135 SmallVector<const SCEV *, 0> Operands; in follow()
173 void llvm::collectParametricTerms(ScalarEvolution &SE, const SCEV *Expr, in collectParametricTerms()
174 SmallVectorImpl<const SCEV *> &Terms) { in collectParametricTerms()
175 SmallVector<const SCEV *, 4> Strides; in collectParametricTerms()
181 for (const SCEV *S : Strides) in collectParametricTerms()
185 for (const SCEV *S : Strides) { in collectParametricTerms()
192 for (const SCEV *T : Terms) in collectParametricTerms()
201 SmallVectorImpl<const SCEV *> &Terms, in findArrayDimensionsRec()
202 SmallVectorImpl<const SCEV *> &Sizes) { in findArrayDimensionsRec()
204 const SCEV *Step = Terms[Last]; in findArrayDimensionsRec()
209 SmallVector<const SCEV *, 2> Qs; in findArrayDimensionsRec()
210 for (const SCEV *Op : M->operands()) in findArrayDimensionsRec()
221 for (const SCEV *&Term : Terms) { in findArrayDimensionsRec()
223 const SCEV *Q, *R; in findArrayDimensionsRec()
234 erase_if(Terms, [](const SCEV *E) { return isa<SCEVConstant>(E); }); in findArrayDimensionsRec()
245 static inline bool containsParameters(SmallVectorImpl<const SCEV *> &Terms) { in containsParameters()
246 for (const SCEV *T : Terms) in containsParameters()
247 if (SCEVExprContains(T, [](const SCEV *S) { return isa<SCEVUnknown>(S); })) in containsParameters()
254 static inline int numberOfTerms(const SCEV *S) { in numberOfTerms()
260 static const SCEV *removeConstantFactors(ScalarEvolution &SE, const SCEV *T) { in removeConstantFactors()
268 SmallVector<const SCEV *, 2> Factors; in removeConstantFactors()
269 for (const SCEV *Op : M->operands()) in removeConstantFactors()
280 SmallVectorImpl<const SCEV *> &Terms, in findArrayDimensions()
281 SmallVectorImpl<const SCEV *> &Sizes, in findArrayDimensions()
282 const SCEV *ElementSize) { in findArrayDimensions()
293 for (const SCEV *T : Terms) in findArrayDimensions()
302 llvm::sort(Terms, [](const SCEV *LHS, const SCEV *RHS) { in findArrayDimensions()
308 for (const SCEV *&Term : Terms) { in findArrayDimensions()
309 const SCEV *Q, *R; in findArrayDimensions()
315 SmallVector<const SCEV *, 4> NewTerms; in findArrayDimensions()
318 for (const SCEV *T : Terms) in findArrayDimensions()
319 if (const SCEV *NewT = removeConstantFactors(SE, T)) in findArrayDimensions()
324 for (const SCEV *T : NewTerms) in findArrayDimensions()
338 for (const SCEV *S : Sizes) in findArrayDimensions()
343 void llvm::computeAccessFunctions(ScalarEvolution &SE, const SCEV *Expr, in computeAccessFunctions()
344 SmallVectorImpl<const SCEV *> &Subscripts, in computeAccessFunctions()
345 SmallVectorImpl<const SCEV *> &Sizes) { in computeAccessFunctions()
354 const SCEV *Res = Expr; in computeAccessFunctions()
357 const SCEV *Q, *R; in computeAccessFunctions()
396 for (const SCEV *S : Subscripts) in computeAccessFunctions()
450 void llvm::delinearize(ScalarEvolution &SE, const SCEV *Expr, in delinearize()
451 SmallVectorImpl<const SCEV *> &Subscripts, in delinearize()
452 SmallVectorImpl<const SCEV *> &Sizes, in delinearize()
453 const SCEV *ElementSize) { in delinearize()
455 SmallVector<const SCEV *, 4> Terms; in delinearize()
476 for (const SCEV *S : Sizes) in delinearize()
480 for (const SCEV *S : Subscripts) in delinearize()
488 SmallVectorImpl<const SCEV *> &Subscripts, in getIndexExpressionsFromGEP()
496 const SCEV *Expr = SE.getSCEV(GEP->getOperand(i)); in getIndexExpressionsFromGEP()
525 ScalarEvolution *SE, Instruction *Inst, const SCEV *AccessFn, in tryDelinearizeFixedSizeImpl()
526 SmallVectorImpl<const SCEV *> &Subscripts, SmallVectorImpl<int> &Sizes) { in tryDelinearizeFixedSizeImpl()
595 const SCEV *AccessFn = SE->getSCEVAtScope(getPointerOperand(&Inst), L); in printDelinearization()
609 SmallVector<const SCEV *, 3> Subscripts, Sizes; in printDelinearization()