Home
last modified time | relevance | path

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

12

/external/llvm/include/llvm/Analysis/
DScalarEvolution.h50 class SCEV; variable
51 template<> struct FoldingSetTrait<SCEV>;
57 class SCEV : public FoldingSetNode {
58 friend struct FoldingSetTrait<SCEV>;
73 SCEV(const SCEV &) LLVM_DELETED_FUNCTION;
74 void operator=(const SCEV &) LLVM_DELETED_FUNCTION;
100 explicit SCEV(const FoldingSetNodeIDRef ID, unsigned SCEVTy) :
138 template<> struct FoldingSetTrait<SCEV> : DefaultFoldingSetTrait<SCEV> {
139 static void Profile(const SCEV &X, FoldingSetNodeID& ID) {
142 static bool Equals(const SCEV &X, const FoldingSetNodeID &ID,
[all …]
DDependenceAnalysis.h52 class SCEV; variable
97 const SCEV *Distance; // NULL implies no distance available.
157 virtual const SCEV *getDistance(unsigned Level) const { return nullptr; } in getDistance()
251 const SCEV *getDistance(unsigned Level) const override;
334 const SCEV *getSplitIteration(const Dependence *Dep, unsigned Level);
346 const SCEV *Src;
347 const SCEV *Dst;
355 const SCEV *Coeff;
356 const SCEV *PosPart;
357 const SCEV *NegPart;
[all …]
DScalarEvolutionExpressions.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 …]
DScalarEvolutionExpander.h29 bool isSafeToExpand(const SCEV *S, ScalarEvolution &SE);
44 std::map<std::pair<const SCEV *, Instruction *>, TrackingVH<Value> >
51 DenseMap<const SCEV *, const Loop *> RelevantLoops;
139 Value *expandCodeFor(const SCEV *SH, Type *Ty, Instruction *I);
212 Value *expandAddToGEP(const SCEV *const *op_begin,
213 const SCEV *const *op_end,
216 Value *expand(const SCEV *S);
222 Value *expandCodeFor(const SCEV *SH, Type *Ty = nullptr);
225 const Loop *getRelevantLoop(const SCEV *);
DScalarEvolutionNormalization.h47 class SCEV; variable
68 const SCEV *TransformForPostIncUse(TransformKind Kind,
69 const SCEV *S,
DIVUsers.h28 class SCEV; variable
153 const SCEV *getReplacementExpr(const IVStrideUse &IU) const;
156 const SCEV *getExpr(const IVStrideUse &IU) const;
158 const SCEV *getStride(const IVStrideUse &IU, const Loop *L) const;
/external/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()
134 const SCEV *TransformedStep = in TransformImpl()
[all …]
DScalarEvolution.cpp132 void SCEV::dump() const { in dump()
138 void SCEV::print(raw_ostream &OS) const { in print()
145 const SCEV *Op = Trunc->getOperand(); in print()
152 const SCEV *Op = ZExt->getOperand(); in print()
159 const SCEV *Op = SExt->getOperand(); in print()
248 Type *SCEV::getType() const { in getType()
273 bool SCEV::isZero() const { in isZero()
279 bool SCEV::isOne() const { in isOne()
285 bool SCEV::isAllOnesValue() const { in isAllOnesValue()
293 bool SCEV::isNonConstantNegative() const { in isNonConstantNegative()
[all …]
DDependenceAnalysis.cpp250 const SCEV *FullDependence::getDistance(unsigned Level) const { in getDistance()
293 const SCEV *DependenceAnalysis::Constraint::getX() const { in getX()
301 const SCEV *DependenceAnalysis::Constraint::getY() const { in getY()
309 const SCEV *DependenceAnalysis::Constraint::getA() const { in getA()
318 const SCEV *DependenceAnalysis::Constraint::getB() const { in getB()
327 const SCEV *DependenceAnalysis::Constraint::getC() const { in getC()
336 const SCEV *DependenceAnalysis::Constraint::getD() const { in getD()
350 void DependenceAnalysis::Constraint::setPoint(const SCEV *X, in setPoint()
351 const SCEV *Y, in setPoint()
360 void DependenceAnalysis::Constraint::setLine(const SCEV *AA, in setLine()
[all …]
DScalarEvolutionExpander.cpp207 static bool FactorOutConstant(const SCEV *&S, in FactorOutConstant()
208 const SCEV *&Remainder, in FactorOutConstant()
209 const SCEV *Factor, in FactorOutConstant()
237 const SCEV *Div = SE.getConstant(CI); in FactorOutConstant()
258 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); in FactorOutConstant()
269 const SCEV *SOp = M->getOperand(i); in FactorOutConstant()
270 const SCEV *Remainder = SE.getConstant(SOp->getType(), 0); in FactorOutConstant()
273 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); in FactorOutConstant()
284 const SCEV *Step = A->getStepRecurrence(SE); in FactorOutConstant()
285 const SCEV *StepRem = SE.getConstant(Step->getType(), 0); in FactorOutConstant()
[all …]
DScalarEvolutionAliasAnalysis.cpp57 Value *GetBaseValue(const SCEV *S);
90 ScalarEvolutionAliasAnalysis::GetBaseValue(const SCEV *S) { in GetBaseValue()
97 const SCEV *Last = A->getOperand(A->getNumOperands()-1); in GetBaseValue()
118 const SCEV *AS = SE->getSCEV(const_cast<Value *>(LocA.Ptr)); in alias()
119 const SCEV *BS = SE->getSCEV(const_cast<Value *>(LocB.Ptr)); in alias()
133 const SCEV *BA = SE->getMinusSCEV(BS, AS); in alias()
147 const SCEV *AB = SE->getMinusSCEV(AS, BS); in alias()
DIVUsers.cpp49 static bool isInteresting(const SCEV *S, const Instruction *I, const Loop *L, in isInteresting()
138 const SCEV *ISE = SE->getSCEV(I); in AddUsersImpl()
193 const SCEV *OriginalISE = ISE; in AddUsersImpl()
204 const SCEV *DenormalizedISE = in AddUsersImpl()
311 const SCEV *IVUsers::getReplacementExpr(const IVStrideUse &IU) const { in getReplacementExpr()
316 const SCEV *IVUsers::getExpr(const IVStrideUse &IU) const { in getExpr()
324 static const SCEVAddRecExpr *findAddRecForLoop(const SCEV *S, const Loop *L) { in findAddRecForLoop()
342 const SCEV *IVUsers::getStride(const IVStrideUse &IU, const Loop *L) const { in getStride()
DDelinearization.cpp97 const SCEV *AccessFn = SE->getSCEVAtScope(getPointerOperand(*Inst), L); in print()
117 SmallVector<const SCEV *, 3> Subscripts, Sizes; in print()
/external/llvm/lib/Transforms/Scalar/
DLoopStrengthReduce.cpp137 typedef DenseMap<const SCEV *, RegSortData> RegUsesTy;
140 SmallVector<const SCEV *, 16> RegSequence;
143 void CountRegister(const SCEV *Reg, size_t LUIdx);
144 void DropRegister(const SCEV *Reg, size_t LUIdx);
147 bool isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const;
149 const SmallBitVector &getUsedByIndices(const SCEV *Reg) const;
153 typedef SmallVectorImpl<const SCEV *>::iterator iterator;
154 typedef SmallVectorImpl<const SCEV *>::const_iterator const_iterator;
164 RegUseTracker::CountRegister(const SCEV *Reg, size_t LUIdx) { in CountRegister()
175 RegUseTracker::DropRegister(const SCEV *Reg, size_t LUIdx) { in DropRegister()
[all …]
DIndVarSimplify.cpp116 Value *LinearFunctionTestReplace(Loop *L, const SCEV *BackedgeTakenCount,
177 const SCEV *FromBase = SE->getPointerBase(SE->getSCEV(FromPtr)); in isValidRewrite()
178 const SCEV *ToBase = SE->getPointerBase(SE->getSCEV(ToPtr)); in isValidRewrite()
553 const SCEV *ExitValue = SE->getSCEVAtScope(Inst, L->getParentLoop()); in RewriteLoopExitValues()
724 const SCEV *WideIncExpr;
850 const SCEV *ExtendOperExpr = nullptr; in GetExtendedOperandRecurrence()
884 const SCEV *NarrowExpr = SE->getSCEV(NarrowUse); in GetWideRecurrence()
892 const SCEV *WideExpr = IsSigned ? in GetWideRecurrence()
1051 const SCEV *WideIVExpr = IsSigned ? in CreateWideIV()
1132 IndVarSimplifyVisitor(PHINode *IV, ScalarEvolution *SCEV, in IndVarSimplifyVisitor() argument
[all …]
DLoopIdiomRecognize.cpp146 bool runOnLoopBlock(BasicBlock *BB, const SCEV *BECount,
149 bool processLoopStore(StoreInst *SI, const SCEV *BECount);
150 bool processLoopMemSet(MemSetInst *MSI, const SCEV *BECount);
156 const SCEV *BECount);
160 const SCEV *BECount);
653 const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop); in runOnCountableLoop()
728 bool LoopIdiomRecognize::runOnLoopBlock(BasicBlock *BB, const SCEV *BECount, in runOnLoopBlock()
772 bool LoopIdiomRecognize::processLoopStore(StoreInst *SI, const SCEV *BECount) { in processLoopStore()
831 processLoopMemSet(MemSetInst *MSI, const SCEV *BECount) { in processLoopMemSet()
872 Loop *L, const SCEV *BECount, in mayLoopAccessLocation()
[all …]
DLoopRerollPass.cpp336 bool reroll(Instruction *IV, Loop *L, BasicBlock *Header, const SCEV *IterCount,
771 const SCEV *IterCount, in reroll()
1076 const SCEV *Start = RealIVSCEV->getStart(); in reroll()
1083 L, SCEV::FlagAnyWrap)); in reroll()
1094 const SCEV *ICSCEV = RealIVSCEV->evaluateAtIteration(IterCount, *SE); in reroll()
1099 const SCEV *ICMinus1SCEV = in reroll()
1156 const SCEV *LIBETC = SE->getBackedgeTakenCount(L); in runOnLoop()
1157 const SCEV *IterCount = in runOnLoop()
/external/llvm/test/Other/
Dconstant-fold-gep.ll13 ; "SCEV" - ScalarEvolution but no targetdata.
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* inttoptr (i32 1 to i8*), i32 -1) to i8*
183 ; SCEV: --> ((-1 * sizeof(i8)) + inttoptr (i32 1 to i8*))
184 ; SCEV: Classifying expressions for: @goo1
185 ; SCEV: %t = bitcast i1* getelementptr (i1* inttoptr (i32 1 to i1*), i32 -1) to i1*
186 ; SCEV: --> ((-1 * sizeof(i1)) + inttoptr (i32 1 to i1*))
187 ; SCEV: Classifying expressions for: @foo8
188 ; SCEV: %t = bitcast i8* getelementptr (i8* inttoptr (i32 1 to i8*), i32 -2) to i8*
[all …]
/external/llvm/unittests/Analysis/
DScalarEvolutionTest.cpp56 const SCEV *S0 = SE.getSCEV(V0); in TEST_F()
57 const SCEV *S1 = SE.getSCEV(V1); in TEST_F()
58 const SCEV *S2 = SE.getSCEV(V2); in TEST_F()
60 const SCEV *P0 = SE.getAddExpr(S0, S0); in TEST_F()
61 const SCEV *P1 = SE.getAddExpr(S1, S1); in TEST_F()
62 const SCEV *P2 = SE.getAddExpr(S2, S2); in TEST_F()
109 SmallVector<const SCEV *, 5> A; in TEST_F()
115 const SCEV *A_rec = SE.getAddRecExpr(A, &L, SCEV::FlagAnyWrap); in TEST_F()
117 SmallVector<const SCEV *, 5> B; in TEST_F()
123 const SCEV *B_rec = SE.getAddRecExpr(B, &L, SCEV::FlagAnyWrap); in TEST_F()
[all …]
/external/llvm/test/Transforms/LoopSimplify/
Dashr-crash.ll6 ; After a series of loop optimizations, SCEV's LoopDispositions grow stale.
7 ; In particular, LoopSimplify hoists %cmp4, resulting in this SCEV for %add:
10 ; When recomputing the SCEV for %ashr, we truncate the operands to get:
13 ; This SCEV was never mapped to a value so never invalidated. It's
25 ; Check that the def-use chain that leads to the bad SCEV is still
/external/llvm/test/Transforms/LoopUnroll/
Dscevunroll.ll5 ; Indvars is run first to generate an "old" SCEV result. Some unit
6 ; tests may check that SCEV is properly invalidated between passes.
33 ; SCEV unrolling properly handles loops with multiple exits. In this
35 ; latch block. Canonical unrolling incorrectly unrolls it, but SCEV
67 ; SCEV properly unrolls multi-exit loops.
69 ; SCEV cannot currently unroll this loop.
71 ; rdar:14038809 [SCEV]: Optimize trip count computation for multi-exit loops.
101 ; SCEV should not unroll a multi-exit loops unless the latch block has
138 ; exits, SCEV must forget its ExitNotTaken info.
/external/llvm/lib/Transforms/Utils/
DSimplifyIndVar.cpp100 const SCEV *FoldedExpr = nullptr; in foldIVUser()
168 const SCEV *S = SE->getSCEV(ICmp->getOperand(IVOperIdx)); in eliminateIVComparison()
169 const SCEV *X = SE->getSCEV(ICmp->getOperand(1 - IVOperIdx)); in eliminateIVComparison()
202 const SCEV *S = SE->getSCEV(Rem->getOperand(0)); in eliminateIVRemainder()
203 const SCEV *X = SE->getSCEV(Rem->getOperand(1)); in eliminateIVRemainder()
217 const SCEV *LessOne = in eliminateIVRemainder()
367 const SCEV *S = SE->getSCEV(I); in isSimpleIVUser()
/external/llvm/test/Analysis/ScalarEvolution/
Dscev-invalid.ll3 ; PR15570: SEGV: SCEV back-edge info invalid after dead code removal.
5 ; Indvars creates a SCEV expression for the loop's back edge taken
D2011-03-09-ExactNoMaxBECount.ll6 ; SCEV knows that Vexit has range [2,4], so End == Vexit == Start.
9 ; MaxBECount. SCEV should override MaxBECount with ExactBECount.
D2010-09-03-RequiredTransitive.ll2 ; This test checks if the SCEV analysis is printed out at all.

12