LLVM API Documentation
#include <ScalarEvolutionExpressions.h>
Inheritance diagram for llvm::SCEVAddRecExpr:
Public Types | |
typedef std::vector< SCEVHandle >::const_iterator | op_iterator |
Public Member Functions | |
op_iterator | op_begin () const |
op_iterator | op_end () const |
unsigned | getNumOperands () const |
const SCEVHandle & | getOperand (unsigned i) const |
const SCEVHandle & | getStart () const |
const Loop * | getLoop () const |
SCEVHandle | getStepRecurrence () const |
virtual bool | hasComputableLoopEvolution (const Loop *QL) const |
virtual bool | isLoopInvariant (const Loop *QueryLoop) const |
virtual const Type * | getType () const |
bool | isAffine () const |
bool | isQuadratic () const |
SCEVHandle | evaluateAtIteration (SCEVHandle It) const |
SCEVHandle | getNumIterationsInRange (ConstantRange Range) const |
virtual void | print (std::ostream &OS) const |
Static Public Member Functions | |
static SCEVHandle | get (const SCEVHandle &Start, const SCEVHandle &Step, const Loop *) |
static SCEVHandle | get (std::vector< SCEVHandle > &Operands, const Loop *) |
static SCEVHandle | get (const std::vector< SCEVHandle > &Operands, const Loop *L) |
static bool | classof (const SCEVAddRecExpr *S) |
Methods for support type inquiry through isa, cast, and dyn_cast:. | |
static bool | classof (const SCEV *S) |
All operands of an AddRec are required to be loop invariant.
Definition at line 307 of file ScalarEvolutionExpressions.h.
|
Definition at line 329 of file ScalarEvolutionExpressions.h. |
|
Definition at line 391 of file ScalarEvolutionExpressions.h. References llvm::SCEV::getSCEVType(), and llvm::scAddRecExpr. |
|
Methods for support type inquiry through isa, cast, and dyn_cast:.
Definition at line 390 of file ScalarEvolutionExpressions.h. |
|
evaluateAtIteration - Return the value of this chain of recurrences at the specified iteration number. Definition at line 497 of file ScalarEvolution.cpp. References llvm::SCEVAddExpr::get(), llvm::SCEVMulExpr::get(), llvm::SCEVUDivExpr::get(), llvm::SCEVUnknown::getIntegerSCEV(), getNumOperands(), getOperand(), getStart(), and PartialFact(). Referenced by EvaluateConstantChrecAtConstant(), and getNumIterationsInRange(). |
|
Definition at line 323 of file ScalarEvolutionExpressions.h. References get(). |
|
SCEVAddRecExpr::get - Get a add recurrence expression for the specified loop. Simplify the expression as much as possible. Definition at line 990 of file ScalarEvolution.cpp. References get(). |
|
SCEVAddRecExpr::get - Get a add recurrence expression for the specified loop. Simplify the expression as much as possible. Definition at line 973 of file ScalarEvolution.cpp. Referenced by get(), llvm::SCEVMulExpr::get(), llvm::SCEVAddExpr::get(), llvm::SCEVTruncateExpr::get(), getNumIterationsInRange(), and getStepRecurrence(). |
|
Definition at line 336 of file ScalarEvolutionExpressions.h. Referenced by llvm::SCEVMulExpr::get(), llvm::SCEVAddExpr::get(), getNumIterationsInRange(), and getStepRecurrence(). |
|
|
Definition at line 333 of file ScalarEvolutionExpressions.h. Referenced by evaluateAtIteration(), llvm::SCEVMulExpr::get(), llvm::SCEVAddExpr::get(), getNumIterationsInRange(), getStepRecurrence(), isAffine(), isQuadratic(), and SolveQuadraticEquation(). |
|
Definition at line 334 of file ScalarEvolutionExpressions.h. Referenced by evaluateAtIteration(), llvm::SCEVMulExpr::get(), llvm::SCEVAddExpr::get(), getNumIterationsInRange(), getStepRecurrence(), and SolveQuadraticEquation(). |
|
Definition at line 335 of file ScalarEvolutionExpressions.h. Referenced by evaluateAtIteration(), llvm::SCEVMulExpr::get(), llvm::SCEVAddExpr::get(), and getNumIterationsInRange(). |
|
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. Definition at line 342 of file ScalarEvolutionExpressions.h. References get(), getLoop(), getNumOperands(), getOperand(), op_begin(), and op_end(). Referenced by llvm::SCEVMulExpr::get(). |
|
getType - Return the LLVM type of this SCEV expression. Implements llvm::SCEV. Definition at line 357 of file ScalarEvolutionExpressions.h. Referenced by getNumIterationsInRange(). |
|
FIXME: What if the start or step value a recurrence for the specified loop? Implements llvm::SCEV. Definition at line 348 of file ScalarEvolutionExpressions.h. |
|
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. Definition at line 361 of file ScalarEvolutionExpressions.h. References getNumOperands(). Referenced by getNumIterationsInRange(). |
|
isLoopInvariant - Return true if the value of this SCEV is unchanging in the specified loop. Implements llvm::SCEV. Definition at line 293 of file ScalarEvolution.cpp. References llvm::Loop::contains(), and llvm::Loop::getHeader(). |
|
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} Definition at line 370 of file ScalarEvolutionExpressions.h. References getNumOperands(). Referenced by getNumIterationsInRange(). |
|
Definition at line 330 of file ScalarEvolutionExpressions.h. Referenced by llvm::SCEVAddExpr::get(), getNumIterationsInRange(), and getStepRecurrence(). |
|
Definition at line 331 of file ScalarEvolutionExpressions.h. Referenced by llvm::SCEVAddExpr::get(), getNumIterationsInRange(), and getStepRecurrence(). |
|
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. Definition at line 300 of file ScalarEvolution.cpp. References llvm::Loop::getHeader(), and llvm::Value::getName(). |