Home | History | Annotate | Download | only in Analysis

Lines Matching refs:SCEV

211 static bool FactorOutConstant(const SCEV *&S,
212 const SCEV *&Remainder,
213 const SCEV *Factor,
241 const SCEV *Div = SE.getConstant(CI);
262 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end());
273 const SCEV *SOp = M->getOperand(i);
274 const SCEV *Remainder = SE.getConstant(SOp->getType(), 0);
277 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end());
288 const SCEV *Step = A->getStepRecurrence(SE);
289 const SCEV *StepRem = SE.getConstant(Step->getType(), 0);
294 const SCEV *Start = A->getStart();
298 S = SE.getAddRecExpr(Start, Step, A->getLoop(), SCEV::FlagAnyWrap);
309 static void SimplifyAddOperands(SmallVectorImpl<const SCEV *> &Ops,
316 SmallVector<const SCEV *, 8> NoAddRecs(Ops.begin(), Ops.end() - NumAddRecs);
317 SmallVector<const SCEV *, 8> AddRecs(Ops.end() - NumAddRecs, Ops.end());
319 const SCEV *Sum = NoAddRecs.empty() ?
338 static void SplitAddRecs(SmallVectorImpl<const SCEV *> &Ops,
342 SmallVector<const SCEV *, 8> AddRecs;
345 const SCEV *Start = A->getStart();
347 const SCEV *Zero = SE.getConstant(Ty, 0);
352 SCEV::FlagAnyWrap));
396 SCEV *const *op_begin,
397 const SCEV *const *op_end,
403 SmallVector<const SCEV *, 8> Ops(op_begin, op_end);
418 SmallVector<const SCEV *, 8> ScaledOps;
420 const SCEV *ElSize = SE.getSizeOfExpr(ElTy);
422 SmallVector<const SCEV *, 8> NewOps;
424 const SCEV *Op = Ops[i];
425 const SCEV *Remainder = SE.getConstant(Ty, 0);
621 /// SCEV expansion. If they are nested, this is the most nested. If they are
636 const Loop *SCEVExpander::getRelevantLoop(const SCEV *S) {
637 // Test whether we've already computed the most relevant loop for this SCEV.
638 std::pair<DenseMap<const SCEV *, const Loop *>::iterator, bool> Pair =
672 llvm_unreachable("Unexpected SCEV type!");
683 bool operator()(std::pair<const Loop *, const SCEV *> LHS,
684 std::pair<const Loop *, const SCEV *> RHS) const {
717 SmallVector<std::pair<const Loop *, const SCEV *>, 8> OpsAndLoops;
729 for (SmallVectorImpl<std::pair<const Loop *, const SCEV *> >::iterator
732 const SCEV *Op = I->second;
740 SmallVector<const SCEV *, 4> NewOps;
744 const SCEV *X = I->second;
755 SmallVector<const SCEV *, 4> NewOps;
786 SmallVector<std::pair<const Loop *, const SCEV *>, 8> OpsAndLoops;
797 for (SmallVectorImpl<std::pair<const Loop *, const SCEV *> >::iterator
799 const SCEV *Op = I->second;
841 static void ExposePointerBase(const SCEV *&Base, const SCEV *&Rest,
850 SCEV::FlagAnyWrap));
854 SmallVector<const SCEV *, 8> NewAddOps(A->op_begin(), A->op_end());
1011 const SCEV *const StepArray[1] = { SE.getSCEV(StepV) };
1104 const SCEV *Step = Normalized->getStepRecurrence(SE);
1174 const SCEV *Start = Normalized->getStart();
1175 const SCEV *PostLoopOffset = 0;
1183 SCEV::FlagAnyWrap));
1187 const SCEV *Step = Normalized->getStepRecurrence(SE);
1188 const SCEV *PostLoopScale = 0;
1197 SCEV::FlagAnyWrap));
1256 const SCEV *const OffsetArray[1] = { PostLoopOffset };
1286 SmallVector<const SCEV *, 4> NewOps(S->getNumOperands());
1291 SCEV::FlagAnyWrap));
1307 SmallVector<const SCEV *, 4> NewOps(S->op_begin(), S->op_end());
1310 const SCEV *Rest = SE.getAddRecExpr(NewOps, L, SCEV::FlagAnyWrap);
1314 const SCEV *Base = S->getStart();
1315 const SCEV *RestArray[1] = { Rest };
1386 const SCEV *IH = SE.getUnknown(CanonicalIV); // Get I as a "symbolic" SCEV.
1389 const SCEV *NewS = S;
1390 const SCEV *Ext = SE.getNoopOrAnyExtend(S, CanonicalIV->getType());
1394 const SCEV *V = cast<SCEVAddRecExpr>(NewS)->evaluateAtIteration(IH, SE);
1398 const SCEV *T = SE.getTruncateOrNoop(V, Ty);
1477 Value *SCEVExpander::expandCodeFor(const SCEV *SH, Type *Ty,
1483 Value *SCEVExpander::expandCodeFor(const SCEV *SH, Type *Ty) {
1484 // Expand the code for this SCEV.
1494 Value *SCEVExpander::expand(const SCEV *S) {
1495 // Compute an insertion point for this SCEV object. Hoist the instructions
1511 // If the SCEV is computable at this level, insert it into the header
1525 std::map<std::pair<const SCEV *, Instruction *>,
1538 // Remember the expanded value for this SCEV at this location.
1570 // Build a SCEV for {0,+,1}<L>.
1572 const SCEV *H = SE.getAddRecExpr(SE.getConstant(Ty, 0),
1573 SE.getConstant(Ty, 1), L, SCEV::FlagAnyWrap);
1613 DenseMap<const SCEV *, PHINode *> ExprToIVMap;
1630 const SCEV *TruncExpr =
1660 // elimination, CSE/GVN, should handle the rest. However, once SCEV proves
1665 const SCEV *TruncExpr = SE.getTruncateOrNoop(SE.getSCEV(OrigInc),