/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; 97 const SCEV *Distance; // NULL implies no distance available. 157 virtual const SCEV *getDistance(unsigned Level) const { return nullptr; } 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...] |
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++ -*-===// 38 class SCEVConstant : public SCEV { 43 SCEV(ID, scConstant), V(v) {} 50 static inline bool classof(const SCEV *S) { 58 class SCEVCastExpr : public SCEV { 60 const SCEV *Op; 64 unsigned SCEVTy, const SCEV *op, Type *ty); 67 const SCEV *getOperand() const { return Op; } 71 static inline bool classof(const SCEV *S) { 86 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, ScalarEvolution &SE); 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 | 29 // analysis is using SCEV->delinearize to recover the representation of multiple 35 // Subtract, or Multiply, with both APInt's and SCEV's. 41 // Finally, it seems like certain test cases expose weaknesses in the SCEV 250 const SCEV *FullDependence::getDistance(unsigned Level) const { 293 const SCEV *DependenceAnalysis::Constraint::getX() const { 301 const SCEV *DependenceAnalysis::Constraint::getY() const { 309 const SCEV *DependenceAnalysis::Constraint::getA() const { 318 const SCEV *DependenceAnalysis::Constraint::getB() const { 327 const SCEV *DependenceAnalysis::Constraint::getC() const { 336 const SCEV *DependenceAnalysis::Constraint::getD() const [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 | 207 static bool FactorOutConstant(const SCEV *&S, 208 const SCEV *&Remainder, 209 const SCEV *Factor, 237 const SCEV *Div = SE.getConstant(CI); 258 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); 269 const SCEV *SOp = M->getOperand(i); 270 const SCEV *Remainder = SE.getConstant(SOp->getType(), 0); 273 SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end()); 284 const SCEV *Step = A->getStepRecurrence(SE); 285 const SCEV *StepRem = SE.getConstant(Step->getType(), 0) [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); 178 << " OF SCEV: " << *ISE << '\n'); 183 << " OF SCEV: " << *ISE << '\n'); 193 const SCEV *OriginalISE = ISE; 204 const SCEV *DenormalizedISE = 309 /// getReplacementExpr - Return a SCEV expression which computes th [all...] |
Delinearization.cpp | 11 // instructions in all loops using the SCEV analysis functionality. This pass is 97 const SCEV *AccessFn = SE->getSCEVAtScope(getPointerOperand(*Inst), L); 117 SmallVector<const SCEV *, 3> Subscripts, Sizes;
|
/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 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 [all...] |
IndVarSimplify.cpp | 61 // implement a strong expression equivalence checker in SCEV. Until then, we 116 Value *LinearFunctionTestReplace(Loop *L, const SCEV *BackedgeTakenCount, 138 /// isValidRewrite - Return true if the SCEV expansion generated by the 139 /// rewriter can replace the original value. SCEV guarantees that it 143 // If an SCEV expression subsumed multiple pointers, its expansion could 147 // could fail in a dangerous way. Ultimately, SCEV will be improved to avoid 152 // because it understands lcssa phis while SCEV does not. 166 // SCEV may have rewritten an expression that produces the GEP's pointer 169 // base of a recurrence. This handles the case in which SCEV expansion 177 const SCEV *FromBase = SE->getPointerBase(SE->getSCEV(FromPtr)) [all...] |
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); 246 // SCEV. 605 // step 5: Forget the "non-computable" trip-count SCEV associated with the 653 const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop); 728 bool LoopIdiomRecognize::runOnLoopBlock(BasicBlock *BB, const SCEV *BECount, 772 bool LoopIdiomRecognize::processLoopStore(StoreInst *SI, const SCEV *BECount) [all...] |
LoopRerollPass.cpp | 336 bool reroll(Instruction *IV, Loop *L, BasicBlock *Header, const SCEV *IterCount, 771 const SCEV *IterCount, [all...] |
LoopDeletion.cpp | 173 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 | 46 /// other loop passes that preserve SCEV. 100 const SCEV *FoldedExpr = nullptr; 138 // Bypass the operand if SCEV can prove it has no effect. 146 assert(SE->getSCEV(UseInst) == FoldedExpr && "bad SCEV with folded oper"); 168 const SCEV *S = SE->getSCEV(ICmp->getOperand(IVOperIdx)); 169 const SCEV *X = SE->getSCEV(ICmp->getOperand(1 - IVOperIdx)); 202 const SCEV *S = SE->getSCEV(Rem->getOperand(0)); 203 const SCEV *X = SE->getSCEV(Rem->getOperand(1)); 217 const SCEV *LessOne = 259 // Eliminate any operation that SCEV can prove is an identity function [all...] |
LoopUnrollRuntime.cpp | 249 const SCEV *BECount = SE->getBackedgeTakenCount(L); 254 const SCEV *TripCountSC =
|
/external/llvm/lib/Transforms/Vectorize/ |
LoopVectorize.cpp | 406 /// Scev analysis to use. 643 SmallVector<const SCEV*, 2> Starts; 645 SmallVector<const SCEV*, 2> Ends; 787 /// Scev analysis. [all...] |
BBVectorize.cpp | 631 const SCEV *IPtrSCEV = SE->getSCEV(IPtr); 632 const SCEV *JPtrSCEV = SE->getSCEV(JPtr); 637 const SCEV *OffsetSCEV = SE->getMinusSCEV(JPtrSCEV, IPtrSCEV); [all...] |
SLPVectorizer.cpp | [all...] |
/external/llvm/lib/Target/PowerPC/ |
PPCCTRLoops.cpp | 436 const SCEV *ExitCount = nullptr; 440 const SCEV *EC = SE->getExitCount(L, *I);
|