Lines Matching defs:SE
48 ScalarEvolution &SE;
51 SCEVCollectStrides(ScalarEvolution &SE, SmallVectorImpl<const SCEV *> &S)
52 : SE(SE), Strides(S) {}
56 Strides.push_back(AR->getStepRecurrence(SE));
123 ScalarEvolution &SE;
126 ScalarEvolution &SE)
127 : Terms(T), SE(SE) {}
152 Terms.push_back(SE.getMulExpr(Operands));
170 void llvm::collectParametricTerms(ScalarEvolution &SE, const SCEV *Expr,
173 SCEVCollectStrides StrideCollector(SE, Strides);
193 SCEVCollectAddRecMultiplies MulCollector(Terms, SE);
197 static bool findArrayDimensionsRec(ScalarEvolution &SE,
211 Step = SE.getMulExpr(Qs);
221 SCEVDivision::divide(SE, Term, Step, &Q, &R);
234 if (!findArrayDimensionsRec(SE, Terms, Sizes))
257 static const SCEV *removeConstantFactors(ScalarEvolution &SE, const SCEV *T) {
270 return SE.getMulExpr(Factors);
276 void llvm::findArrayDimensions(ScalarEvolution &SE,
307 SCEVDivision::divide(SE, Term, ElementSize, &Q, &R);
316 if (const SCEV *NewT = removeConstantFactors(SE, T))
325 if (NewTerms.empty() || !findArrayDimensionsRec(SE, NewTerms, Sizes)) {
340 void llvm::computeAccessFunctions(ScalarEvolution &SE, const SCEV *Expr,
355 SCEVDivision::divide(SE, Res, Sizes[i], &Q, &R);
447 void llvm::delinearize(ScalarEvolution &SE, const SCEV *Expr,
453 collectParametricTerms(SE, Expr, Terms);
459 findArrayDimensions(SE, Terms, Sizes, ElementSize);
465 computeAccessFunctions(SE, Expr, Subscripts, Sizes);
483 bool llvm::getIndexExpressionsFromGEP(ScalarEvolution &SE,
493 const SCEV *Expr = SE.getSCEV(GEP->getOperand(i));
522 ScalarEvolution *SE, Instruction *Inst, const SCEV *AccessFn,
531 getIndexExpressionsFromGEP(*SE, SrcGEP, Subscripts, Sizes);
546 dyn_cast<SCEVUnknown>(SE->getPointerBase(AccessFn));
562 ScalarEvolution *SE) {
574 const SCEV *AccessFn = SE->getSCEVAtScope(getPointerOperand(&Inst), L);
577 dyn_cast<SCEVUnknown>(SE->getPointerBase(AccessFn));
581 AccessFn = SE->getMinusSCEV(AccessFn, BasePointer);
589 delinearize(*SE, AccessFn, Subscripts, Sizes, SE->getElementSize(&Inst));