My Project
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
mlir::SDBMExpr Class Reference

#include <SDBMExpr.h>

Inheritance diagram for mlir::SDBMExpr:
Inheritance graph
[legend]
Collaboration diagram for mlir::SDBMExpr:
Collaboration graph
[legend]

Public Types

using ImplType = detail::SDBMExprStorage
 

Public Member Functions

 SDBMExpr ()
 
 SDBMExpr (ImplType *expr)
 
 SDBMExpr (const SDBMExpr &)=default
 
SDBMExpr & operator= (const SDBMExpr &)=default
 
bool operator== (const SDBMExpr &other) const
 SDBM expressions can be compared straight-forwardly. More...
 
bool operator!= (const SDBMExpr &other) const
 
 operator bool () const
 
bool operator! () const
 
SDBMExpr operator- ()
 Negate the given SDBM expression. More...
 
void print (raw_ostream &os) const
 Prints the SDBM expression. More...
 
void dump () const
 
template<typename U >
bool isa () const
 LLVM-style casts. More...
 
template<typename U >
U dyn_cast () const
 
template<typename U >
U cast () const
 
::llvm::hash_code hash_value () const
 Support for LLVM hashing. More...
 
SDBMExprKind getKind () const
 Returns the kind of the SDBM expression. More...
 
MLIRContext * getContext () const
 Returns the MLIR context in which this expression lives. More...
 
SDBMDialect * getDialect () const
 Returns the SDBM dialect instance. More...
 
AffineExpr getAsAffineExpr () const
 

Static Public Member Functions

static Optional< SDBMExpr > tryConvertAffineExpr (AffineExpr affine)
 

Protected Attributes

ImplType * impl
 

Detailed Description

Striped Difference-Bounded Matrix (SDBM) expression is a base left-hand side expression for the SDBM framework. SDBM expressions are a subset of affine expressions supporting low-complexity algorithms for the operations used in loop transformations. In particular, are supported:

SDBM expressions are grouped into the following structure

SDBMExpr and derived classes are thin wrappers around a pointer owned by an MLIRContext, and should be used by-value. They are uniqued in the MLIRContext and immortal.

Member Typedef Documentation

◆ ImplType

Constructor & Destructor Documentation

◆ SDBMExpr() [1/3]

mlir::SDBMExpr::SDBMExpr ( )
inline

◆ SDBMExpr() [2/3]

mlir::SDBMExpr::SDBMExpr ( ImplType *  expr)
inline

◆ SDBMExpr() [3/3]

mlir::SDBMExpr::SDBMExpr ( const SDBMExpr &  )
default

SDBM expressions are thin wrappers around a unique'ed immutable pointer, which makes them trivially assignable and trivially copyable.

Member Function Documentation

◆ cast()

template<typename U >
U mlir::SDBMExpr::cast ( ) const
inline

◆ dump()

void SDBMExpr::dump ( ) const

◆ dyn_cast()

template<typename U >
U mlir::SDBMExpr::dyn_cast ( ) const
inline

◆ getAsAffineExpr()

AffineExpr SDBMExpr::getAsAffineExpr ( ) const

Convert the SDBM expression into an Affine expression. This always succeeds because SDBM are a subset of affine.

◆ getContext()

MLIRContext * SDBMExpr::getContext ( ) const

Returns the MLIR context in which this expression lives.

◆ getDialect()

SDBMDialect * SDBMExpr::getDialect ( ) const

Returns the SDBM dialect instance.

◆ getKind()

SDBMExprKind SDBMExpr::getKind ( ) const

Returns the kind of the SDBM expression.

◆ hash_value()

::llvm::hash_code mlir::SDBMExpr::hash_value ( ) const
inline

Support for LLVM hashing.

◆ isa()

template<typename U >
bool mlir::SDBMExpr::isa ( ) const
inline

LLVM-style casts.

◆ operator bool()

mlir::SDBMExpr::operator bool ( ) const
inlineexplicit

SDBM expressions are convertible to bool: null expressions are converted to false, non-null expressions are converted to true.

◆ operator!()

bool mlir::SDBMExpr::operator! ( ) const
inline

◆ operator!=()

bool mlir::SDBMExpr::operator!= ( const SDBMExpr &  other) const
inline

◆ operator-()

SDBMExpr SDBMExpr::operator- ( )

Negate the given SDBM expression.

◆ operator=()

SDBMExpr& mlir::SDBMExpr::operator= ( const SDBMExpr &  )
default

◆ operator==()

bool mlir::SDBMExpr::operator== ( const SDBMExpr &  other) const
inline

SDBM expressions can be compared straight-forwardly.

◆ print()

void SDBMExpr::print ( raw_ostream &  os) const

Prints the SDBM expression.

◆ tryConvertAffineExpr()

Optional< SDBMExpr > SDBMExpr::tryConvertAffineExpr ( AffineExpr  affine)
static

Try constructing an SDBM expression from the given affine expression. This may fail if the affine expression is not representable as SDBM, in which case llvm::None is returned. The conversion procedure recognizes (nested) multiplicative ((x floordiv B) * B) and additive (x - x mod B) patterns for the stripe expression.

Member Data Documentation

◆ impl

ImplType* mlir::SDBMExpr::impl
protected

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