Lines Matching defs:Accum
5515 const SCEV *Accum = getAddExpr(Ops);
5519 if (!isLoopInvariant(Accum, L))
5527 // P1: A Wrap predicate that guarantees that Trunc(Start) + i*Trunc(Accum)
5532 // Accum = (Ext ix (Trunc iy (Accum) to ix) to iy)
5535 // Start + i*Accum = (Ext ix (Trunc iy ( Start + i*Accum ) to ix) to iy)
5539 // Expr(i+1) = Start + (i+1) * Accum
5540 // = (Ext ix (Trunc iy (Expr(i)) to ix) to iy) + Accum
5544 // 2) Expr(1) = Start + Accum
5545 // = (Ext ix (Trunc iy (Start) to ix) to iy) + Accum :: from P2
5547 // Expr(i) = (Ext ix (Trunc iy (Expr(i-1)) to ix) to iy) + Accum
5551 // = Start + (i+1)*Accum
5552 // = (Start + i*Accum) + Accum
5553 // = Expr(i) + Accum
5554 // = (Ext ix (Trunc iy (Expr(i-1)) to ix) to iy) + Accum + Accum
5557 // = (Ext ix (Trunc iy (Start + (i-1)*Accum) to ix) to iy) + Accum + Accum
5559 // = (Ext ix (Trunc iy (Start + (i-1)*Accum) to ix) to iy)
5560 // + (Ext ix (Trunc iy (Accum) to ix) to iy)
5561 // + Accum :: from P3
5563 // = (Ext ix (Trunc iy ((Start + (i-1)*Accum) + Accum) to ix) to iy)
5564 // + Accum :: from P1: Ext(x)+Ext(y)=>Ext(x+y)
5566 // = (Ext ix (Trunc iy (Start + i*Accum) to ix) to iy) + Accum
5567 // = (Ext ix (Trunc iy (Expr(i)) to ix) to iy) + Accum
5576 getTruncateExpr(Accum, TruncTy), L, SCEV::FlagAnyWrap);
5579 // ex: If truncated Accum is 0 and StartVal is a constant, then PHISCEV
5595 // compile time due to StartVal and/or Accum being constants.
5600 // for each of StartVal and Accum
5630 const SCEV *AccumExtended = getExtendedExpr(Accum, /*CreateSignExtend=*/true);
5631 if (PredIsKnownFalse(Accum, AccumExtended)) {
5647 AppendPredicate(Accum, AccumExtended);
5653 auto *NewAR = getAddRecExpr(StartVal, Accum, L, SCEV::FlagAnyWrap);
5742 const SCEV *Accum = nullptr;
5744 Accum = getSCEV(BO->RHS);
5746 Accum = getSCEV(BO->LHS);
5748 if (!Accum)
5758 const SCEV *PHISCEV = getAddRecExpr(StartVal, Accum, L, Flags);
5771 assert(isLoopInvariant(Accum, L) &&
5772 "Accum is defined outside L, but is not invariant?");
5774 (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags);
5847 const SCEV *Accum = getAddExpr(Ops);
5851 if (isLoopInvariant(Accum, L) ||
5852 (isa<SCEVAddRecExpr>(Accum) &&
5853 cast<SCEVAddRecExpr>(Accum)->getLoop() == L)) {
5874 (NW.hasNoUnsignedSignedWrap() && isKnownNonNegative(Accum)))
5884 const SCEV *PHISCEV = getAddRecExpr(StartVal, Accum, L, Flags);
5902 if (isLoopInvariant(Accum, L) && isAddRecNeverPoison(BEInst, L))
5903 (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags);