Lines Matching refs:SCEV
37 static inline bool containsUndefs(const SCEV *S) { in containsUndefs()
38 return SCEVExprContains(S, [](const SCEV *S) { in containsUndefs()
50 SmallVectorImpl<const SCEV *> &Strides;
52 SCEVCollectStrides(ScalarEvolution &SE, SmallVectorImpl<const SCEV *> &S) in SCEVCollectStrides()
55 bool follow(const SCEV *S) { in follow()
66 SmallVectorImpl<const SCEV *> &Terms;
68 SCEVCollectTerms(SmallVectorImpl<const SCEV *> &T) : Terms(T) {} in SCEVCollectTerms()
70 bool follow(const SCEV *S) { in follow()
95 bool follow(const SCEV *S) { in follow()
123 SmallVectorImpl<const SCEV *> &Terms;
126 SCEVCollectAddRecMultiplies(SmallVectorImpl<const SCEV *> &T, in SCEVCollectAddRecMultiplies()
130 bool follow(const SCEV *S) { in follow()
133 SmallVector<const SCEV *, 0> Operands; in follow()
171 void llvm::collectParametricTerms(ScalarEvolution &SE, const SCEV *Expr, in collectParametricTerms()
172 SmallVectorImpl<const SCEV *> &Terms) { in collectParametricTerms()
173 SmallVector<const SCEV *, 4> Strides; in collectParametricTerms()
179 for (const SCEV *S : Strides) in collectParametricTerms()
183 for (const SCEV *S : Strides) { in collectParametricTerms()
190 for (const SCEV *T : Terms) in collectParametricTerms()
199 SmallVectorImpl<const SCEV *> &Terms, in findArrayDimensionsRec()
200 SmallVectorImpl<const SCEV *> &Sizes) { in findArrayDimensionsRec()
202 const SCEV *Step = Terms[Last]; in findArrayDimensionsRec()
207 SmallVector<const SCEV *, 2> Qs; in findArrayDimensionsRec()
208 for (const SCEV *Op : M->operands()) in findArrayDimensionsRec()
219 for (const SCEV *&Term : Terms) { in findArrayDimensionsRec()
221 const SCEV *Q, *R; in findArrayDimensionsRec()
232 erase_if(Terms, [](const SCEV *E) { return isa<SCEVConstant>(E); }); in findArrayDimensionsRec()
243 static inline bool containsParameters(SmallVectorImpl<const SCEV *> &Terms) { in containsParameters()
244 for (const SCEV *T : Terms) in containsParameters()
245 if (SCEVExprContains(T, [](const SCEV *S) { return isa<SCEVUnknown>(S); })) in containsParameters()
252 static inline int numberOfTerms(const SCEV *S) { in numberOfTerms()
258 static const SCEV *removeConstantFactors(ScalarEvolution &SE, const SCEV *T) { in removeConstantFactors()
266 SmallVector<const SCEV *, 2> Factors; in removeConstantFactors()
267 for (const SCEV *Op : M->operands()) in removeConstantFactors()
278 SmallVectorImpl<const SCEV *> &Terms, in findArrayDimensions()
279 SmallVectorImpl<const SCEV *> &Sizes, in findArrayDimensions()
280 const SCEV *ElementSize) { in findArrayDimensions()
291 for (const SCEV *T : Terms) in findArrayDimensions()
300 llvm::sort(Terms, [](const SCEV *LHS, const SCEV *RHS) { in findArrayDimensions()
306 for (const SCEV *&Term : Terms) { in findArrayDimensions()
307 const SCEV *Q, *R; in findArrayDimensions()
313 SmallVector<const SCEV *, 4> NewTerms; in findArrayDimensions()
316 for (const SCEV *T : Terms) in findArrayDimensions()
317 if (const SCEV *NewT = removeConstantFactors(SE, T)) in findArrayDimensions()
322 for (const SCEV *T : NewTerms) in findArrayDimensions()
336 for (const SCEV *S : Sizes) in findArrayDimensions()
341 void llvm::computeAccessFunctions(ScalarEvolution &SE, const SCEV *Expr, in computeAccessFunctions()
342 SmallVectorImpl<const SCEV *> &Subscripts, in computeAccessFunctions()
343 SmallVectorImpl<const SCEV *> &Sizes) { in computeAccessFunctions()
352 const SCEV *Res = Expr; in computeAccessFunctions()
355 const SCEV *Q, *R; in computeAccessFunctions()
394 for (const SCEV *S : Subscripts) in computeAccessFunctions()
448 void llvm::delinearize(ScalarEvolution &SE, const SCEV *Expr, in delinearize()
449 SmallVectorImpl<const SCEV *> &Subscripts, in delinearize()
450 SmallVectorImpl<const SCEV *> &Sizes, in delinearize()
451 const SCEV *ElementSize) { in delinearize()
453 SmallVector<const SCEV *, 4> Terms; in delinearize()
474 for (const SCEV *S : Sizes) in delinearize()
478 for (const SCEV *S : Subscripts) in delinearize()
486 SmallVectorImpl<const SCEV *> &Subscripts, in getIndexExpressionsFromGEP()
494 const SCEV *Expr = SE.getSCEV(GEP->getOperand(i)); in getIndexExpressionsFromGEP()
523 ScalarEvolution *SE, Instruction *Inst, const SCEV *AccessFn, in tryDelinearizeFixedSizeImpl()
524 SmallVectorImpl<const SCEV *> &Subscripts, SmallVectorImpl<int> &Sizes) { in tryDelinearizeFixedSizeImpl()
575 const SCEV *AccessFn = SE->getSCEVAtScope(getPointerOperand(&Inst), L); in printDelinearization()
589 SmallVector<const SCEV *, 3> Subscripts, Sizes; in printDelinearization()