Lines Matching refs:SCEV

329   const SCEV *getSCEV(ScalarEvolution &SE, Type *Ty) const {  in getSCEV()
330 const SCEV *S = SE.getConstant(Ty, Quantity); in getSCEV()
336 const SCEV *getNegativeSCEV(ScalarEvolution &SE, Type *Ty) const { in getNegativeSCEV()
337 const SCEV *NegS = SE.getConstant(Ty, -(uint64_t)Quantity); in getNegativeSCEV()
343 const SCEV *getUnknownSCEV(ScalarEvolution &SE, Type *Ty) const { in getUnknownSCEV()
344 const SCEV *SU = SE.getUnknown(ConstantInt::getSigned(Ty, Quantity)); in getUnknownSCEV()
394 using RegUsesTy = DenseMap<const SCEV *, RegSortData>;
397 SmallVector<const SCEV *, 16> RegSequence;
400 void countRegister(const SCEV *Reg, size_t LUIdx);
401 void dropRegister(const SCEV *Reg, size_t LUIdx);
404 bool isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const;
406 const SmallBitVector &getUsedByIndices(const SCEV *Reg) const;
410 using iterator = SmallVectorImpl<const SCEV *>::iterator;
411 using const_iterator = SmallVectorImpl<const SCEV *>::const_iterator;
422 RegUseTracker::countRegister(const SCEV *Reg, size_t LUIdx) { in countRegister()
433 RegUseTracker::dropRegister(const SCEV *Reg, size_t LUIdx) { in dropRegister()
457 RegUseTracker::isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const { in isRegUsedByUsesOtherThan()
468 const SmallBitVector &RegUseTracker::getUsedByIndices(const SCEV *Reg) const { in getUsedByIndices()
510 SmallVector<const SCEV *, 4> BaseRegs;
514 const SCEV *ScaledReg = nullptr;
523 void initialMatch(const SCEV *S, Loop *L, ScalarEvolution &SE);
536 void deleteBaseReg(const SCEV *&S);
538 bool referencesReg(const SCEV *S) const;
549 static void DoInitialMatch(const SCEV *S, Loop *L, in DoInitialMatch()
550 SmallVectorImpl<const SCEV *> &Good, in DoInitialMatch()
551 SmallVectorImpl<const SCEV *> &Bad, in DoInitialMatch()
561 for (const SCEV *S : Add->operands()) in DoInitialMatch()
573 AR->getLoop(), SCEV::FlagAnyWrap), in DoInitialMatch()
581 SmallVector<const SCEV *, 4> Ops(drop_begin(Mul->operands())); in DoInitialMatch()
582 const SCEV *NewMul = SE.getMulExpr(Ops); in DoInitialMatch()
584 SmallVector<const SCEV *, 4> MyGood; in DoInitialMatch()
585 SmallVector<const SCEV *, 4> MyBad; in DoInitialMatch()
587 const SCEV *NegOne = SE.getSCEV(ConstantInt::getAllOnesValue( in DoInitialMatch()
589 for (const SCEV *S : MyGood) in DoInitialMatch()
591 for (const SCEV *S : MyBad) in DoInitialMatch()
603 void Formula::initialMatch(const SCEV *S, Loop *L, ScalarEvolution &SE) { in initialMatch()
604 SmallVector<const SCEV *, 4> Good; in initialMatch()
605 SmallVector<const SCEV *, 4> Bad; in initialMatch()
608 const SCEV *Sum = SE.getAddExpr(Good); in initialMatch()
614 const SCEV *Sum = SE.getAddExpr(Bad); in initialMatch()
622 static bool containsAddRecDependentOnLoop(const SCEV *S, const Loop &L) { in containsAddRecDependentOnLoop()
623 return SCEVExprContains(S, [&L](const SCEV *S) { in containsAddRecDependentOnLoop()
647 return none_of(BaseRegs, [&L](const SCEV *S) { in isCanonical()
682 auto I = find_if(BaseRegs, [&L](const SCEV *S) { in canonicalize()
728 void Formula::deleteBaseReg(const SCEV *&S) { in deleteBaseReg()
735 bool Formula::referencesReg(const SCEV *S) const { in referencesReg()
746 for (const SCEV *BaseReg : BaseRegs) in hasRegsUsedByUsesOtherThan()
763 for (const SCEV *BaseReg : BaseRegs) { in print()
824 static const SCEV *getExactSDiv(const SCEV *LHS, const SCEV *RHS, in getExactSDiv()
861 const SCEV *Step = getExactSDiv(AR->getStepRecurrence(SE), RHS, SE, in getExactSDiv()
864 const SCEV *Start = getExactSDiv(AR->getStart(), RHS, SE, in getExactSDiv()
870 return SE.getAddRecExpr(Start, Step, AR->getLoop(), SCEV::FlagAnyWrap); in getExactSDiv()
878 SmallVector<const SCEV *, 8> Ops; in getExactSDiv()
879 for (const SCEV *S : Add->operands()) { in getExactSDiv()
880 const SCEV *Op = getExactSDiv(S, RHS, SE, IgnoreSignificantBits); in getExactSDiv()
899 SmallVector<const SCEV *, 4> LOps(drop_begin(Mul->operands())); in getExactSDiv()
900 SmallVector<const SCEV *, 4> ROps(drop_begin(MulRHS->operands())); in getExactSDiv()
907 SmallVector<const SCEV *, 4> Ops; in getExactSDiv()
909 for (const SCEV *S : Mul->operands()) { in getExactSDiv()
911 if (const SCEV *Q = getExactSDiv(S, RHS, SE, in getExactSDiv()
929 static Immediate ExtractImmediate(const SCEV *&S, ScalarEvolution &SE) { in ExtractImmediate()
936 SmallVector<const SCEV *, 8> NewOps(Add->operands()); in ExtractImmediate()
942 SmallVector<const SCEV *, 8> NewOps(AR->operands()); in ExtractImmediate()
947 SCEV::FlagAnyWrap); in ExtractImmediate()
963 static GlobalValue *ExtractSymbol(const SCEV *&S, ScalarEvolution &SE) { in ExtractSymbol()
970 SmallVector<const SCEV *, 8> NewOps(Add->operands()); in ExtractSymbol()
976 SmallVector<const SCEV *, 8> NewOps(AR->operands()); in ExtractSymbol()
981 SCEV::FlagAnyWrap); in ExtractSymbol()
1107 static bool isHighCostExpansion(const SCEV *S, in isHighCostExpansion()
1108 SmallPtrSetImpl<const SCEV*> &Processed, in isHighCostExpansion()
1133 for (const SCEV *S : Add->operands()) { in isHighCostExpansion()
1239 SmallPtrSetImpl<const SCEV *> &Regs,
1240 const DenseSet<const SCEV *> &VisitedRegs,
1242 SmallPtrSetImpl<const SCEV *> *LoserRegs = nullptr);
1248 void RateRegister(const Formula &F, const SCEV *Reg,
1249 SmallPtrSetImpl<const SCEV *> &Regs);
1250 void RatePrimaryRegister(const Formula &F, const SCEV *Reg,
1251 SmallPtrSetImpl<const SCEV *> &Regs,
1252 SmallPtrSetImpl<const SCEV *> *LoserRegs);
1286 static SmallVector<const SCEV *, 4> getEmptyKey() { in getEmptyKey()
1287 SmallVector<const SCEV *, 4> V; in getEmptyKey()
1288 V.push_back(reinterpret_cast<const SCEV *>(-1)); in getEmptyKey()
1292 static SmallVector<const SCEV *, 4> getTombstoneKey() { in getTombstoneKey()
1293 SmallVector<const SCEV *, 4> V; in getTombstoneKey()
1294 V.push_back(reinterpret_cast<const SCEV *>(-2)); in getTombstoneKey()
1298 static unsigned getHashValue(const SmallVector<const SCEV *, 4> &V) { in getHashValue()
1302 static bool isEqual(const SmallVector<const SCEV *, 4> &LHS, in isEqual()
1303 const SmallVector<const SCEV *, 4> &RHS) { in isEqual()
1314 DenseSet<SmallVector<const SCEV *, 4>, UniquifierDenseMapInfo> Uniquifier;
1327 using SCEVUseKindPair = PointerIntPair<const SCEV *, 2, KindType>;
1362 SmallPtrSet<const SCEV *, 4> Regs;
1380 float getNotSelectedProbability(const SCEV *Reg) const;
1397 static unsigned getSetupCost(const SCEV *Reg, unsigned Depth) { in getSetupCost()
1408 [&](unsigned i, const SCEV *Reg) { in getSetupCost()
1418 void Cost::RateRegister(const Formula &F, const SCEV *Reg, in RateRegister()
1419 SmallPtrSetImpl<const SCEV *> &Regs) { in RateRegister()
1452 const SCEV *LoopStep = AR->getStepRecurrence(*SE); in RateRegister()
1454 const SCEV *LoopStart = AR->getStart(); in RateRegister()
1488 void Cost::RatePrimaryRegister(const Formula &F, const SCEV *Reg, in RatePrimaryRegister()
1489 SmallPtrSetImpl<const SCEV *> &Regs, in RatePrimaryRegister()
1490 SmallPtrSetImpl<const SCEV *> *LoserRegs) { in RatePrimaryRegister()
1503 SmallPtrSetImpl<const SCEV *> &Regs, in RateFormula()
1504 const DenseSet<const SCEV *> &VisitedRegs, in RateFormula()
1506 SmallPtrSetImpl<const SCEV *> *LoserRegs) { in RateFormula()
1514 if (const SCEV *ScaledReg = F.ScaledReg) { in RateFormula()
1523 for (const SCEV *BaseReg : F.BaseRegs) { in RateFormula()
1702 SmallVector<const SCEV *, 4> Key = F.BaseRegs; in HasFormulaWithSameRegs()
1710 float LSRUse::getNotSelectedProbability(const SCEV *Reg) const { in getNotSelectedProbability()
1726 SmallVector<const SCEV *, 4> Key = F.BaseRegs; in InsertFormula()
1738 for (const SCEV *BaseReg : F.BaseRegs) in InsertFormula()
1763 SmallPtrSet<const SCEV *, 4> OldRegs = std::move(Regs); in RecomputeRegs()
1771 for (const SCEV *S : OldRegs) in RecomputeRegs()
2048 MemAccessTy AccessTy, const SCEV *S, in isAlwaysFoldable()
2090 const SCEV *IncExpr;
2092 IVInc(Instruction *U, Value *O, const SCEV *E) in IVInc()
2100 const SCEV *ExprBase = nullptr;
2103 IVChain(const IVInc &Head, const SCEV *Base) in IVChain()
2127 bool isProfitableIncrement(const SCEV *OperExpr,
2128 const SCEV *IncExpr,
2218 std::pair<size_t, Immediate> getUse(const SCEV *&Expr, LSRUse::KindType Kind,
2225 void InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
2226 void InsertSupplementalFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
2270 const SmallPtrSet<const SCEV *, 16> &CurRegs,
2271 DenseSet<const SCEV *> &VisitedRegs) const;
2313 const SCEV *BackedgeTakenCount = SE.getBackedgeTakenCount(L); in OptimizeShadowIV()
2501 const SCEV *BackedgeTakenCount = SE.getBackedgeTakenCount(L); in OptimizeMax()
2504 const SCEV *One = SE.getConstant(BackedgeTakenCount->getType(), 1); in OptimizeMax()
2507 const SCEV *IterationCount = SE.getAddExpr(One, BackedgeTakenCount); in OptimizeMax()
2534 const SCEV *MaxLHS = Max->getOperand(0); in OptimizeMax()
2535 const SCEV *MaxRHS = Max->getOperand(1); in OptimizeMax()
2545 const SCEV *IV = SE.getSCEV(Cond->getOperand(0)); in OptimizeMax()
2672 const SCEV *A = IU.getStride(*CondUse, L); in OptimizeLoopTermCond()
2673 const SCEV *B = IU.getStride(*UI, L); in OptimizeLoopTermCond()
2808 std::pair<size_t, Immediate> LSRInstance::getUse(const SCEV *&Expr, in getUse()
2811 const SCEV *Copy = Expr; in getUse()
2895 SmallSetVector<const SCEV *, 4> Strides; in CollectInterestingTypesAndFactors()
2898 SmallVector<const SCEV *, 4> Worklist; in CollectInterestingTypesAndFactors()
2900 const SCEV *Expr = IU.getExpr(U); in CollectInterestingTypesAndFactors()
2910 const SCEV *S = Worklist.pop_back_val(); in CollectInterestingTypesAndFactors()
2922 for (SmallSetVector<const SCEV *, 4>::const_iterator in CollectInterestingTypesAndFactors()
2924 for (SmallSetVector<const SCEV *, 4>::const_iterator NewStrideIter = in CollectInterestingTypesAndFactors()
2926 const SCEV *OldStride = *I; in CollectInterestingTypesAndFactors()
2927 const SCEV *NewStride = *NewStrideIter; in CollectInterestingTypesAndFactors()
2998 static const SCEV *getExprBase(const SCEV *S) { in getExprBase()
3016 for (const SCEV *SubExpr : reverse(Add->operands())) { in getExprBase()
3036 bool IVChain::isProfitableIncrement(const SCEV *OperExpr, in isProfitableIncrement()
3037 const SCEV *IncExpr, in isProfitableIncrement()
3046 const SCEV *HeadExpr = SE.getSCEV(getWideOperand(Incs[0].IVOperand)); in isProfitableIncrement()
3051 SmallPtrSet<const SCEV*, 8> Processed; in isProfitableIncrement()
3093 const SCEV *LastIncExpr = nullptr; in isProfitableChain()
3149 const SCEV *const OperExpr = SE.getSCEV(NextIV); in ChainInstruction()
3150 const SCEV *const OperExprBase = getExprBase(OperExpr); in ChainInstruction()
3155 const SCEV *LastIncExpr = nullptr; in ChainInstruction()
3175 const SCEV *PrevExpr = SE.getSCEV(PrevIV); in ChainInstruction()
3176 const SCEV *IncExpr = SE.getMinusSCEV(OperExpr, PrevExpr); in ChainInstruction()
3358 static bool canFoldIVIncExpr(const SCEV *IncExpr, Instruction *UserInst, in canFoldIVIncExpr()
3428 const SCEV *LeftOverExpr = nullptr; in GenerateIVChain()
3429 const SCEV *Accum = SE.getZero(IntTy); in GenerateIVChain()
3430 SmallVector<std::pair<const SCEV *, Value *>> Bases; in GenerateIVChain()
3444 const SCEV *IncExpr = SE.getNoopOrSignExtend(Inc.IncExpr, IntTy); in GenerateIVChain()
3453 const SCEV *Remainder = SE.getMinusSCEV(Accum, MapScev); in GenerateIVChain()
3458 const SCEV *IVOperExpr = in GenerateIVChain()
3473 const SCEV *IVOperExpr = SE.getAddExpr(SE.getUnknown(IVSrc), in GenerateIVChain()
3525 SmallPtrSet<const SCEV *, 16> Regs; in CollectFixupsAndInitialFormulae()
3526 DenseSet<const SCEV *> VisitedRegs; in CollectFixupsAndInitialFormulae()
3547 const SCEV *S = IU.getExpr(U); in CollectFixupsAndInitialFormulae()
3575 const SCEV *N = SE.getSCEV(NV); in CollectFixupsAndInitialFormulae()
3653 void LSRInstance::InsertInitialFormula(const SCEV *S, LSRUse &LU, in InsertInitialFormula()
3668 LSRInstance::InsertSupplementalFormula(const SCEV *S, in InsertSupplementalFormula()
3681 for (const SCEV *BaseReg : F.BaseRegs) in CountRegisters()
3706 SmallVector<const SCEV *, 8> Worklist(RegUses.begin(), RegUses.end()); in CollectLoopInvariantFixupsAndFormulae()
3707 SmallPtrSet<const SCEV *, 32> Visited; in CollectLoopInvariantFixupsAndFormulae()
3715 const SCEV *S = Worklist.pop_back_val(); in CollectLoopInvariantFixupsAndFormulae()
3789 const SCEV *UserS = SE.getSCEV(const_cast<Instruction *>(UserInst)); in CollectLoopInvariantFixupsAndFormulae()
3834 static const SCEV *CollectSubexprs(const SCEV *S, const SCEVConstant *C, in CollectSubexprs()
3835 SmallVectorImpl<const SCEV *> &Ops, in CollectSubexprs()
3845 for (const SCEV *S : Add->operands()) { in CollectSubexprs()
3846 const SCEV *Remainder = CollectSubexprs(S, C, Ops, L, SE, Depth+1); in CollectSubexprs()
3856 const SCEV *Remainder = CollectSubexprs(AR->getStart(), in CollectSubexprs()
3871 SCEV::FlagAnyWrap); in CollectSubexprs()
3880 const SCEV *Remainder = in CollectSubexprs()
3893 LSRUse &LU, const SCEV *S, const Loop *L, in mayUsePostIncMode()
3901 const SCEV *LoopStep = AR->getStepRecurrence(SE); in mayUsePostIncMode()
3907 const SCEV *LoopStart = AR->getStart(); in mayUsePostIncMode()
3919 const SCEV *BaseReg = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx]; in GenerateReassociationsImpl()
3926 SmallVector<const SCEV *, 8> AddOps; in GenerateReassociationsImpl()
3927 const SCEV *Remainder = CollectSubexprs(BaseReg, nullptr, AddOps, L, SE); in GenerateReassociationsImpl()
3934 for (SmallVectorImpl<const SCEV *>::const_iterator J = AddOps.begin(), in GenerateReassociationsImpl()
3949 SmallVector<const SCEV *, 8> InnerAddOps( in GenerateReassociationsImpl()
3950 ((const SmallVector<const SCEV *, 8> &)AddOps).begin(), J); in GenerateReassociationsImpl()
3952 ((const SmallVector<const SCEV *, 8> &)AddOps).end()); in GenerateReassociationsImpl()
3961 const SCEV *InnerSum = SE.getAddExpr(InnerAddOps); in GenerateReassociationsImpl()
4041 SmallVector<const SCEV *, 4> Ops; in GenerateCombinations()
4045 for (const SCEV *BaseReg : Base.BaseRegs) { in GenerateCombinations()
4062 auto GenerateFormula = [&](const SCEV *Sum) { in GenerateCombinations()
4078 SmallVector<const SCEV *, 4> OpsCopy(Ops); // Don't let SE modify Ops. in GenerateCombinations()
4097 const SCEV *G = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx]; in GenerateSymbolicOffsetsImpl()
4130 auto GenerateOffset = [&](const SCEV *G, Immediate Offset) { in GenerateConstantOffsetsImpl()
4138 const SCEV *NewOffset = Offset.getSCEV(SE, G->getType()); in GenerateConstantOffsetsImpl()
4139 const SCEV *NewG = SE.getAddExpr(NewOffset, G); in GenerateConstantOffsetsImpl()
4157 const SCEV *G = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx]; in GenerateConstantOffsetsImpl()
4240 for (const SCEV *BaseReg : Base.BaseRegs) in GenerateICmpZeroScales()
4288 const SCEV *FactorS = SE.getConstant(IntTy, Factor); in GenerateICmpZeroScales()
4364 const SCEV *FactorS = SE.getConstant(IntTy, Factor); in GenerateScales()
4369 if (const SCEV *Quotient = getExactSDiv(AR, FactorS, SE, true)) in GenerateScales()
4397 static const SCEV *
4399 const SCEV *Expr, Type *ToTy, in getAnyExtendConsideringPostIncUses()
4401 const SCEV *Result = nullptr; in getAnyExtendConsideringPostIncUses()
4404 const SCEV *NewDenormExpr = SE.getAnyExtendExpr(DenormExpr, ToTy); in getAnyExtendConsideringPostIncUses()
4405 const SCEV *New = normalizeForPostIncUse(NewDenormExpr, L, SE); in getAnyExtendConsideringPostIncUses()
4431 [](const SCEV *S) { return S->getType()->isPointerTy(); })) in GenerateTruncates()
4447 const SCEV *NewScaledReg = in GenerateTruncates()
4454 for (const SCEV *&BaseReg : F.BaseRegs) { in GenerateTruncates()
4455 const SCEV *NewBaseReg = in GenerateTruncates()
4485 const SCEV *OrigReg;
4487 WorkItem(size_t LI, Immediate I, const SCEV *R) in WorkItem()
4511 using ImmMapTy = std::map<Immediate, const SCEV *, KeyOrderTargetImmediate>; in GenerateCrossUseConstantOffsets()
4513 DenseMap<const SCEV *, ImmMapTy> Map; in GenerateCrossUseConstantOffsets()
4514 DenseMap<const SCEV *, SmallBitVector> UsedByIndicesMap; in GenerateCrossUseConstantOffsets()
4515 SmallVector<const SCEV *, 8> Sequence; in GenerateCrossUseConstantOffsets()
4516 for (const SCEV *Use : RegUses) { in GenerateCrossUseConstantOffsets()
4517 const SCEV *Reg = Use; // Make a copy for ExtractImmediate to modify. in GenerateCrossUseConstantOffsets()
4532 for (const SCEV *Reg : Sequence) { in GenerateCrossUseConstantOffsets()
4548 const SCEV *OrigReg = J->second; in GenerateCrossUseConstantOffsets()
4608 const SCEV *OrigReg = WI.OrigReg; in GenerateCrossUseConstantOffsets()
4611 const SCEV *NegImmS = Imm.getNegativeSCEV(SE, IntTy); in GenerateCrossUseConstantOffsets()
4628 const SCEV *S = Offset.getNegativeSCEV(SE, IntTy); in GenerateCrossUseConstantOffsets()
4660 const SCEV *BaseReg = F.BaseRegs[N]; in GenerateCrossUseConstantOffsets()
4685 for (const SCEV *NewReg : NewF.BaseRegs) in GenerateCrossUseConstantOffsets()
4749 DenseSet<const SCEV *> VisitedRegs; in FilterOutUndesirableDedicatedRegisters()
4750 SmallPtrSet<const SCEV *, 16> Regs; in FilterOutUndesirableDedicatedRegisters()
4751 SmallPtrSet<const SCEV *, 16> LoserRegs; in FilterOutUndesirableDedicatedRegisters()
4759 DenseMap<SmallVector<const SCEV *, 4>, size_t, UniquifierDenseMapInfo>; in FilterOutUndesirableDedicatedRegisters()
4794 SmallVector<const SCEV *, 4> Key; in FilterOutUndesirableDedicatedRegisters()
4795 for (const SCEV *Reg : F.BaseRegs) { in FilterOutUndesirableDedicatedRegisters()
4886 for (SmallVectorImpl<const SCEV *>::const_iterator in NarrowSearchSpaceByDetectingSupersets()
5035 using BestFormulaeTy = DenseMap<std::pair<const SCEV *, int64_t>, size_t>; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
5041 DenseSet<const SCEV *> VisitedRegs; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
5042 SmallPtrSet<const SCEV *, 16> Regs; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
5056 for (const SCEV *Reg : FA.BaseRegs) { in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
5061 for (const SCEV *Reg : FB.BaseRegs) { in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
5217 SmallPtrSet<const SCEV *, 4> UniqRegs; in NarrowSearchSpaceByDeletingCostlyFormulas()
5221 DenseMap <const SCEV *, float> RegNumMap; in NarrowSearchSpaceByDeletingCostlyFormulas()
5222 for (const SCEV *Reg : RegUses) { in NarrowSearchSpaceByDeletingCostlyFormulas()
5257 for (const SCEV *BaseReg : F.BaseRegs) { in NarrowSearchSpaceByDeletingCostlyFormulas()
5265 if (const SCEV *ScaledReg = F.ScaledReg) { in NarrowSearchSpaceByDeletingCostlyFormulas()
5306 ScalarEvolution &SE, const SCEV *Best, in IsSimplerBaseSCEVForTarget()
5307 const SCEV *Reg, in IsSimplerBaseSCEVForTarget()
5334 SmallPtrSet<const SCEV *, 4> Taken; in NarrowSearchSpaceByPickingWinnerRegs()
5342 const SCEV *Best = nullptr; in NarrowSearchSpaceByPickingWinnerRegs()
5344 for (const SCEV *Reg : RegUses) { in NarrowSearchSpaceByPickingWinnerRegs()
5427 const SmallPtrSet<const SCEV *, 16> &CurRegs, in SolveRecurse() argument
5428 DenseSet<const SCEV *> &VisitedRegs) const { in SolveRecurse()
5445 SmallSetVector<const SCEV *, 4> ReqRegs; in SolveRecurse()
5446 for (const SCEV *S : CurRegs) in SolveRecurse()
5450 SmallPtrSet<const SCEV *, 16> NewRegs; in SolveRecurse()
5461 for (const SCEV *Reg : ReqRegs) { in SolveRecurse()
5491 for (const SCEV *S : NewRegs) dbgs() in SolveRecurse()
5510 SmallPtrSet<const SCEV *, 16> CurRegs; in Solve()
5511 DenseSet<const SCEV *> VisitedRegs; in Solve()
5713 SmallVector<const SCEV *, 8> Ops; in Expand()
5716 for (const SCEV *Reg : F.BaseRegs) { in Expand()
5727 const SCEV *ScaledS = F.ScaledReg; in Expand()
5818 const SCEV *FullS = Ops.empty() ? in Expand()
6453 const llvm::SCEV *Inner = C->getOperand(0); in pushCast()
6466 bool pushSCEV(const llvm::SCEV *S) { in pushSCEV()
6507 bool isIdentityFunction(uint64_t Op, const SCEV *S) { in isIdentityFunction()
6536 const SCEV *Start = SAR.getStart(); in SCEVToValueExpr()
6537 const SCEV *Stride = SAR.getStepRecurrence(SE); in SCEVToValueExpr()
6565 bool createIterCountExpr(const SCEV *S, in createIterCountExpr()
6608 const SCEV *Start = SAR.getStart(); in SCEVToIterCountExpr()
6609 const SCEV *Stride = SAR.getStepRecurrence(SE); in SCEVToIterCountExpr()
6680 SmallVector<const llvm::SCEV *, 2> SCEVs;
6823 const SCEV *SCEVInductionVar, in SalvageDVI()
6938 const llvm::SCEV *SCEVInductionVar = SE.getSCEV(LSRInductionVar); in DbgRewriteSalvageableDVIs()
6993 const SCEV *S = SE.getSCEV(LocOp); in DbgGatherSalvagableDVI()
7065 static std::optional<std::tuple<PHINode *, PHINode *, const SCEV *, bool>>
7134 const SCEV *BECount = SE.getBackedgeTakenCount(L); in canFoldTermCondOfLoop()
7139 const SCEV *TermValueS = nullptr; in canFoldTermCondOfLoop()
7175 const SCEV *TermValueSLocal = PostInc->evaluateAtIteration(BECount, SE); in canFoldTermCondOfLoop()