/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);
|