Home
last modified time | relevance | path

Searched refs:SCEV (Results 1 – 25 of 39) sorted by relevance

12

/NextBSD/contrib/llvm/include/llvm/Analysis/
HDScalarEvolution.h51 class SCEV; variable
52 template<> struct FoldingSetTrait<SCEV>;
58 class SCEV : public FoldingSetNode {
59 friend struct FoldingSetTrait<SCEV>;
74 SCEV(const SCEV &) = delete;
75 void operator=(const SCEV &) = delete;
102 explicit SCEV(const FoldingSetNodeIDRef ID, unsigned SCEVTy) :
142 template<> struct FoldingSetTrait<SCEV> : DefaultFoldingSetTrait<SCEV> {
143 static void Profile(const SCEV &X, FoldingSetNodeID& ID) {
146 static bool Equals(const SCEV &X, const FoldingSetNodeID &ID,
[all …]
HDDependenceAnalysis.h53 class SCEV; variable
98 const SCEV *Distance; // NULL implies no distance available.
158 virtual const SCEV *getDistance(unsigned Level) const { return nullptr; } in getDistance()
248 const SCEV *getDistance(unsigned Level) const override;
332 const SCEV *getSplitIteration(const Dependence &Dep, unsigned Level);
344 const SCEV *Src;
345 const SCEV *Dst;
353 const SCEV *Coeff;
354 const SCEV *PosPart;
355 const SCEV *NegPart;
[all …]
HDScalarEvolutionExpressions.h38 class SCEVConstant : public SCEV {
43 SCEV(ID, scConstant), V(v) {} in SCEVConstant()
50 static inline bool classof(const SCEV *S) { in classof()
58 class SCEVCastExpr : public SCEV {
60 const SCEV *Op;
64 unsigned SCEVTy, const SCEV *op, Type *ty);
67 const SCEV *getOperand() const { return Op; } in getOperand()
71 static inline bool classof(const SCEV *S) { in classof()
86 const SCEV *op, Type *ty);
90 static inline bool classof(const SCEV *S) { in classof()
[all …]
HDScalarEvolutionExpander.h29 bool isSafeToExpand(const SCEV *S, ScalarEvolution &SE);
45 std::map<std::pair<const SCEV *, Instruction *>, TrackingVH<Value> >
52 DenseMap<const SCEV *, const Loop *> RelevantLoops;
120 bool isHighCostExpansion(const SCEV *Expr, Loop *L) {
121 SmallPtrSet<const SCEV *, 8> Processed;
147 Value *expandCodeFor(const SCEV *SH, Type *Ty, Instruction *I);
200 bool isHighCostExpansionHelper(const SCEV *S, Loop *L,
201 SmallPtrSetImpl<const SCEV *> &Processed);
221 Value *expandAddToGEP(const SCEV *const *op_begin,
222 const SCEV *const *op_end,
[all …]
HDLoopAccessAnalysis.h35 class SCEV; variable
303 const SCEV *Start;
305 const SCEV *End;
314 const SCEV *Expr;
316 PointerInfo(Value *PointerValue, const SCEV *Start, const SCEV *End, in PointerInfo()
318 const SCEV *Expr) in PointerInfo()
363 const SCEV *High;
366 const SCEV *Low;
564 const SCEV *replaceSymbolicStrideSCEV(ScalarEvolution *SE,
HDScalarEvolutionNormalization.h47 class SCEV; variable
68 const SCEV *TransformForPostIncUse(TransformKind Kind,
69 const SCEV *S,
HDIVUsers.h29 class SCEV; variable
157 const SCEV *getReplacementExpr(const IVStrideUse &IU) const;
160 const SCEV *getExpr(const IVStrideUse &IU) const;
162 const SCEV *getStride(const IVStrideUse &IU, const Loop *L) const;
/NextBSD/contrib/llvm/lib/Analysis/
HDScalarEvolutionNormalization.cpp73 DenseMap<const SCEV*, const SCEV*> Transformed;
80 const SCEV *TransformSubExpr(const SCEV *S, Instruction *User,
84 const SCEV *TransformImpl(const SCEV *S, Instruction *User,
91 const SCEV *PostIncTransform::
92 TransformImpl(const SCEV *S, Instruction *User, Value *OperandValToReplace) { in TransformImpl()
95 const SCEV *O = X->getOperand(); in TransformImpl()
96 const SCEV *N = TransformSubExpr(O, User, OperandValToReplace); in TransformImpl()
109 SmallVector<const SCEV *, 8> Operands; in TransformImpl()
119 const SCEV *Result = SE.getAddRecExpr(Operands, L, SCEV::FlagAnyWrap); in TransformImpl()
134 const SCEV *TransformedStep = in TransformImpl()
[all …]
HDScalarEvolution.cpp136 void SCEV::dump() const { in dump()
142 void SCEV::print(raw_ostream &OS) const { in print()
149 const SCEV *Op = Trunc->getOperand(); in print()
156 const SCEV *Op = ZExt->getOperand(); in print()
163 const SCEV *Op = SExt->getOperand(); in print()
252 Type *SCEV::getType() const { in getType()
277 bool SCEV::isZero() const { in isZero()
283 bool SCEV::isOne() const { in isOne()
289 bool SCEV::isAllOnesValue() const { in isAllOnesValue()
297 bool SCEV::isNonConstantNegative() const { in isNonConstantNegative()
[all …]
HDDependenceAnalysis.cpp249 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
292 const SCEV *DependenceAnalysis::Constraint::getX() const { in getX()
300 const SCEV *DependenceAnalysis::Constraint::getY() const { in getY()
308 const SCEV *DependenceAnalysis::Constraint::getA() const { in getA()
317 const SCEV *DependenceAnalysis::Constraint::getB() const { in getB()
326 const SCEV *DependenceAnalysis::Constraint::getC() const { in getC()
335 const SCEV *DependenceAnalysis::Constraint::getD() const { in getD()
349 void DependenceAnalysis::Constraint::setPoint(const SCEV *X, in setPoint()
350 const SCEV *Y, in setPoint()
359 void DependenceAnalysis::Constraint::setLine(const SCEV *AA, in setLine()
[all …]
HDScalarEvolutionExpander.cpp211 static bool FactorOutConstant(const SCEV *&S, const SCEV *&Remainder, in FactorOutConstant()
212 const SCEV *Factor, ScalarEvolution &SE, in FactorOutConstant()
239 const SCEV *Div = SE.getConstant(CI); in FactorOutConstant()
258 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); in FactorOutConstant()
268 const SCEV *Step = A->getStepRecurrence(SE); in FactorOutConstant()
269 const SCEV *StepRem = SE.getConstant(Step->getType(), 0); in FactorOutConstant()
274 const SCEV *Start = A->getStart(); in FactorOutConstant()
278 A->getNoWrapFlags(SCEV::FlagNW)); in FactorOutConstant()
289 static void SimplifyAddOperands(SmallVectorImpl<const SCEV *> &Ops, in SimplifyAddOperands()
296 SmallVector<const SCEV *, 8> NoAddRecs(Ops.begin(), Ops.end() - NumAddRecs); in SimplifyAddOperands()
[all …]
HDScalarEvolutionAliasAnalysis.cpp59 Value *GetBaseValue(const SCEV *S);
92 ScalarEvolutionAliasAnalysis::GetBaseValue(const SCEV *S) { in GetBaseValue()
99 const SCEV *Last = A->getOperand(A->getNumOperands()-1); in GetBaseValue()
119 const SCEV *AS = SE->getSCEV(const_cast<Value *>(LocA.Ptr)); in alias()
120 const SCEV *BS = SE->getSCEV(const_cast<Value *>(LocB.Ptr)); in alias()
134 const SCEV *BA = SE->getMinusSCEV(BS, AS); in alias()
148 const SCEV *AB = SE->getMinusSCEV(AS, BS); in alias()
HDIVUsers.cpp53 static bool isInteresting(const SCEV *S, const Instruction *I, const Loop *L, in isInteresting()
149 const SCEV *ISE = SE->getSCEV(I); in AddUsersImpl()
204 const SCEV *OriginalISE = ISE; in AddUsersImpl()
215 const SCEV *DenormalizedISE = in AddUsersImpl()
327 const SCEV *IVUsers::getReplacementExpr(const IVStrideUse &IU) const { in getReplacementExpr()
332 const SCEV *IVUsers::getExpr(const IVStrideUse &IU) const { in getExpr()
340 static const SCEVAddRecExpr *findAddRecForLoop(const SCEV *S, const Loop *L) { in findAddRecForLoop()
358 const SCEV *IVUsers::getStride(const IVStrideUse &IU, const Loop *L) const { in getStride()
HDLoopAccessAnalysis.cpp90 const SCEV *llvm::replaceSymbolicStrideSCEV(ScalarEvolution *SE, in replaceSymbolicStrideSCEV()
94 const SCEV *OrigSCEV = SE->getSCEV(Ptr); in replaceSymbolicStrideSCEV()
111 const SCEV *ByOne = in replaceSymbolicStrideSCEV()
126 const SCEV *Sc = replaceSymbolicStrideSCEV(SE, Strides, Ptr); in insert()
129 const SCEV *Ex = SE->getBackedgeTakenCount(Lp); in insert()
130 const SCEV *ScEnd = AR->evaluateAtIteration(Ex, *SE); in insert()
147 static const SCEV *getMinFromExprs(const SCEV *I, const SCEV *J, in getMinFromExprs()
149 const SCEV *Diff = SE->getMinusSCEV(J, I); in getMinFromExprs()
160 const SCEV *Start = RtCheck.Pointers[Index].Start; in addPointer()
161 const SCEV *End = RtCheck.Pointers[Index].End; in addPointer()
[all …]
/NextBSD/contrib/llvm/lib/Transforms/Scalar/
HDLoopStrengthReduce.cpp136 typedef DenseMap<const SCEV *, RegSortData> RegUsesTy;
139 SmallVector<const SCEV *, 16> RegSequence;
142 void CountRegister(const SCEV *Reg, size_t LUIdx);
143 void DropRegister(const SCEV *Reg, size_t LUIdx);
146 bool isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const;
148 const SmallBitVector &getUsedByIndices(const SCEV *Reg) const;
152 typedef SmallVectorImpl<const SCEV *>::iterator iterator;
153 typedef SmallVectorImpl<const SCEV *>::const_iterator const_iterator;
163 RegUseTracker::CountRegister(const SCEV *Reg, size_t LUIdx) { in CountRegister()
174 RegUseTracker::DropRegister(const SCEV *Reg, size_t LUIdx) { in DropRegister()
[all …]
HDAlignmentFromAssumptions.cpp75 bool extractAlignmentInfo(CallInst *I, Value *&AAPtr, const SCEV *&AlignSCEV,
76 const SCEV *&OffSCEV);
101 static unsigned getNewAlignmentDiff(const SCEV *DiffSCEV, in getNewAlignmentDiff()
102 const SCEV *AlignSCEV, in getNewAlignmentDiff()
105 const SCEV *DiffAlignDiv = SE->getUDivExpr(DiffSCEV, AlignSCEV); in getNewAlignmentDiff()
106 const SCEV *DiffAlign = SE->getMulExpr(DiffAlignDiv, AlignSCEV); in getNewAlignmentDiff()
107 const SCEV *DiffUnitsSCEV = SE->getMinusSCEV(DiffAlign, DiffSCEV); in getNewAlignmentDiff()
136 static unsigned getNewAlignment(const SCEV *AASCEV, const SCEV *AlignSCEV, in getNewAlignment()
137 const SCEV *OffSCEV, Value *Ptr, in getNewAlignment()
139 const SCEV *PtrSCEV = SE->getSCEV(Ptr); in getNewAlignment()
[all …]
HDInductiveRangeCheckElimination.cpp119 const SCEV *Offset;
120 const SCEV *Scale;
131 const SCEV *&Index, Value *&UpperLimit);
137 const SCEV *getOffset() const { return Offset; } in getOffset()
138 const SCEV *getScale() const { return Scale; } in getScale()
170 const SCEV *Begin;
171 const SCEV *End;
174 Range(const SCEV *Begin, const SCEV *End) : Begin(Begin), End(End) { in Range()
179 const SCEV *getBegin() const { return Begin; } in getBegin()
180 const SCEV *getEnd() const { return End; } in getEnd()
[all …]
HDNaryReassociate.cpp153 Instruction *tryReassociatedAdd(const SCEV *LHS, Value *RHS, Instruction *I);
157 Instruction *findClosestMatchingDominator(const SCEV *CandidateExpr,
185 DenseMap<const SCEV *, SmallVector<Instruction *, 2>> SeenExprs;
243 const SCEV *OldSCEV = SE->getSCEV(I); in doOneIteration()
253 const SCEV *NewSCEV = SE->getSCEV(I); in doOneIteration()
413 SmallVector<const SCEV *, 4> IndexExprs; in tryReassociateGEPAtIndex()
428 const SCEV *CandidateExpr = SE->getGEPExpr( in tryReassociateGEPAtIndex()
495 const SCEV *AExpr = SE->getSCEV(A), *BExpr = SE->getSCEV(B); in tryReassociateAdd()
496 const SCEV *RHSExpr = SE->getSCEV(RHS); in tryReassociateAdd()
509 Instruction *NaryReassociate::tryReassociatedAdd(const SCEV *LHSExpr, in tryReassociatedAdd()
[all …]
HDIndVarSimplify.cpp135 Value *LinearFunctionTestReplace(Loop *L, const SCEV *BackedgeTakenCount,
140 Value *ExpandSCEVIfNeeded(SCEVExpander &Rewriter, const SCEV *S, Loop *L,
200 const SCEV *FromBase = SE->getPointerBase(SE->getSCEV(FromPtr)); in isValidRewrite()
201 const SCEV *ToBase = SE->getPointerBase(SE->getSCEV(ToPtr)); in isValidRewrite()
504 Value *IndVarSimplify::ExpandSCEVIfNeeded(SCEVExpander &Rewriter, const SCEV *S, in ExpandSCEVIfNeeded()
638 const SCEV *ExitValue = SE->getSCEVAtScope(Inst, L->getParentLoop()); in RewriteLoopExitValues()
892 const SCEV *WideIncExpr;
928 const SCEV *GetSCEVByOpCode(const SCEV *LHS, const SCEV *RHS,
1009 const SCEV *WidenIV::GetSCEVByOpCode(const SCEV *LHS, const SCEV *RHS, in GetSCEVByOpCode()
1040 const SCEV *ExtendOperExpr = nullptr; in GetExtendedOperandRecurrence()
[all …]
HDLoopIdiomRecognize.cpp148 bool runOnLoopBlock(BasicBlock *BB, const SCEV *BECount,
151 bool processLoopStore(StoreInst *SI, const SCEV *BECount);
152 bool processLoopMemSet(MemSetInst *MSI, const SCEV *BECount);
158 const SCEV *BECount);
162 const SCEV *BECount);
613 const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop); in runOnCountableLoop()
685 bool LoopIdiomRecognize::runOnLoopBlock(BasicBlock *BB, const SCEV *BECount, in runOnLoopBlock()
729 bool LoopIdiomRecognize::processLoopStore(StoreInst *SI, const SCEV *BECount) { in processLoopStore()
789 processLoopMemSet(MemSetInst *MSI, const SCEV *BECount) { in processLoopMemSet()
830 Loop *L, const SCEV *BECount, in mayLoopAccessLocation()
[all …]
HDStraightLineStrengthReduce.cpp94 Candidate(Kind CT, const SCEV *B, ConstantInt *Idx, Value *S, in Candidate()
99 const SCEV *Base;
176 void allocateCandidatesAndFindBasisForGEP(const SCEV *B, ConstantInt *Idx,
181 void allocateCandidatesAndFindBasis(Candidate::Kind CT, const SCEV *B,
189 void factorArrayIndex(Value *ArrayIdx, const SCEV *Base, uint64_t ElementSize,
277 static bool isAddFoldable(const SCEV *Base, ConstantInt *Index, Value *Stride, in isAddFoldable()
329 Candidate::Kind CT, const SCEV *B, ConstantInt *Idx, Value *S, in allocateCandidatesAndFindBasis()
463 const SCEV *B, ConstantInt *Idx, Value *S, uint64_t ElementSize, in allocateCandidatesAndFindBasisForGEP()
476 const SCEV *Base, in factorArrayIndex()
516 SmallVector<const SCEV *, 4> IndexExprs; in allocateCandidatesAndFindBasisForGEP()
[all …]
HDLoopRerollPass.cpp379 void replace(const SCEV *IterCount);
438 bool reroll(Instruction *IV, Loop *L, BasicBlock *Header, const SCEV *IterCount,
871 const SCEV *StepSCEV = SE->getMinusSCEV(SE->getSCEV(V.Roots[0]), ADR); in findRoots()
872 const SCEV *ScaleSCEV = SE->getConstant(StepSCEV->getType(), N); in findRoots()
1255 void LoopReroll::DAGRootTracker::replace(const SCEV *IterCount) { in replace()
1277 const SCEV *Start = RealIVSCEV->getStart(); in replace()
1281 L, SCEV::FlagAnyWrap)); in replace()
1294 const SCEV *ICSCEV = RealIVSCEV->evaluateAtIteration(IterCount, *SE); in replace()
1297 const SCEV *ICMinus1SCEV = in replace()
1445 const SCEV *IterCount, in reroll()
[all …]
/NextBSD/contrib/llvm/lib/Transforms/Utils/
HDSimplifyIndVar.cpp93 const SCEV *FoldedExpr = nullptr; in foldIVUser()
161 const SCEV *S = SE->getSCEV(ICmp->getOperand(IVOperIdx)); in eliminateIVComparison()
162 const SCEV *X = SE->getSCEV(ICmp->getOperand(1 - IVOperIdx)); in eliminateIVComparison()
195 const SCEV *S = SE->getSCEV(Rem->getOperand(0)); in eliminateIVRemainder()
196 const SCEV *X = SE->getSCEV(Rem->getOperand(1)); in eliminateIVRemainder()
210 const SCEV *LessOne = in eliminateIVRemainder()
276 const SCEV *(ScalarEvolution::*GetExprForBO)(const SCEV *, const SCEV *, in strengthenOverflowingOperation()
277 SCEV::NoWrapFlags); in strengthenOverflowingOperation()
298 const SCEV *LHS = SE->getSCEV(BO->getOperand(0)); in strengthenOverflowingOperation()
299 const SCEV *RHS = SE->getSCEV(BO->getOperand(1)); in strengthenOverflowingOperation()
[all …]
/NextBSD/contrib/llvm/lib/Target/PowerPC/
HDPPCLoopPreIncPrep.cpp104 struct SCEVLess : std::binary_function<const SCEV *, const SCEV *, bool>
108 bool operator() (const SCEV *X, const SCEV *Y) const { in operator ()()
109 const SCEV *Diff = SE->getMinusSCEV(X, Y); in operator ()()
172 typedef std::multimap<const SCEV *, Instruction *, SCEVLess> Bucket; in runOnLoop()
206 const SCEV *LSCEV = SE->getSCEVAtScope(PtrValue, L); in runOnLoop()
218 const SCEV *Diff = SE->getMinusSCEV(K->first, LSCEV); in runOnLoop()
273 const SCEV *BasePtrStartSCEV = BasePtrSCEV->getStart(); in runOnLoop()
HDPPCLoopDataPrefetch.cpp179 const SCEV *LSCEV = SE->getSCEV(PtrValue); in runOnLoop()
191 const SCEV *PtrDiff = SE->getMinusSCEV(LSCEVAddRec, K->second); in runOnLoop()
204 const SCEV *NextLSCEV = SE->getAddExpr(LSCEVAddRec, SE->getMulExpr( in runOnLoop()

12