LLVM  6.0.0svn
Classes | Namespaces | Typedefs | Enumerations | Functions
ScalarEvolutionExpressions.h File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Value.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include <cassert>
#include <cstddef>
Include dependency graph for ScalarEvolutionExpressions.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::SCEVConstant
 This class represents a constant integer value. More...
 
class  llvm::SCEVCastExpr
 This is the base class for unary cast operator classes. More...
 
class  llvm::SCEVTruncateExpr
 This class represents a truncation of an integer value to a smaller integer value. More...
 
class  llvm::SCEVZeroExtendExpr
 This class represents a zero extension of a small integer value to a larger integer value. More...
 
class  llvm::SCEVSignExtendExpr
 This class represents a sign extension of a small integer value to a larger integer value. More...
 
class  llvm::SCEVNAryExpr
 This node is a base class providing common functionality for n'ary operators. More...
 
class  llvm::SCEVCommutativeExpr
 This node is the base class for n'ary commutative operators. More...
 
class  llvm::SCEVAddExpr
 This node represents an addition of some number of SCEVs. More...
 
class  llvm::SCEVMulExpr
 This node represents multiplication of some number of SCEVs. More...
 
class  llvm::SCEVUDivExpr
 This class represents a binary unsigned division operation. More...
 
class  llvm::SCEVAddRecExpr
 This node represents a polynomial recurrence on the trip count of the specified loop. More...
 
class  llvm::SCEVSMaxExpr
 This class represents a signed maximum selection. More...
 
class  llvm::SCEVUMaxExpr
 This class represents an unsigned maximum selection. More...
 
class  llvm::SCEVUnknown
 This means that we are dealing with an entirely unknown SCEV value, and only represent it as its LLVM Value. More...
 
struct  llvm::SCEVVisitor< SC, RetVal >
 This class defines a simple visitor class that may be used for various SCEV analysis purposes. More...
 
class  llvm::SCEVTraversal< SV >
 Visit all nodes in the expression tree using worklist traversal. More...
 
class  llvm::SCEVRewriteVisitor< SC >
 This visitor recursively visits a SCEV expression and re-writes it. More...
 
class  llvm::SCEVParameterRewriter
 The SCEVParameterRewriter takes a scalar evolution expression and updates the SCEVUnknown components following the Map (Value -> Value). More...
 
class  llvm::SCEVLoopAddRecRewriter
 The SCEVLoopAddRecRewriter takes a scalar evolution expression and applies the Map (Loop -> SCEV) to all AddRecExprs. More...
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Typedefs

using llvm::ValueToValueMap = DenseMap< const Value *, Value * >
 
using llvm::LoopToScevMapT = DenseMap< const Loop *, const SCEV * >
 

Enumerations

enum  llvm::SCEVTypes {
  llvm::scConstant, llvm::scTruncate, llvm::scZeroExtend, llvm::scSignExtend,
  llvm::scAddExpr, llvm::scMulExpr, llvm::scUDivExpr, llvm::scAddRecExpr,
  llvm::scUMaxExpr, llvm::scSMaxExpr, llvm::scUnknown, llvm::scCouldNotCompute
}
 

Functions

template<typename SV >
void llvm::visitAll (const SCEV *Root, SV &Visitor)
 Use SCEVTraversal to visit all nodes in the given expression tree. More...
 
template<typename PredTy >
bool llvm::SCEVExprContains (const SCEV *Root, PredTy Pred)
 Return true if any node in Root satisfies the predicate Pred. More...