Home
last modified time | relevance | path

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

12345

/external/swiftshader/third_party/LLVM/include/llvm/Analysis/
DScalarEvolution.h49 class SCEV; variable
50 template<> struct FoldingSetTrait<SCEV>;
56 class SCEV : public FoldingSetNode {
57 friend struct FoldingSetTrait<SCEV>;
72 SCEV(const SCEV &); // DO NOT IMPLEMENT
73 void operator=(const SCEV &); // DO NOT IMPLEMENT
99 explicit SCEV(const FoldingSetNodeIDRef ID, unsigned SCEVTy) :
133 template<> struct FoldingSetTrait<SCEV> : DefaultFoldingSetTrait<SCEV> {
134 static void Profile(const SCEV &X, FoldingSetNodeID& ID) {
137 static bool Equals(const SCEV &X, const FoldingSetNodeID &ID,
[all …]
DScalarEvolutionExpressions.h36 class SCEVConstant : public SCEV {
41 SCEV(ID, scConstant), V(v) {} in SCEVConstant()
49 static inline bool classof(const SCEV *S) { in classof()
57 class SCEVCastExpr : public SCEV {
59 const SCEV *Op;
63 unsigned SCEVTy, const SCEV *op, Type *ty);
66 const SCEV *getOperand() const { return Op; } in getOperand()
71 static inline bool classof(const SCEV *S) { in classof()
86 const SCEV *op, Type *ty);
91 static inline bool classof(const SCEV *S) { in classof()
[all …]
DLoopDependenceAnalysis.h34 class SCEV; variable
72 void getLoops(const SCEV*, DenseSet<const Loop*>*) const;
76 bool isLoopInvariant(const SCEV*) const;
81 bool isAffine(const SCEV*) const;
84 bool isZIVPair(const SCEV*, const SCEV*) const;
85 bool isSIVPair(const SCEV*, const SCEV*) const;
86 DependenceResult analyseZIV(const SCEV*, const SCEV*, Subscript*) const;
87 DependenceResult analyseSIV(const SCEV*, const SCEV*, Subscript*) const;
88 DependenceResult analyseMIV(const SCEV*, const SCEV*, Subscript*) const;
89 DependenceResult analyseSubscript(const SCEV*, const SCEV*, Subscript*) const;
DScalarEvolutionExpander.h37 std::map<std::pair<const SCEV *, Instruction *>, AssertingVH<Value> >
43 DenseMap<const SCEV *, const Loop *> RelevantLoops;
123 Value *expandCodeFor(const SCEV *SH, Type *Ty, Instruction *I);
186 Value *expandAddToGEP(const SCEV *const *op_begin,
187 const SCEV *const *op_end,
190 Value *expand(const SCEV *S);
196 Value *expandCodeFor(const SCEV *SH, Type *Ty = 0);
206 const Loop *getRelevantLoop(const SCEV *);
/external/llvm/include/llvm/Analysis/
DScalarEvolution.h50 class SCEV; variable
58 template <> struct FoldingSetTrait<SCEV>;
64 class SCEV : public FoldingSetNode {
65 friend struct FoldingSetTrait<SCEV>;
80 SCEV(const SCEV &) = delete;
81 void operator=(const SCEV &) = delete;
108 explicit SCEV(const FoldingSetNodeIDRef ID, unsigned SCEVTy) :
143 template<> struct FoldingSetTrait<SCEV> : DefaultFoldingSetTrait<SCEV> {
144 static void Profile(const SCEV &X, FoldingSetNodeID& ID) {
147 static bool Equals(const SCEV &X, const FoldingSetNodeID &ID,
[all …]
DDependenceAnalysis.h53 class SCEV; variable
107 const SCEV *Distance; // NULL implies no distance available.
167 virtual const SCEV *getDistance(unsigned Level) const { return nullptr; } in getDistance()
253 const SCEV *getDistance(unsigned Level) const override;
338 const SCEV *getSplitIteration(const Dependence &Dep, unsigned Level);
352 const SCEV *Src;
353 const SCEV *Dst;
361 const SCEV *Coeff;
362 const SCEV *PosPart;
363 const SCEV *NegPart;
[all …]
DScalarEvolutionExpressions.h36 class SCEVConstant : public SCEV {
41 SCEV(ID, scConstant), V(v) {} in SCEVConstant()
49 static inline bool classof(const SCEV *S) { in classof()
55 class SCEVCastExpr : public SCEV {
57 const SCEV *Op;
61 unsigned SCEVTy, const SCEV *op, Type *ty);
64 const SCEV *getOperand() const { return Op; } in getOperand()
68 static inline bool classof(const SCEV *S) { in classof()
81 const SCEV *op, Type *ty);
85 static inline bool classof(const SCEV *S) { in classof()
[all …]
DScalarEvolutionExpander.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;
169 bool isHighCostExpansion(const SCEV *Expr, Loop *L,
171 SmallPtrSet<const SCEV *, 8> Processed;
197 Value *expandCodeFor(const SCEV *SH, Type *Ty, Instruction *I);
279 Value *findExistingExpansion(const SCEV *S, const Instruction *At, Loop *L);
285 bool isHighCostExpansionHelper(const SCEV *S, Loop *L,
287 SmallPtrSetImpl<const SCEV *> &Processed);
307 Value *expandAddToGEP(const SCEV *const *op_begin,
[all …]
/external/llvm/lib/Analysis/
DScalarEvolution.cpp132 void SCEV::dump() const { in dump()
137 void SCEV::print(raw_ostream &OS) const { in print()
144 const SCEV *Op = Trunc->getOperand(); in print()
151 const SCEV *Op = ZExt->getOperand(); in print()
158 const SCEV *Op = SExt->getOperand(); in print()
247 Type *SCEV::getType() const { in getType()
272 bool SCEV::isZero() const { in isZero()
278 bool SCEV::isOne() const { in isOne()
284 bool SCEV::isAllOnesValue() const { in isAllOnesValue()
290 bool SCEV::isNonConstantNegative() const { in isNonConstantNegative()
[all …]
DScalarEvolutionNormalization.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 …]
DDependenceAnalysis.cpp256 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
299 const SCEV *DependenceInfo::Constraint::getX() const { in getX()
307 const SCEV *DependenceInfo::Constraint::getY() const { in getY()
315 const SCEV *DependenceInfo::Constraint::getA() const { in getA()
324 const SCEV *DependenceInfo::Constraint::getB() const { in getB()
333 const SCEV *DependenceInfo::Constraint::getC() const { in getC()
342 const SCEV *DependenceInfo::Constraint::getD() const { in getD()
355 void DependenceInfo::Constraint::setPoint(const SCEV *X, const SCEV *Y, in setPoint()
363 void DependenceInfo::Constraint::setLine(const SCEV *AA, const SCEV *BB, in setLine()
364 const SCEV *CC, const Loop *CurLoop) { in setLine()
[all …]
DScalarEvolutionExpander.cpp226 static bool FactorOutConstant(const SCEV *&S, const SCEV *&Remainder, in FactorOutConstant()
227 const SCEV *Factor, ScalarEvolution &SE, in FactorOutConstant()
252 const SCEV *Div = SE.getConstant(CI); in FactorOutConstant()
269 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); in FactorOutConstant()
278 const SCEV *Step = A->getStepRecurrence(SE); in FactorOutConstant()
279 const SCEV *StepRem = SE.getConstant(Step->getType(), 0); in FactorOutConstant()
284 const SCEV *Start = A->getStart(); in FactorOutConstant()
288 A->getNoWrapFlags(SCEV::FlagNW)); in FactorOutConstant()
299 static void SimplifyAddOperands(SmallVectorImpl<const SCEV *> &Ops, in SimplifyAddOperands()
306 SmallVector<const SCEV *, 8> NoAddRecs(Ops.begin(), Ops.end() - NumAddRecs); in SimplifyAddOperands()
[all …]
/external/swiftshader/third_party/LLVM/lib/Analysis/
DScalarEvolutionNormalization.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()
124 const SCEV *TransformedStep = in TransformImpl()
[all …]
DScalarEvolution.cpp123 void SCEV::dump() const { in dump()
128 void SCEV::print(raw_ostream &OS) const { in print()
135 const SCEV *Op = Trunc->getOperand(); in print()
142 const SCEV *Op = ZExt->getOperand(); in print()
149 const SCEV *Op = SExt->getOperand(); in print()
231 Type *SCEV::getType() const { in getType()
259 bool SCEV::isZero() const { in isZero()
265 bool SCEV::isOne() const { in isOne()
271 bool SCEV::isAllOnesValue() const { in isAllOnesValue()
278 SCEV(FoldingSetNodeIDRef(), scCouldNotCompute) {} in SCEVCouldNotCompute()
[all …]
DLoopDependenceAnalysis.cpp107 static inline const SCEV *GetZeroSCEV(ScalarEvolution *SE) { in GetZeroSCEV()
139 void LoopDependenceAnalysis::getLoops(const SCEV *S, in getLoops()
147 bool LoopDependenceAnalysis::isLoopInvariant(const SCEV *S) const { in isLoopInvariant()
153 bool LoopDependenceAnalysis::isAffine(const SCEV *S) const { in isAffine()
158 bool LoopDependenceAnalysis::isZIVPair(const SCEV *A, const SCEV *B) const { in isZIVPair()
162 bool LoopDependenceAnalysis::isSIVPair(const SCEV *A, const SCEV *B) const { in isSIVPair()
170 LoopDependenceAnalysis::analyseZIV(const SCEV *A, in analyseZIV()
171 const SCEV *B, in analyseZIV()
178 LoopDependenceAnalysis::analyseSIV(const SCEV *A, in analyseSIV()
179 const SCEV *B, in analyseSIV()
[all …]
DScalarEvolutionExpander.cpp185 static bool FactorOutConstant(const SCEV *&S, in FactorOutConstant()
186 const SCEV *&Remainder, in FactorOutConstant()
187 const SCEV *Factor, in FactorOutConstant()
215 const SCEV *Div = SE.getConstant(CI); in FactorOutConstant()
236 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); in FactorOutConstant()
247 const SCEV *SOp = M->getOperand(i); in FactorOutConstant()
248 const SCEV *Remainder = SE.getConstant(SOp->getType(), 0); in FactorOutConstant()
251 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); in FactorOutConstant()
262 const SCEV *Step = A->getStepRecurrence(SE); in FactorOutConstant()
263 const SCEV *StepRem = SE.getConstant(Step->getType(), 0); in FactorOutConstant()
[all …]
/external/llvm/lib/Transforms/Utils/
DSimplifyIndVar.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()
170 const SCEV *InvariantLHS, *InvariantRHS; in eliminateIVComparison()
243 const SCEV *IncomingS = SE->getSCEV(Incoming); in eliminateIVComparison()
279 const SCEV *S = SE->getSCEV(Rem->getOperand(0)); in eliminateIVRemainder()
280 const SCEV *X = SE->getSCEV(Rem->getOperand(1)); in eliminateIVRemainder()
294 const SCEV *LessOne = SE->getMinusSCEV(S, SE->getOne(S->getType())); in eliminateIVRemainder()
323 typedef const SCEV *(ScalarEvolution::*OperationFunctionTy)( in eliminateOverflowIntrinsic()
324 const SCEV *, const SCEV *, SCEV::NoWrapFlags); in eliminateOverflowIntrinsic()
[all …]
/external/swiftshader/third_party/LLVM/lib/Transforms/Scalar/
DLoopStrengthReduce.cpp124 typedef DenseMap<const SCEV *, RegSortData> RegUsesTy;
127 SmallVector<const SCEV *, 16> RegSequence;
130 void CountRegister(const SCEV *Reg, size_t LUIdx);
131 void DropRegister(const SCEV *Reg, size_t LUIdx);
134 bool isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const;
136 const SmallBitVector &getUsedByIndices(const SCEV *Reg) const;
140 typedef SmallVectorImpl<const SCEV *>::iterator iterator;
141 typedef SmallVectorImpl<const SCEV *>::const_iterator const_iterator;
151 RegUseTracker::CountRegister(const SCEV *Reg, size_t LUIdx) { in CountRegister()
162 RegUseTracker::DropRegister(const SCEV *Reg, size_t LUIdx) { in DropRegister()
[all …]
DLoopIdiomRecognize.cpp79 bool runOnLoopBlock(BasicBlock *BB, const SCEV *BECount,
82 bool processLoopStore(StoreInst *SI, const SCEV *BECount);
83 bool processLoopMemSet(MemSetInst *MSI, const SCEV *BECount);
89 const SCEV *BECount);
93 const SCEV *BECount);
185 const SCEV *BECount = SE->getBackedgeTakenCount(L); in runOnLoop()
225 bool LoopIdiomRecognize::runOnLoopBlock(BasicBlock *BB, const SCEV *BECount, in runOnLoopBlock()
269 bool LoopIdiomRecognize::processLoopStore(StoreInst *SI, const SCEV *BECount) { in processLoopStore()
328 processLoopMemSet(MemSetInst *MSI, const SCEV *BECount) { in processLoopMemSet()
369 Loop *L, const SCEV *BECount, in mayLoopAccessLocation()
[all …]
/external/llvm/lib/Transforms/Scalar/
DLoopStrengthReduce.cpp157 typedef DenseMap<const SCEV *, RegSortData> RegUsesTy;
160 SmallVector<const SCEV *, 16> RegSequence;
163 void countRegister(const SCEV *Reg, size_t LUIdx);
164 void dropRegister(const SCEV *Reg, size_t LUIdx);
167 bool isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const;
169 const SmallBitVector &getUsedByIndices(const SCEV *Reg) const;
173 typedef SmallVectorImpl<const SCEV *>::iterator iterator;
174 typedef SmallVectorImpl<const SCEV *>::const_iterator const_iterator;
184 RegUseTracker::countRegister(const SCEV *Reg, size_t LUIdx) { in countRegister()
195 RegUseTracker::dropRegister(const SCEV *Reg, size_t LUIdx) { in dropRegister()
[all …]
DAlignmentFromAssumptions.cpp93 static unsigned getNewAlignmentDiff(const SCEV *DiffSCEV, in getNewAlignmentDiff()
94 const SCEV *AlignSCEV, in getNewAlignmentDiff()
97 const SCEV *DiffAlignDiv = SE->getUDivExpr(DiffSCEV, AlignSCEV); in getNewAlignmentDiff()
98 const SCEV *DiffAlign = SE->getMulExpr(DiffAlignDiv, AlignSCEV); in getNewAlignmentDiff()
99 const SCEV *DiffUnitsSCEV = SE->getMinusSCEV(DiffAlign, DiffSCEV); in getNewAlignmentDiff()
128 static unsigned getNewAlignment(const SCEV *AASCEV, const SCEV *AlignSCEV, in getNewAlignment()
129 const SCEV *OffSCEV, Value *Ptr, in getNewAlignment()
131 const SCEV *PtrSCEV = SE->getSCEV(Ptr); in getNewAlignment()
132 const SCEV *DiffSCEV = SE->getMinusSCEV(PtrSCEV, AASCEV); in getNewAlignment()
160 const SCEV *DiffStartSCEV = DiffARSCEV->getStart(); in getNewAlignment()
[all …]
DInductiveRangeCheckElimination.cpp118 const SCEV *Offset = nullptr;
119 const SCEV *Scale = nullptr;
134 const SCEV *getOffset() const { return Offset; } in getOffset()
135 const SCEV *getScale() const { return Scale; } in getScale()
167 const SCEV *Begin;
168 const SCEV *End;
171 Range(const SCEV *Begin, const SCEV *End) : Begin(Begin), End(End) { in Range()
176 const SCEV *getBegin() const { return Begin; } in getBegin()
177 const SCEV *getEnd() const { return End; } in getEnd()
259 const SCEV *S = SE.getSCEV(V); in parseRangeCheckICmp()
[all …]
DNaryReassociate.cpp156 Instruction *tryReassociatedBinaryOp(const SCEV *LHS, Value *RHS,
163 const SCEV *getBinarySCEV(BinaryOperator *I, const SCEV *LHS,
164 const SCEV *RHS);
168 Instruction *findClosestMatchingDominator(const SCEV *CandidateExpr,
191 DenseMap<const SCEV *, SmallVector<WeakVH, 2>> SeenExprs;
250 const SCEV *OldSCEV = SE->getSCEV(&*I); in doOneIteration()
262 const SCEV *NewSCEV = SE->getSCEV(&*I); in doOneIteration()
374 SmallVector<const SCEV *, 4> IndexExprs; in tryReassociateGEPAtIndex()
389 const SCEV *CandidateExpr = SE->getGEPExpr( in tryReassociateGEPAtIndex()
457 const SCEV *AExpr = SE->getSCEV(A), *BExpr = SE->getSCEV(B); in tryReassociateBinaryOp()
[all …]
/external/swiftshader/third_party/LLVM/test/Other/
Dconstant-fold-gep.ll13 ; "SCEV" - ScalarEvolution but no targetdata.
14 ; RUN: opt -analyze -scalar-evolution < %s | FileCheck --check-prefix=SCEV %s
178 ; SCEV: Classifying expressions for: @goo8
179 ; SCEV: %t = bitcast i8* getelementptr (i8* inttoptr (i32 1 to i8*), i32 -1) to i8*
180 ; SCEV: --> ((-1 * sizeof(i8)) + inttoptr (i32 1 to i8*))
181 ; SCEV: Classifying expressions for: @goo1
182 ; SCEV: %t = bitcast i1* getelementptr (i1* inttoptr (i32 1 to i1*), i32 -1) to i1*
183 ; SCEV: --> ((-1 * sizeof(i1)) + inttoptr (i32 1 to i1*))
184 ; SCEV: Classifying expressions for: @foo8
185 ; SCEV: %t = bitcast i8* getelementptr (i8* inttoptr (i32 1 to i8*), i32 -2) to i8*
[all …]
/external/llvm/test/Other/
Dconstant-fold-gep.ll13 ; "SCEV" - ScalarEvolution with default target layout
14 ; RUN: opt -analyze -scalar-evolution < %s | FileCheck --check-prefix=SCEV %s
181 ; SCEV: Classifying expressions for: @goo8
182 ; SCEV: %t = bitcast i8* getelementptr (i8, i8* inttoptr (i32 1 to i8*), i32 -1) to i8*
183 ; SCEV: --> (-1 + inttoptr (i32 1 to i8*))
184 ; SCEV: Classifying expressions for: @goo1
185 ; SCEV: %t = bitcast i1* getelementptr (i1, i1* inttoptr (i32 1 to i1*), i32 -1) to i1*
186 ; SCEV: --> (-1 + inttoptr (i32 1 to i1*))
187 ; SCEV: Classifying expressions for: @foo8
188 ; SCEV: %t = bitcast i8* getelementptr (i8, i8* inttoptr (i32 1 to i8*), i32 -2) to i8*
[all …]

12345