LLVM API Documentation

llvm::SCEVCommutativeExpr Class Reference

#include <ScalarEvolutionExpressions.h>

Inheritance diagram for llvm::SCEVCommutativeExpr:

Inheritance graph
[legend]
Collaboration diagram for llvm::SCEVCommutativeExpr:

Collaboration graph
[legend]
List of all members.

Public Types

typedef std::vector< SCEVHandle
>::const_iterator 
op_iterator

Public Member Functions

unsigned getNumOperands () const
const SCEVHandlegetOperand (unsigned i) const
const std::vector< SCEVHandle > & getOperands () const
op_iterator op_begin () const
op_iterator op_end () const
virtual bool isLoopInvariant (const Loop *L) const
virtual bool hasComputableLoopEvolution (const Loop *L) const
SCEVHandle replaceSymbolicValuesWithConcrete (const SCEVHandle &Sym, const SCEVHandle &Conc) const
virtual const char * getOperationStr () const=0
virtual const TypegetType () const
virtual void print (std::ostream &OS) const

Static Public Member Functions

static bool classof (const SCEVCommutativeExpr *S)
 Methods for support type inquiry through isa, cast, and dyn_cast:.
static bool classof (const SCEV *S)

Protected Member Functions

 SCEVCommutativeExpr (enum SCEVTypes T, const std::vector< SCEVHandle > &ops)
 ~SCEVCommutativeExpr ()

Detailed Description

SCEVCommutativeExpr - This node is the base class for n'ary commutative operators.

Definition at line 170 of file ScalarEvolutionExpressions.h.


Member Typedef Documentation

typedef std::vector<SCEVHandle>::const_iterator llvm::SCEVCommutativeExpr::op_iterator

Definition at line 189 of file ScalarEvolutionExpressions.h.


Constructor & Destructor Documentation

llvm::SCEVCommutativeExpr::SCEVCommutativeExpr ( enum SCEVTypes  T,
const std::vector< SCEVHandle > &  ops 
) [inline, protected]

Definition at line 174 of file ScalarEvolutionExpressions.h.

SCEVCommutativeExpr::~SCEVCommutativeExpr (  )  [protected]

Definition at line 256 of file ScalarEvolution.cpp.

References llvm::SCEV::getSCEVType(), and SCEVCommExprs.


Member Function Documentation

unsigned llvm::SCEVCommutativeExpr::getNumOperands (  )  const [inline]

Definition at line 182 of file ScalarEvolutionExpressions.h.

Referenced by hasComputableLoopEvolution(), isLoopInvariant(), replaceSymbolicValuesWithConcrete(), llvm::SCEVExpander::visitAddExpr(), and llvm::SCEVExpander::visitMulExpr().

const SCEVHandle& llvm::SCEVCommutativeExpr::getOperand ( unsigned  i  )  const [inline]

Definition at line 183 of file ScalarEvolutionExpressions.h.

Referenced by getType(), hasComputableLoopEvolution(), isLoopInvariant(), replaceSymbolicValuesWithConcrete(), llvm::SCEVExpander::visitAddExpr(), and llvm::SCEVExpander::visitMulExpr().

const std::vector<SCEVHandle>& llvm::SCEVCommutativeExpr::getOperands (  )  const [inline]

Definition at line 188 of file ScalarEvolutionExpressions.h.

op_iterator llvm::SCEVCommutativeExpr::op_begin (  )  const [inline]

Definition at line 190 of file ScalarEvolutionExpressions.h.

op_iterator llvm::SCEVCommutativeExpr::op_end (  )  const [inline]

Definition at line 191 of file ScalarEvolutionExpressions.h.

virtual bool llvm::SCEVCommutativeExpr::isLoopInvariant ( const Loop L  )  const [inline, virtual]

isLoopInvariant - Return true if the value of this SCEV is unchanging in the specified loop.

Implements llvm::SCEV.

Definition at line 194 of file ScalarEvolutionExpressions.h.

References getNumOperands(), and getOperand().

Referenced by llvm::SCEVMulExpr::get(), llvm::SCEVAddExpr::get(), and hasComputableLoopEvolution().

virtual bool llvm::SCEVCommutativeExpr::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.

Implements llvm::SCEV.

Definition at line 203 of file ScalarEvolutionExpressions.h.

References getNumOperands(), getOperand(), and isLoopInvariant().

SCEVHandle SCEVCommutativeExpr::replaceSymbolicValuesWithConcrete ( const SCEVHandle Sym,
const SCEVHandle Conc 
) const [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.

Implements llvm::SCEV.

Definition at line 272 of file ScalarEvolution.cpp.

References llvm::SCEVMulExpr::get(), llvm::SCEVAddExpr::get(), getNumOperands(), getOperand(), and H.

virtual const char* llvm::SCEVCommutativeExpr::getOperationStr (  )  const [pure virtual]

Implemented in llvm::SCEVAddExpr, and llvm::SCEVMulExpr.

Referenced by print().

virtual const Type* llvm::SCEVCommutativeExpr::getType (  )  const [inline, virtual]

getType - Return the LLVM type of this SCEV expression.

Implements llvm::SCEV.

Definition at line 219 of file ScalarEvolutionExpressions.h.

References getOperand().

Referenced by llvm::SCEVExpander::visitAddExpr(), and llvm::SCEVExpander::visitMulExpr().

void SCEVCommutativeExpr::print ( std::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.

Definition at line 262 of file ScalarEvolution.cpp.

References getOperationStr().

static bool llvm::SCEVCommutativeExpr::classof ( const SCEVCommutativeExpr S  )  [inline, static]

Methods for support type inquiry through isa, cast, and dyn_cast:.

Definition at line 223 of file ScalarEvolutionExpressions.h.

static bool llvm::SCEVCommutativeExpr::classof ( const SCEV S  )  [inline, static]

Reimplemented in llvm::SCEVAddExpr, and llvm::SCEVMulExpr.

Definition at line 224 of file ScalarEvolutionExpressions.h.

References llvm::SCEV::getSCEVType(), llvm::scAddExpr, and llvm::scMulExpr.


The documentation for this class was generated from the following files: