reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
322 LLVMContext &getContext() const { return SE.getContext(); }
lib/Analysis/ScalarEvolutionExpander.cpp80 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)) {