Lines Matching refs:AddRec
931 /// operands is an AddRec for this loop, return the AddRec and the kind of
972 const SCEVAddRecExpr *AddRec =
975 if (!AddRec || AddRec->getLoop() != L)
978 return {AddRec, ExtKind};
1015 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(WideExpr);
1016 if (!AddRec || AddRec->getLoop() != L)
1018 return {AddRec, ExtKind};
1080 // The widenIVUse avoids generating trunc by evaluating the use as AddRec, this
1131 // Verifying that Defining operand is an AddRec
1396 const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(SE->getSCEV(OrigPhi));
1397 if (!AddRec)
1402 ? SE->getSignExtendExpr(AddRec, WideType)
1403 : SE->getZeroExtendExpr(AddRec, WideType);
1409 AddRec = dyn_cast<SCEVAddRecExpr>(WideIVExpr);
1410 if (!AddRec || AddRec->getLoop() != L)
1413 // An AddRec must have loop-invariant operands. Since this AddRec is
1417 SE->properlyDominates(AddRec->getStart(), L->getHeader()) &&
1418 SE->properlyDominates(AddRec->getStepRecurrence(*SE), L->getHeader()) &&
1439 WidePhi = cast<PHINode>(Rewriter.expandCodeFor(AddRec, WideType, InsertPt));
1688 /// that this is less general than SCEVs AddRec checking.