/external/llvm/include/llvm/Analysis/ |
D | ScalarEvolution.h | 50 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 …]
|
D | DependenceAnalysis.h | 52 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 …]
|
D | ScalarEvolutionExpressions.h | 38 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 …]
|
D | ScalarEvolutionExpander.h | 29 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 *);
|
D | ScalarEvolutionNormalization.h | 47 class SCEV; variable 68 const SCEV *TransformForPostIncUse(TransformKind Kind, 69 const SCEV *S,
|
D | IVUsers.h | 28 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/ |
D | ScalarEvolutionNormalization.cpp | 73 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 …]
|
D | ScalarEvolution.cpp | 132 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 …]
|
D | DependenceAnalysis.cpp | 250 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 …]
|
D | ScalarEvolutionExpander.cpp | 207 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 …]
|
D | ScalarEvolutionAliasAnalysis.cpp | 57 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()
|
D | IVUsers.cpp | 49 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()
|
D | Delinearization.cpp | 97 const SCEV *AccessFn = SE->getSCEVAtScope(getPointerOperand(*Inst), L); in print() 117 SmallVector<const SCEV *, 3> Subscripts, Sizes; in print()
|
/external/llvm/lib/Transforms/Scalar/ |
D | LoopStrengthReduce.cpp | 137 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 …]
|
D | IndVarSimplify.cpp | 116 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 …]
|
D | LoopIdiomRecognize.cpp | 146 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 …]
|
D | LoopRerollPass.cpp | 336 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/ |
D | constant-fold-gep.ll | 13 ; "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/ |
D | ScalarEvolutionTest.cpp | 56 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/ |
D | ashr-crash.ll | 6 ; 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/ |
D | scevunroll.ll | 5 ; 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/ |
D | SimplifyIndVar.cpp | 100 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/ |
D | scev-invalid.ll | 3 ; PR15570: SEGV: SCEV back-edge info invalid after dead code removal. 5 ; Indvars creates a SCEV expression for the loop's back edge taken
|
D | 2011-03-09-ExactNoMaxBECount.ll | 6 ; SCEV knows that Vexit has range [2,4], so End == Vexit == Start. 9 ; MaxBECount. SCEV should override MaxBECount with ExactBECount.
|
D | 2010-09-03-RequiredTransitive.ll | 2 ; This test checks if the SCEV analysis is printed out at all.
|