LLVM 20.0.0git
Classes | Namespaces | Typedefs | Enumerations | Functions
ScalarEvolutionExpressions.h File Reference
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include <cassert>
#include <cstddef>

Go to the source code of this file.

Classes

class  llvm::SCEVConstant
 This class represents a constant integer value. More...
 
class  llvm::SCEVVScale
 This class represents the value of vscale, as used when defining the length of a scalable vector or returned by the llvm.vscale() intrinsic. More...
 
class  llvm::SCEVCastExpr
 This is the base class for unary cast operator classes. More...
 
class  llvm::SCEVPtrToIntExpr
 This class represents a cast from a pointer to a pointer-sized integer value. More...
 
class  llvm::SCEVIntegralCastExpr
 This is the base class for unary integral 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::SCEVMinMaxExpr
 This node is the base class min/max selections. 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::SCEVSMinExpr
 This class represents a signed minimum selection. More...
 
class  llvm::SCEVUMinExpr
 This class represents an unsigned minimum selection. More...
 
class  llvm::SCEVSequentialMinMaxExpr
 This node is the base class for sequential/in-order min/max selections. More...
 
class  llvm::SCEVSequentialUMinExpr
 This class represents a sequential/in-order unsigned minimum 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 -> SCEV). More...
 
class  llvm::SCEVLoopAddRecRewriter
 The SCEVLoopAddRecRewriter takes a scalar evolution expression and applies the Map (Loop -> SCEV) to all AddRecExprs. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Typedefs

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

Enumerations

enum  llvm::SCEVTypes : unsigned short {
  llvm::scConstant , llvm::scVScale , llvm::scTruncate , llvm::scZeroExtend ,
  llvm::scSignExtend , llvm::scAddExpr , llvm::scMulExpr , llvm::scUDivExpr ,
  llvm::scAddRecExpr , llvm::scUMaxExpr , llvm::scSMaxExpr , llvm::scUMinExpr ,
  llvm::scSMinExpr , llvm::scSequentialUMinExpr , llvm::scPtrToInt , llvm::scUnknown ,
  llvm::scCouldNotCompute
}
 

Functions

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