Lines Matching defs:Accum

5537   const SCEV *Accum = getAddExpr(Ops);
5541 if (!isLoopInvariant(Accum, L))
5549 // P1: A Wrap predicate that guarantees that Trunc(Start) + i*Trunc(Accum)
5554 // Accum = (Ext ix (Trunc iy (Accum) to ix) to iy)
5557 // Start + i*Accum = (Ext ix (Trunc iy ( Start + i*Accum ) to ix) to iy)
5561 // Expr(i+1) = Start + (i+1) * Accum
5562 // = (Ext ix (Trunc iy (Expr(i)) to ix) to iy) + Accum
5566 // 2) Expr(1) = Start + Accum
5567 // = (Ext ix (Trunc iy (Start) to ix) to iy) + Accum :: from P2
5569 // Expr(i) = (Ext ix (Trunc iy (Expr(i-1)) to ix) to iy) + Accum
5573 // = Start + (i+1)*Accum
5574 // = (Start + i*Accum) + Accum
5575 // = Expr(i) + Accum
5576 // = (Ext ix (Trunc iy (Expr(i-1)) to ix) to iy) + Accum + Accum
5579 // = (Ext ix (Trunc iy (Start + (i-1)*Accum) to ix) to iy) + Accum + Accum
5581 // = (Ext ix (Trunc iy (Start + (i-1)*Accum) to ix) to iy)
5582 // + (Ext ix (Trunc iy (Accum) to ix) to iy)
5583 // + Accum :: from P3
5585 // = (Ext ix (Trunc iy ((Start + (i-1)*Accum) + Accum) to ix) to iy)
5586 // + Accum :: from P1: Ext(x)+Ext(y)=>Ext(x+y)
5588 // = (Ext ix (Trunc iy (Start + i*Accum) to ix) to iy) + Accum
5589 // = (Ext ix (Trunc iy (Expr(i)) to ix) to iy) + Accum
5598 getTruncateExpr(Accum, TruncTy), L, SCEV::FlagAnyWrap);
5601 // ex: If truncated Accum is 0 and StartVal is a constant, then PHISCEV
5617 // compile time due to StartVal and/or Accum being constants.
5622 // for each of StartVal and Accum
5652 const SCEV *AccumExtended = getExtendedExpr(Accum, /*CreateSignExtend=*/true);
5653 if (PredIsKnownFalse(Accum, AccumExtended)) {
5669 AppendPredicate(Accum, AccumExtended);
5675 auto *NewAR = getAddRecExpr(StartVal, Accum, L, SCEV::FlagAnyWrap);
5763 const SCEV *Accum = nullptr;
5765 Accum = getSCEV(BO->RHS);
5767 Accum = getSCEV(BO->LHS);
5769 if (!Accum)
5779 const SCEV *PHISCEV = getAddRecExpr(StartVal, Accum, L, Flags);
5792 assert(isLoopInvariant(Accum, L) &&
5793 "Accum is defined outside L, but is not invariant?");
5795 (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags);
5868 const SCEV *Accum = getAddExpr(Ops);
5872 if (isLoopInvariant(Accum, L) ||
5873 (isa<SCEVAddRecExpr>(Accum) &&
5874 cast<SCEVAddRecExpr>(Accum)->getLoop() == L)) {
5895 (NW.hasNoUnsignedSignedWrap() && isKnownNonNegative(Accum)))
5905 const SCEV *PHISCEV = getAddRecExpr(StartVal, Accum, L, Flags);
5923 if (isLoopInvariant(Accum, L) && isAddRecNeverPoison(BEInst, L))
5924 (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags);