#include <ScalarEvolutionExpressions.h>

Public Member Functions | |
| const SCEV * | getStart () const |
| const Loop * | getLoop () const |
| const SCEV * | getStepRecurrence (ScalarEvolution &SE) const |
| virtual bool | hasComputableLoopEvolution (const Loop *QL) const |
| virtual bool | isLoopInvariant (const Loop *QueryLoop) const |
| bool | dominates (BasicBlock *BB, DominatorTree *DT) const |
| bool | properlyDominates (BasicBlock *BB, DominatorTree *DT) const |
| bool | isAffine () const |
| bool | isQuadratic () const |
| const SCEV * | evaluateAtIteration (const SCEV *It, ScalarEvolution &SE) const |
| const SCEV * | getNumIterationsInRange (ConstantRange Range, ScalarEvolution &SE) const |
| const SCEVAddRecExpr * | getPostIncExpr (ScalarEvolution &SE) const |
| virtual void | print (raw_ostream &OS) const |
Static Public Member Functions | |
| static bool | classof (const SCEVAddRecExpr *S) |
| Methods for support type inquiry through isa, cast, and dyn_cast:. | |
| static bool | classof (const SCEV *S) |
Friends | |
| class | ScalarEvolution |
All operands of an AddRec are required to be loop invariant.
| bool llvm::SCEVAddRecExpr::dominates | ( | BasicBlock * | BB, | |
| DominatorTree * | DT | |||
| ) | const [virtual] |
dominates - Return true if elements that makes up this SCEV dominates the specified basic block.
Reimplemented from llvm::SCEVNAryExpr.
| const SCEV* llvm::SCEVAddRecExpr::evaluateAtIteration | ( | const SCEV * | It, | |
| ScalarEvolution & | SE | |||
| ) | const |
evaluateAtIteration - Return the value of this chain of recurrences at the specified iteration number.
| const SCEV* llvm::SCEVAddRecExpr::getNumIterationsInRange | ( | ConstantRange | Range, | |
| ScalarEvolution & | SE | |||
| ) | const |
getNumIterationsInRange - Return the number of iterations of this loop that produce values in the specified constant range. Another way of looking at this is that it returns the first iteration number where the value is not in the condition, thus computing the exit count. If the iteration count can't be computed, an instance of SCEVCouldNotCompute is returned.
| const SCEVAddRecExpr* llvm::SCEVAddRecExpr::getPostIncExpr | ( | ScalarEvolution & | SE | ) | const [inline] |
getPostIncExpr - Return an expression representing the value of this expression one iteration of the loop ahead.
| const SCEV* llvm::SCEVAddRecExpr::getStepRecurrence | ( | ScalarEvolution & | SE | ) | const [inline] |
getStepRecurrence - This method constructs and returns the recurrence indicating how much this expression steps by. If this is a polynomial of degree N, it returns a chrec of degree N-1.
| virtual bool llvm::SCEVAddRecExpr::hasComputableLoopEvolution | ( | const Loop * | L | ) | const [inline, virtual] |
hasComputableLoopEvolution - Return true if this SCEV changes value in a known way in the specified loop. This property being true implies that the value is variant in the loop AND that we can emit an expression to compute the value of the expression at any particular loop iteration.
Reimplemented from llvm::SCEVNAryExpr.
| bool llvm::SCEVAddRecExpr::isAffine | ( | ) | const [inline] |
isAffine - Return true if this is an affine AddRec (i.e., it represents an expressions A+B*x where A and B are loop invariant values.
| virtual bool llvm::SCEVAddRecExpr::isLoopInvariant | ( | const Loop * | L | ) | const [virtual] |
isLoopInvariant - Return true if the value of this SCEV is unchanging in the specified loop.
Reimplemented from llvm::SCEVNAryExpr.
| bool llvm::SCEVAddRecExpr::isQuadratic | ( | ) | const [inline] |
isQuadratic - Return true if this is an quadratic AddRec (i.e., it represents an expressions A+B*x+C*x^2 where A, B and C are loop invariant values. This corresponds to an addrec of the form {L,+,M,+,N}
| virtual void llvm::SCEVAddRecExpr::print | ( | raw_ostream & | OS | ) | const [virtual] |
print - Print out the internal representation of this scalar to the specified stream. This should really only be used for debugging purposes.
Implements llvm::SCEV.
| bool llvm::SCEVAddRecExpr::properlyDominates | ( | BasicBlock * | BB, | |
| DominatorTree * | DT | |||
| ) | const [virtual] |
properlyDominates - Return true if elements that makes up this SCEV properly dominate the specified basic block.
Reimplemented from llvm::SCEVNAryExpr.
1.5.8