HomeSort by relevance Sort by last modified time
    Searched refs:SCEV (Results 1 - 17 of 17) sorted by null

  /external/llvm/include/llvm/Analysis/
ScalarEvolution.h 13 // SCEV class. Given this analysis, trip counts of loops and other important
49 class SCEV;
50 template<> struct FoldingSetTrait<SCEV>;
52 /// SCEV - This class represents an analyzed expression in the program. These
56 class SCEV : public FoldingSetNode {
57 friend struct FoldingSetTrait<SCEV>;
63 // The SCEV baseclass this node corresponds to
72 SCEV(const SCEV &); // DO NOT IMPLEMENT
73 void operator=(const SCEV &); // DO NOT IMPLEMEN
    [all...]
LoopDependenceAnalysis.h 34 class SCEV;
71 /// a given SCEV is variant.
72 void getLoops(const SCEV*, DenseSet<const Loop*>*) const;
74 /// isLoopInvariant - True if a given SCEV is invariant in all loops of the
76 bool isLoopInvariant(const SCEV*) const;
78 /// isAffine - An SCEV is affine with respect to the loop nest starting at
81 bool isAffine(const SCEV*) const;
84 bool isZIVPair(const SCEV*, const SCEV*) const;
85 bool isSIVPair(const SCEV*, const SCEV*) const
    [all...]
ScalarEvolutionNormalization.h 47 class SCEV;
68 const SCEV *TransformForPostIncUse(TransformKind Kind,
69 const SCEV *S,
ScalarEvolutionExpressions.h 1 //===- llvm/Analysis/ScalarEvolutionExpressions.h - SCEV Exprs --*- C++ -*-===//
36 class SCEVConstant : public SCEV {
41 SCEV(ID, scConstant), V(v) {}
49 static inline bool classof(const SCEV *S) {
57 class SCEVCastExpr : public SCEV {
59 const SCEV *Op;
63 unsigned SCEVTy, const SCEV *op, Type *ty);
66 const SCEV *getOperand() const { return Op; }
71 static inline bool classof(const SCEV *S) {
86 const SCEV *op, Type *ty)
    [all...]
ScalarEvolutionExpander.h 1 //===---- llvm/Analysis/ScalarEvolutionExpander.h - SCEV Exprs --*- C++ -*-===//
37 std::map<std::pair<const SCEV *, Instruction *>, AssertingVH<Value> >
42 /// RelevantLoops - A memoization of the "relevant" loop for a given SCEV.
43 DenseMap<const SCEV *, const Loop *> RelevantLoops;
94 /// expandCodeFor - Insert code to directly compute the specified SCEV
97 Value *expandCodeFor(const SCEV *SH, Type *Ty, Instruction *I);
159 Value *expandAddToGEP(const SCEV *const *op_begin,
160 const SCEV *const *op_end,
163 Value *expand(const SCEV *S);
165 /// expandCodeFor - Insert code to directly compute the specified SCEV
    [all...]
IVUsers.h 29 class SCEV;
144 /// reducible SCEV, recursively add its users to the IVUsesByStride set and
150 /// getReplacementExpr - Return a SCEV expression which computes the
152 const SCEV *getReplacementExpr(const IVStrideUse &IU) const;
155 const SCEV *getExpr(const IVStrideUse &IU) const;
157 const SCEV *getStride(const IVStrideUse &IU, const Loop *L) const;
  /external/llvm/lib/Analysis/
ScalarEvolutionNormalization.cpp 63 const SCEV *llvm::TransformForPostIncUse(TransformKind Kind,
64 const SCEV *S,
74 const SCEV *O = X->getOperand();
75 const SCEV *N = TransformForPostIncUse(Kind, O, User, OperandValToReplace,
89 SmallVector<const SCEV *, 8> Operands;
96 const SCEV *O = *I;
97 const SCEV *N = TransformForPostIncUse(Kind, O, LUser, 0, Loops, SE, DT);
101 const SCEV *Result = SE.getAddRecExpr(Operands, L, SCEV::FlagAnyWrap);
106 const SCEV *TransformedStep
    [all...]
ScalarEvolution.cpp 15 // scalar expressions, which are represented as subclasses of the SCEV class.
17 // can handle. We only create one SCEV of a particular shape, so
20 // One important aspect of the SCEV objects is that they are never cyclic, even
102 cl::desc("Maximum number of iterations SCEV will "
116 // SCEV class definitions
120 // Implementation of the SCEV class.
123 void SCEV::dump() const {
128 void SCEV::print(raw_ostream &OS) const {
135 const SCEV *Op = Trunc->getOperand();
142 const SCEV *Op = ZExt->getOperand()
    [all...]
LoopDependenceAnalysis.cpp 101 static inline const SCEV *GetZeroSCEV(ScalarEvolution *SE) {
133 void LoopDependenceAnalysis::getLoops(const SCEV *S,
141 bool LoopDependenceAnalysis::isLoopInvariant(const SCEV *S) const {
147 bool LoopDependenceAnalysis::isAffine(const SCEV *S) const {
152 bool LoopDependenceAnalysis::isZIVPair(const SCEV *A, const SCEV *B) const {
156 bool LoopDependenceAnalysis::isSIVPair(const SCEV *A, const SCEV *B) const {
164 LoopDependenceAnalysis::analyseZIV(const SCEV *A,
165 const SCEV *B
    [all...]
ScalarEvolutionAliasAnalysis.cpp 1 //===- ScalarEvolutionAliasAnalysis.cpp - SCEV-based Alias Analysis -------===//
57 Value *GetBaseValue(const SCEV *S);
63 INITIALIZE_AG_PASS_BEGIN(ScalarEvolutionAliasAnalysis, AliasAnalysis, "scev-aa",
66 INITIALIZE_AG_PASS_END(ScalarEvolutionAliasAnalysis, AliasAnalysis, "scev-aa",
90 ScalarEvolutionAliasAnalysis::GetBaseValue(const SCEV *S) {
97 const SCEV *Last = A->getOperand(A->getNumOperands()-1);
118 const SCEV *AS = SE->getSCEV(const_cast<Value *>(LocA.Ptr));
119 const SCEV *BS = SE->getSCEV(const_cast<Value *>(LocB.Ptr));
133 const SCEV *BA = SE->getMinusSCEV(BS, AS);
147 const SCEV *AB = SE->getMinusSCEV(AS, BS)
    [all...]
ScalarEvolutionExpander.cpp 181 static bool FactorOutConstant(const SCEV *&S,
182 const SCEV *&Remainder,
183 const SCEV *Factor,
211 const SCEV *Div = SE.getConstant(CI);
232 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end());
243 const SCEV *SOp = M->getOperand(i);
244 const SCEV *Remainder = SE.getConstant(SOp->getType(), 0);
247 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end());
258 const SCEV *Step = A->getStepRecurrence(SE);
259 const SCEV *StepRem = SE.getConstant(Step->getType(), 0)
    [all...]
IVUsers.cpp 48 static bool isInteresting(const SCEV *S, const Instruction *I, const Loop *L,
60 // do effective SCEV expansions for addrecs with interesting steps.
83 /// reducible SCEV, recursively add its users to the IVUsesByStride set and
100 const SCEV *ISE = SE->getSCEV(I);
129 << " OF SCEV: " << *ISE << '\n');
134 << " OF SCEV: " << *ISE << '\n');
225 /// getReplacementExpr - Return a SCEV expression which computes the
227 const SCEV *IVUsers::getReplacementExpr(const IVStrideUse &IU) const {
232 const SCEV *IVUsers::getExpr(const IVStrideUse &IU) const {
240 static const SCEVAddRecExpr *findAddRecForLoop(const SCEV *S, const Loop *L)
    [all...]
  /external/llvm/unittests/Analysis/
ScalarEvolutionTest.cpp 43 const SCEV *S0 = SE.getSCEV(V0);
44 const SCEV *S1 = SE.getSCEV(V1);
45 const SCEV *S2 = SE.getSCEV(V2);
47 const SCEV *P0 = SE.getAddExpr(S0, S0);
48 const SCEV *P1 = SE.getAddExpr(S1, S1);
49 const SCEV *P2 = SE.getAddExpr(S2, S2);
76 // Manually clean up, since we allocated new SCEV objects after the
  /external/llvm/lib/Transforms/Scalar/
LoopStrengthReduce.cpp 29 // The SCEV for %i is {0,+,1}<%L>. The SCEV for %i.next is {1,+,1}<%L>, however
109 typedef DenseMap<const SCEV *, RegSortData> RegUsesTy;
112 SmallVector<const SCEV *, 16> RegSequence;
115 void CountRegister(const SCEV *Reg, size_t LUIdx);
116 void DropRegister(const SCEV *Reg, size_t LUIdx);
119 bool isRegUsedByUsesOtherThan(const SCEV *Reg, size_t LUIdx) const;
121 const SmallBitVector &getUsedByIndices(const SCEV *Reg) const;
125 typedef SmallVectorImpl<const SCEV *>::iterator iterator;
126 typedef SmallVectorImpl<const SCEV *>::const_iterator const_iterator
    [all...]
LoopIdiomRecognize.cpp 79 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);
145 // SCEV.
185 const SCEV *BECount = SE->getBackedgeTakenCount(L);
225 bool LoopIdiomRecognize::runOnLoopBlock(BasicBlock *BB, const SCEV *BECount,
269 bool LoopIdiomRecognize::processLoopStore(StoreInst *SI, const SCEV *BECount) {
328 processLoopMemSet(MemSetInst *MSI, const SCEV *BECount)
    [all...]
IndVarSimplify.cpp 149 Value *LinearFunctionTestReplace(Loop *L, const SCEV *BackedgeTakenCount,
172 /// isValidRewrite - Return true if the SCEV expansion generated by the
173 /// rewriter can replace the original value. SCEV guarantees that it
177 // If an SCEV expression subsumed multiple pointers, its expansion could
181 // could fail in a dangerous way. Ultimately, SCEV will be improved to avoid
186 // because it understands lcssa phis while SCEV does not.
200 // SCEV may have rewritten an expression that produces the GEP's pointer
203 // base of a recurrence. This handles the case in which SCEV expansion
206 const SCEV *FromBase = SE->getPointerBase(SE->getSCEV(FromPtr));
207 const SCEV *ToBase = SE->getPointerBase(SE->getSCEV(ToPtr))
    [all...]
LoopDeletion.cpp 167 const SCEV *S = SE.getMaxBackedgeTakenCount(L);

Completed in 139 milliseconds