LLVM API Documentation
#include <ScalarEvolution.h>
Inheritance diagram for llvm::SCEV:
Public Member Functions | |
SCEV (unsigned SCEVTy) | |
unsigned | getSCEVType () const |
virtual ConstantRange | getValueRange () const |
virtual bool | isLoopInvariant (const Loop *L) const =0 |
virtual bool | hasComputableLoopEvolution (const Loop *L) const =0 |
virtual const Type * | getType () const =0 |
virtual SCEVHandle | replaceSymbolicValuesWithConcrete (const SCEVHandle &Sym, const SCEVHandle &Conc) const =0 |
virtual void | print (std::ostream &OS) const =0 |
void | dump () const |
Static Public Member Functions | |
static SCEVHandle | getNegativeSCEV (const SCEVHandle &V) |
static SCEVHandle | getMinusSCEV (const SCEVHandle &LHS, const SCEVHandle &RHS) |
Protected Member Functions | |
virtual | ~SCEV () |
Friends | |
class | SCEVHandle |
Definition at line 39 of file ScalarEvolution.h.
SCEV::~SCEV | ( | ) | [protected, virtual] |
Definition at line 116 of file ScalarEvolution.cpp.
llvm::SCEV::SCEV | ( | unsigned | SCEVTy | ) | [inline] |
Definition at line 55 of file ScalarEvolution.h.
void SCEV::dump | ( | ) | const |
dump - This method is used for debugging.
Definition at line 117 of file ScalarEvolution.cpp.
References print().
SCEVHandle SCEV::getMinusSCEV | ( | const SCEVHandle & | LHS, | |
const SCEVHandle & | RHS | |||
) | [static] |
getMinusSCEV - Return LHS-RHS.
Definition at line 495 of file ScalarEvolution.cpp.
References llvm::SCEVAddExpr::get(), and getNegativeSCEV().
Referenced by PartialFact().
SCEVHandle SCEV::getNegativeSCEV | ( | const SCEVHandle & | V | ) | [static] |
getNegativeSCEV - Return the SCEV object corresponding to -V.
Definition at line 486 of file ScalarEvolution.cpp.
References llvm::SCEVMulExpr::get(), llvm::SCEVUnknown::get(), llvm::SCEVUnknown::getIntegerSCEV(), llvm::ConstantExpr::getNeg(), and V.
Referenced by llvm::SCEVSDivExpr::get(), getMinusSCEV(), and llvm::SCEVAddRecExpr::getNumIterationsInRange().
unsigned llvm::SCEV::getSCEVType | ( | ) | const [inline] |
Definition at line 67 of file ScalarEvolution.h.
Referenced by llvm::SCEVUnknown::classof(), llvm::SCEVAddRecExpr::classof(), llvm::SCEVSDivExpr::classof(), llvm::SCEVMulExpr::classof(), llvm::SCEVAddExpr::classof(), llvm::SCEVCommutativeExpr::classof(), llvm::SCEVZeroExtendExpr::classof(), llvm::SCEVTruncateExpr::classof(), llvm::SCEVConstant::classof(), llvm::SCEVCouldNotCompute::classof(), llvm::SCEVVisitor< llvm::SCEVExpander, llvm::Value * >::visit(), and llvm::SCEVCommutativeExpr::~SCEVCommutativeExpr().
virtual const Type* llvm::SCEV::getType | ( | ) | const [pure virtual] |
getType - Return the LLVM type of this SCEV expression.
Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVTruncateExpr, llvm::SCEVZeroExtendExpr, llvm::SCEVCommutativeExpr, llvm::SCEVSDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.
Referenced by getValueRange().
ConstantRange SCEV::getValueRange | ( | ) | const [virtual] |
getValueRange - Return the tightest constant bounds that this value is known to have. This method is only valid on integer SCEV objects.
Reimplemented in llvm::SCEVConstant, llvm::SCEVTruncateExpr, and llvm::SCEVZeroExtendExpr.
Definition at line 123 of file ScalarEvolution.cpp.
References getType(), llvm::Type::getUnsignedVersion(), llvm::Type::isInteger(), and Ty.
virtual bool llvm::SCEV::hasComputableLoopEvolution | ( | const Loop * | L | ) | const [pure 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.
Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVTruncateExpr, llvm::SCEVZeroExtendExpr, llvm::SCEVCommutativeExpr, llvm::SCEVSDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.
virtual bool llvm::SCEV::isLoopInvariant | ( | const Loop * | L | ) | const [pure virtual] |
isLoopInvariant - Return true if the value of this SCEV is unchanging in the specified loop.
Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVTruncateExpr, llvm::SCEVZeroExtendExpr, llvm::SCEVCommutativeExpr, llvm::SCEVSDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.
virtual void llvm::SCEV::print | ( | std::ostream & | OS | ) | const [pure virtual] |
print - Print out the internal representation of this scalar to the specified stream. This should really only be used for debugging purposes.
Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVTruncateExpr, llvm::SCEVZeroExtendExpr, llvm::SCEVCommutativeExpr, llvm::SCEVSDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.
Referenced by dump(), and llvm::operator<<().
virtual SCEVHandle llvm::SCEV::replaceSymbolicValuesWithConcrete | ( | const SCEVHandle & | Sym, | |
const SCEVHandle & | Conc | |||
) | const [pure virtual] |
replaceSymbolicValuesWithConcrete - If this SCEV internally references the symbolic value "Sym", construct and return a new SCEV that produces the same value, but which uses the concrete value Conc instead of the symbolic value. If this SCEV does not use the symbolic value, it returns itself.
Implemented in llvm::SCEVCouldNotCompute, llvm::SCEVConstant, llvm::SCEVTruncateExpr, llvm::SCEVZeroExtendExpr, llvm::SCEVCommutativeExpr, llvm::SCEVSDivExpr, llvm::SCEVAddRecExpr, and llvm::SCEVUnknown.
friend class SCEVHandle [friend] |
Definition at line 43 of file ScalarEvolution.h.