Lines Matching defs:Terms
65 SmallVectorImpl<const SCEV *> &Terms;
67 SCEVCollectTerms(SmallVectorImpl<const SCEV *> &T) : Terms(T) {}
73 Terms.push_back(S);
122 SmallVectorImpl<const SCEV *> &Terms;
127 : Terms(T), SE(SE) {}
152 Terms.push_back(SE.getMulExpr(Operands));
171 SmallVectorImpl<const SCEV *> &Terms) {
183 SCEVCollectTerms TermCollector(Terms);
188 dbgs() << "Terms:\n";
189 for (const SCEV *T : Terms)
193 SCEVCollectAddRecMultiplies MulCollector(Terms, SE);
198 SmallVectorImpl<const SCEV *> &Terms,
200 int Last = Terms.size() - 1;
201 const SCEV *Step = Terms[Last];
218 for (const SCEV *&Term : Terms) {
231 erase_if(Terms, [](const SCEV *E) { return isa<SCEVConstant>(E); });
233 if (Terms.size() > 0)
234 if (!findArrayDimensionsRec(SE, Terms, Sizes))
241 // Returns true when one of the SCEVs of Terms contains a SCEVUnknown parameter.
242 static inline bool containsParameters(SmallVectorImpl<const SCEV *> &Terms) {
243 for (const SCEV *T : Terms)
277 SmallVectorImpl<const SCEV *> &Terms,
280 if (Terms.size() < 1 || !ElementSize)
283 // Early return when Terms do not contain parameters: we do not delinearize
285 if (!containsParameters(Terms))
289 dbgs() << "Terms:\n";
290 for (const SCEV *T : Terms)
295 array_pod_sort(Terms.begin(), Terms.end());
296 Terms.erase(llvm::unique(Terms), Terms.end());
299 llvm::sort(Terms, [](const SCEV *LHS, const SCEV *RHS) {
305 for (const SCEV *&Term : Terms) {
315 for (const SCEV *T : Terms)
320 dbgs() << "Terms after sorting:\n";
452 SmallVector<const SCEV *, 4> Terms;
453 collectParametricTerms(SE, Expr, Terms);
455 if (Terms.empty())
459 findArrayDimensions(SE, Terms, Sizes, ElementSize);