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

  /external/llvm/include/llvm/Analysis/
ScalarEvolution.h 13 // SCEV class. Given this analysis, trip counts of loops and other important
50 class SCEV;
51 template<> struct FoldingSetTrait<SCEV>;
53 /// SCEV - This class represents an analyzed expression in the program. These
57 class SCEV : public FoldingSetNode {
58 friend struct FoldingSetTrait<SCEV>;
64 // The SCEV baseclass this node corresponds to
73 SCEV(const SCEV &) LLVM_DELETED_FUNCTION;
74 void operator=(const SCEV &) LLVM_DELETED_FUNCTION
    [all...]
DependenceAnalysis.h 52 class SCEV;
88 const SCEV *Distance; // NULL implies no distance available.
148 virtual const SCEV *getDistance(unsigned Level) const { return NULL; }
217 const SCEV *getDistance(unsigned Level) const;
300 const SCEV *getSplitIteration(const Dependence *Dep, unsigned Level);
312 const SCEV *Src;
313 const SCEV *Dst;
321 const SCEV *Coeff;
322 const SCEV *PosPart;
323 const SCEV *NegPart
    [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++ -*-===//
37 class SCEVConstant : public SCEV {
42 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; }
70 static inline bool classof(const SCEV *S) {
85 const SCEV *op, Type *ty)
    [all...]
IVUsers.h 28 class SCEV;
145 /// reducible SCEV, recursively add its users to the IVUsesByStride set and
151 /// getReplacementExpr - Return a SCEV expression which computes the
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;
ScalarEvolutionExpander.h 1 //===---- llvm/Analysis/ScalarEvolutionExpander.h - SCEV Exprs --*- C++ -*-===//
29 bool isSafeToExpand(const SCEV *S);
44 std::map<std::pair<const SCEV *, Instruction *>, TrackingVH<Value> >
50 /// RelevantLoops - A memoization of the "relevant" loop for a given SCEV.
51 DenseMap<const SCEV *, const Loop *> RelevantLoops;
136 /// expandCodeFor - Insert code to directly compute the specified SCEV
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)
    [all...]
  /external/llvm/lib/Analysis/
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) {
95 const SCEV *O = X->getOperand();
96 const SCEV *N = TransformSubExpr(O, User, OperandValToReplace)
    [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
104 cl::desc("Maximum number of iterations SCEV will "
111 VerifySCEV("verify-scev",
124 // SCEV class definitions
128 // Implementation of the SCEV class.
132 void SCEV::dump() const {
138 void SCEV::print(raw_ostream &OS) const {
145 const SCEV *Op = Trunc->getOperand()
    [all...]
DependenceAnalysis.cpp 35 // Subtract, or Multiply, with both APInt's and SCEV's.
41 // Finally, it seems like certain test cases expose weaknesses in the SCEV
245 const SCEV *FullDependence::getDistance(unsigned Level) const {
288 const SCEV *DependenceAnalysis::Constraint::getX() const {
296 const SCEV *DependenceAnalysis::Constraint::getY() const {
304 const SCEV *DependenceAnalysis::Constraint::getA() const {
313 const SCEV *DependenceAnalysis::Constraint::getB() const {
322 const SCEV *DependenceAnalysis::Constraint::getC() const {
331 const SCEV *DependenceAnalysis::Constraint::getD() const {
345 void DependenceAnalysis::Constraint::setPoint(const SCEV *X
    [all...]
ScalarEvolutionExpander.cpp 211 static bool FactorOutConstant(const SCEV *&S,
212 const SCEV *&Remainder,
213 const SCEV *Factor,
241 const SCEV *Div = SE.getConstant(CI);
262 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end());
273 const SCEV *SOp = M->getOperand(i);
274 const SCEV *Remainder = SE.getConstant(SOp->getType(), 0);
277 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end());
288 const SCEV *Step = A->getStepRecurrence(SE);
289 const SCEV *StepRem = SE.getConstant(Step->getType(), 0)
    [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...]
IVUsers.cpp 49 static bool isInteresting(const SCEV *S, const Instruction *I, const Loop *L,
61 // do effective SCEV expansions for addrecs with interesting steps.
112 /// reducible SCEV, recursively add its users to the IVUsesByStride set and
124 // IVUsers is used by LSR which assumes that all SCEV expressions are safe to
138 const SCEV *ISE = SE->getSCEV(I);
179 << " OF SCEV: " << *ISE << '\n');
184 << " OF SCEV: " << *ISE << '\n');
287 /// getReplacementExpr - Return a SCEV expression which computes the
289 const SCEV *IVUsers::getReplacementExpr(const IVStrideUse &IU) const {
294 const SCEV *IVUsers::getExpr(const IVStrideUse &IU) const
    [all...]
  /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
136 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
    [all...]
IndVarSimplify.cpp 60 // implement a strong expression equivalence checker in SCEV. Until then, we
112 Value *LinearFunctionTestReplace(Loop *L, const SCEV *BackedgeTakenCount,
134 /// isValidRewrite - Return true if the SCEV expansion generated by the
135 /// rewriter can replace the original value. SCEV guarantees that it
139 // If an SCEV expression subsumed multiple pointers, its expansion could
143 // could fail in a dangerous way. Ultimately, SCEV will be improved to avoid
148 // because it understands lcssa phis while SCEV does not.
162 // SCEV may have rewritten an expression that produces the GEP's pointer
165 // base of a recurrence. This handles the case in which SCEV expansion
173 const SCEV *FromBase = SE->getPointerBase(SE->getSCEV(FromPtr))
    [all...]
LoopIdiomRecognize.cpp 147 bool runOnLoopBlock(BasicBlock *BB, const SCEV *BECount,
150 bool processLoopStore(StoreInst *SI, const SCEV *BECount);
151 bool processLoopMemSet(MemSetInst *MSI, const SCEV *BECount);
157 const SCEV *BECount);
161 const SCEV *BECount);
242 // SCEV.
609 // step 5: Forget the "non-computable" trip-count SCEV associated with the
657 const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop);
729 bool LoopIdiomRecognize::runOnLoopBlock(BasicBlock *BB, const SCEV *BECount,
773 bool LoopIdiomRecognize::processLoopStore(StoreInst *SI, const SCEV *BECount)
    [all...]
LoopDeletion.cpp 167 const SCEV *S = SE.getMaxBackedgeTakenCount(L);
  /external/llvm/unittests/Analysis/
ScalarEvolutionTest.cpp 29 // Manually clean up, since we allocated new SCEV objects after the
56 const SCEV *S0 = SE.getSCEV(V0);
57 const SCEV *S1 = SE.getSCEV(V1);
58 const SCEV *S2 = SE.getSCEV(V2);
60 const SCEV *P0 = SE.getAddExpr(S0, S0);
61 const SCEV *P1 = SE.getAddExpr(S1, S1);
62 const SCEV *P2 = SE.getAddExpr(S2, S2);
109 SmallVector<const SCEV *, 5> A;
115 const SCEV *A_rec = SE.getAddRecExpr(A, &L, SCEV::FlagAnyWrap)
    [all...]
  /external/llvm/lib/Transforms/Utils/
SimplifyIndVar.cpp 42 /// other loop passes that preserve SCEV.
92 const SCEV *FoldedExpr = 0;
130 // Bypass the operand if SCEV can prove it has no effect.
138 assert(SE->getSCEV(UseInst) == FoldedExpr && "bad SCEV with folded oper");
160 const SCEV *S = SE->getSCEV(ICmp->getOperand(IVOperIdx));
161 const SCEV *X = SE->getSCEV(ICmp->getOperand(1 - IVOperIdx));
194 const SCEV *S = SE->getSCEV(Rem->getOperand(0));
195 const SCEV *X = SE->getSCEV(Rem->getOperand(1));
209 const SCEV *LessOne =
251 // Eliminate any operation that SCEV can prove is an identity function
    [all...]
LoopUnrollRuntime.cpp 248 const SCEV *BECount = SE->getBackedgeTakenCount(L);
253 const SCEV *TripCountSC =
  /external/llvm/lib/Transforms/Vectorize/
LoopVectorize.cpp 271 /// Scev analysis to use.
397 SmallVector<const SCEV*, 2> Starts;
399 SmallVector<const SCEV*, 2> Ends;
509 /// Scev analysis.
621 /// Scev analysis.
741 const SCEV *Sc = SE->getSCEV(Ptr);
744 const SCEV *Ex = SE->getExitCount(Lp, Lp->getLoopLatch());
745 const SCEV *ScEnd = AR->evaluateAtIteration(Ex, *SE);
    [all...]
BBVectorize.cpp 616 const SCEV *IPtrSCEV = SE->getSCEV(IPtr);
617 const SCEV *JPtrSCEV = SE->getSCEV(JPtr);
622 const SCEV *OffsetSCEV = SE->getMinusSCEV(JPtrSCEV, IPtrSCEV);
    [all...]

Completed in 142 milliseconds