reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

include/llvm/Analysis/ScalarEvolutionExpander.h
  322     LLVMContext &getContext() const { return SE.getContext(); }
lib/Analysis/ScalarEvolutionExpander.cpp
   80   assert(SE.DT.dominates(Ret, &*BIP));
  115   assert(SE.getTypeSizeInBits(V->getType()) == SE.getTypeSizeInBits(Ty) &&
  115   assert(SE.getTypeSizeInBits(V->getType()) == SE.getTypeSizeInBits(Ty) &&
  129       SE.getTypeSizeInBits(Ty) == SE.getTypeSizeInBits(V->getType())) {
  129       SE.getTypeSizeInBits(Ty) == SE.getTypeSizeInBits(V->getType())) {
  133           SE.getTypeSizeInBits(CI->getType()) ==
  134           SE.getTypeSizeInBits(CI->getOperand(0)->getType()))
  139           SE.getTypeSizeInBits(CE->getType()) ==
  140           SE.getTypeSizeInBits(CE->getOperand(0)->getType()))
  217     while (const Loop *L = SE.LI.getLoopFor(Builder.GetInsertBlock())) {
  415   SplitAddRecs(Ops, Ty, SE);
  429       const SCEV *ElSize = SE.getSizeOfExpr(IntPtrTy, ElTy);
  433           const SCEV *Remainder = SE.getConstant(Ty, 0);
  434           if (FactorOutConstant(Op, Remainder, ElSize, SE, DL)) {
  449           SimplifyAddOperands(Ops, Ty, SE);
  460                     expandCodeFor(SE.getAddExpr(ScaledOps), Ty);
  473         if (SE.getTypeSizeInBits(C->getType()) <= 64) {
  482                 SE.getConstant(Ty, FullOffset - SL.getElementOffset(ElIdx));
  512            SE.DT.dominates(cast<Instruction>(V), &*Builder.GetInsertPoint()));
  515     Value *Idx = expandCodeFor(SE.getAddExpr(Ops), Ty);
  546     while (const Loop *L = SE.LI.getLoopFor(Builder.GetInsertBlock())) {
  566     while (const Loop *L = SE.LI.getLoopFor(Builder.GetInsertBlock())) {
  589     Ops.push_back(SE.getUnknown(GEP));
  593   return expand(SE.getAddExpr(Ops));
  629       return Pair.first->second = SE.LI.getLoopFor(I->getParent());
  638       L = PickMostRelevantLoop(L, getRelevantLoop(Op), SE.DT);
  647         getRelevantLoop(D->getLHS()), getRelevantLoop(D->getRHS()), SE.DT);
  689   Type *Ty = SE.getEffectiveSCEVType(S->getType());
  702   llvm::stable_sort(OpsAndLoops, LoopCompare(SE.DT));
  724             X = SE.getSCEV(U->getValue());
  733       NewOps.push_back(isa<Instruction>(Sum) ? SE.getUnknown(Sum) :
  734                                                SE.getSCEV(Sum));
  740       Value *W = expandCodeFor(SE.getNegativeSCEV(Op), Ty);
  761   Type *Ty = SE.getEffectiveSCEVType(S->getType());
  771   llvm::stable_sort(OpsAndLoops, LoopCompare(SE.DT));
  856   Type *Ty = SE.getEffectiveSCEVType(S->getType());
  869                      /*IsSafeToHoist*/ SE.isKnownNonZero(S->getRHS()));
  908         if (!SE.DT.dominates(OInst, IVIncInsertPos))
  947     if (!OInst || SE.DT.dominates(OInst, InsertPos))
  958         if (!SE.DT.dominates(OInst, InsertPos))
  972       if (IncV->getType() != Type::getInt1PtrTy(SE.getContext(), AS)
  973           && IncV->getType() != Type::getInt8PtrTy(SE.getContext(), AS))
 1002   if (SE.DT.dominates(IncV, InsertPos))
 1008       !SE.DT.dominates(InsertPos->getParent(), IncV->getParent()))
 1011   if (!SE.LI.movementPreservesLCSSAForm(IncV, InsertPos))
 1023     if (SE.DT.dominates(IncV, InsertPos))
 1062       GEPPtrTy = PointerType::get(Type::getInt1Ty(SE.getContext()),
 1064     IncV = expandAddToGEP(SE.getSCEV(StepV), GEPPtrTy, IntTy, PN);
 1179         SE.DT.properlyDominates(LatchBlock, IVIncInsertLoop->getHeader());
 1182       if (!SE.isSCEVable(PN.getType()))
 1185       const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN));
 1225           canBeCheaplyTransformed(SE, PhiSCEV, Normalized, InvertStep)) {
 1230         TruncTy = SE.getEffectiveSCEVType(Normalized->getType());
 1238         hoistBeforePos(&SE.DT, IncV, IVIncInsertPos, AddRecPhiMatch);
 1271          SE.DT.properlyDominates(cast<Instruction>(StartV)->getParent(),
 1276   const SCEV *Step = Normalized->getStepRecurrence(SE);
 1282     Step = SE.getNegativeSCEV(Step);
 1289   bool IncrementIsNUW = !useSubtract && IsIncrementNUW(SE, Normalized);
 1290   bool IncrementIsNSW = !useSubtract && IsIncrementNSW(SE, Normalized);
 1339   Type *IntTy = SE.getEffectiveSCEVType(STy);
 1348     Normalized = cast<SCEVAddRecExpr>(normalizeForPostIncUse(S, Loops, SE));
 1354   if (!SE.properlyDominates(Start, L->getHeader())) {
 1356     Start = SE.getConstant(Normalized->getType(), 0);
 1358       SE.getAddRecExpr(Start, Normalized->getStepRecurrence(SE),
 1358       SE.getAddRecExpr(Start, Normalized->getStepRecurrence(SE),
 1364   const SCEV *Step = Normalized->getStepRecurrence(SE);
 1366   if (!SE.dominates(Step, L->getHeader())) {
 1368     Step = SE.getConstant(Normalized->getType(), 1);
 1374         Start = SE.getConstant(Normalized->getType(), 0);
 1377       cast<SCEVAddRecExpr>(SE.getAddRecExpr(
 1411         !SE.DT.dominates(cast<Instruction>(Result),
 1425         Step = SE.getNegativeSCEV(Step);
 1441     if (ResTy != SE.getEffectiveSCEVType(ResTy))
 1442       Result = InsertNoopCastOfTo(Result, SE.getEffectiveSCEVType(ResTy));
 1470         Result = expandAddToGEP(SE.getUnknown(Result), PTy, IntTy, Base);
 1499   Type *Ty = SE.getEffectiveSCEVType(S->getType());
 1505     if (SE.getTypeSizeInBits(PN->getType()) >= SE.getTypeSizeInBits(Ty))
 1505     if (SE.getTypeSizeInBits(PN->getType()) >= SE.getTypeSizeInBits(Ty))
 1511       SE.getTypeSizeInBits(CanonicalIV->getType()) >
 1512       SE.getTypeSizeInBits(Ty)) {
 1515       NewOps[i] = SE.getAnyExtendExpr(S->op_begin()[i], CanonicalIV->getType());
 1516     Value *V = expand(SE.getAddRecExpr(NewOps, S->getLoop(),
 1520     V = expandCodeFor(SE.getTruncateExpr(SE.getUnknown(V), Ty), nullptr,
 1520     V = expandCodeFor(SE.getTruncateExpr(SE.getUnknown(V), Ty), nullptr,
 1528     NewOps[0] = SE.getConstant(Ty, 0);
 1529     const SCEV *Rest = SE.getAddRecExpr(NewOps, L,
 1537     ExposePointerBase(Base, ExposedRest, SE);
 1554     const SCEV *AddExprLHS = SE.getUnknown(expand(S->getStart()));
 1555     const SCEV *AddExprRHS = SE.getUnknown(expand(Rest));
 1556     return expand(SE.getAddExpr(AddExprLHS, AddExprRHS));
 1597     assert(Ty == SE.getEffectiveSCEVType(CanonicalIV->getType()) &&
 1608       expand(SE.getTruncateOrNoop(
 1609         SE.getMulExpr(SE.getUnknown(CanonicalIV),
 1609         SE.getMulExpr(SE.getUnknown(CanonicalIV),
 1610                       SE.getNoopOrAnyExtend(S->getOperand(1),
 1618   const SCEV *IH = SE.getUnknown(CanonicalIV);   // Get I as a "symbolic" SCEV.
 1622   const SCEV *Ext = SE.getNoopOrAnyExtend(S, CanonicalIV->getType());
 1626   const SCEV *V = cast<SCEVAddRecExpr>(NewS)->evaluateAtIteration(IH, SE);
 1630   const SCEV *T = SE.getTruncateOrNoop(V, Ty);
 1635   Type *Ty = SE.getEffectiveSCEVType(S->getType());
 1637                            SE.getEffectiveSCEVType(S->getOperand()->getType()));
 1644   Type *Ty = SE.getEffectiveSCEVType(S->getType());
 1646                            SE.getEffectiveSCEVType(S->getOperand()->getType()));
 1653   Type *Ty = SE.getEffectiveSCEVType(S->getType());
 1655                            SE.getEffectiveSCEVType(S->getOperand()->getType()));
 1669       Ty = SE.getEffectiveSCEVType(Ty);
 1694       Ty = SE.getEffectiveSCEVType(Ty);
 1719       Ty = SE.getEffectiveSCEVType(Ty);
 1744       Ty = SE.getEffectiveSCEVType(Ty);
 1771     assert(SE.getTypeSizeInBits(Ty) == SE.getTypeSizeInBits(SH->getType()) &&
 1771     assert(SE.getTypeSizeInBits(Ty) == SE.getTypeSizeInBits(SH->getType()) &&
 1781   SetVector<ScalarEvolution::ValueOffsetPair> *Set = SE.getSCEVValues(S);
 1784   if (CanonicalMode || !SE.containsAddRecurrence(S)) {
 1797             SE.DT.dominates(EntInst, InsertPt) &&
 1798             (SE.LI.getLoopFor(EntInst->getParent()) == nullptr ||
 1799              SE.LI.getLoopFor(EntInst->getParent())->contains(InsertPt)))
 1836     for (Loop *L = SE.LI.getLoopFor(Builder.GetInsertBlock());;
 1838       if (SE.isLoopInvariant(S, L)) {
 1851         if (L && SE.hasComputableLoopEvolution(S, L) && !PostIncLoops.count(L))
 1885       int64_t ESize = SE.getTypeSizeInBits(Ety);
 1894         V = Builder.CreateBitCast(V, Type::getInt8PtrTy(SE.getContext(), AS));
 1895         V = Builder.CreateGEP(Type::getInt8Ty(SE.getContext()), V, Idx,
 1931   const SCEV *H = SE.getAddRecExpr(SE.getConstant(Ty, 0),
 1931   const SCEV *H = SE.getAddRecExpr(SE.getConstant(Ty, 0),
 1932                                    SE.getConstant(Ty, 1), L, SCEV::FlagAnyWrap);
 1972       if (Value *V = SimplifyInstruction(PN, {DL, &SE.TLI, &SE.DT, &SE.AC}))
 1972       if (Value *V = SimplifyInstruction(PN, {DL, &SE.TLI, &SE.DT, &SE.AC}))
 1972       if (Value *V = SimplifyInstruction(PN, {DL, &SE.TLI, &SE.DT, &SE.AC}))
 1974       if (!SE.isSCEVable(PN->getType()))
 1976       auto *Const = dyn_cast<SCEVConstant>(SE.getSCEV(PN));
 1995     if (!SE.isSCEVable(Phi->getType()))
 1998     PHINode *&OrigPhiRef = ExprToIVMap[SE.getSCEV(Phi)];
 2006           SE.getTruncateExpr(SE.getSCEV(Phi), Phis.back()->getType());
 2006           SE.getTruncateExpr(SE.getSCEV(Phi), Phis.back()->getType());
 2043             SE.getTruncateOrNoop(SE.getSCEV(OrigInc), IsomorphicInc->getType());
 2043             SE.getTruncateOrNoop(SE.getSCEV(OrigInc), IsomorphicInc->getType());
 2045             TruncExpr == SE.getSCEV(IsomorphicInc) &&
 2046             SE.LI.replacementPreservesLCSSAForm(IsomorphicInc, OrigInc) &&
 2111     if (SE.getSCEV(LHS) == S && SE.DT.dominates(LHS, At))
 2111     if (SE.getSCEV(LHS) == S && SE.DT.dominates(LHS, At))
 2114     if (SE.getSCEV(RHS) == S && SE.DT.dominates(RHS, At))
 2114     if (SE.getSCEV(RHS) == S && SE.DT.dominates(RHS, At))
 2189             SE.getAddExpr(S, SE.getConstant(S->getType(), 1)), At, L))
 2189             SE.getAddExpr(S, SE.getConstant(S->getType(), 1)), At, L))
 2245       SE.getPredicatedBackedgeTakenCount(AR->getLoop(), Pred);
 2247   assert(ExitCount != SE.getCouldNotCompute() && "Invalid loop count");
 2249   const SCEV *Step = AR->getStepRecurrence(SE);
 2253   unsigned SrcBits = SE.getTypeSizeInBits(ExitCount->getType());
 2254   unsigned DstBits = SE.getTypeSizeInBits(ARTy);
 2266       IntegerType::get(Loc->getContext(), SE.getTypeSizeInBits(ARTy));
 2270   Value *NegStepValue = expandCodeFor(SE.getNegativeSCEV(Step), Ty, Loc);
 2296     const SCEV *MulS = SE.getSCEV(MulV);
 2297     const SCEV *NegMulS = SE.getNegativeSCEV(MulS);
 2320   if (SE.getTypeSizeInBits(CountTy) > SE.getTypeSizeInBits(Ty)) {
 2320   if (SE.getTypeSizeInBits(CountTy) > SE.getTypeSizeInBits(Ty)) {