MLIR  20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
mlir::IntegerSet Class Reference

An integer set representing a conjunction of one or more affine equalities and inequalities. More...

#include "mlir/IR/IntegerSet.h"

Public Types

using ImplType = detail::IntegerSetStorage
 

Public Member Functions

constexpr IntegerSet ()=default
 
 IntegerSet (ImplType *set)
 
bool isEmptyIntegerSet () const
 Returns true if this is the canonical integer set. More...
 
IntegerSet replaceDimsAndSymbols (ArrayRef< AffineExpr > dimReplacements, ArrayRef< AffineExpr > symReplacements, unsigned numResultDims, unsigned numResultSyms)
 This method substitutes any uses of dimensions and symbols (e.g. More...
 
 operator bool ()
 
bool operator== (IntegerSet other) const
 
bool operator!= (IntegerSet other) const
 
unsigned getNumDims () const
 
unsigned getNumSymbols () const
 
unsigned getNumInputs () const
 
unsigned getNumConstraints () const
 
unsigned getNumEqualities () const
 
unsigned getNumInequalities () const
 
ArrayRef< AffineExprgetConstraints () const
 
AffineExpr getConstraint (unsigned idx) const
 
ArrayRef< bool > getEqFlags () const
 Returns the equality bits, which specify whether each of the constraints is an equality or inequality. More...
 
bool isEq (unsigned idx) const
 Returns true if the idx^th constraint is an equality, false if it is an inequality. More...
 
MLIRContextgetContext () const
 
void walkExprs (function_ref< void(AffineExpr)> callback) const
 Walk all of the AffineExpr's in this set's constraints. More...
 
void print (raw_ostream &os) const
 
void dump () const
 
const void * getAsOpaquePointer () const
 Methods supporting C API. More...
 

Static Public Member Functions

static IntegerSet get (unsigned dimCount, unsigned symbolCount, ArrayRef< AffineExpr > constraints, ArrayRef< bool > eqFlags)
 
static IntegerSet getEmptySet (unsigned numDims, unsigned numSymbols, MLIRContext *context)
 
static IntegerSet getFromOpaquePointer (const void *pointer)
 

Friends

::llvm::hash_code hash_value (IntegerSet arg)
 

Detailed Description

An integer set representing a conjunction of one or more affine equalities and inequalities.

An integer set in the IR is immutable like the affine map, but integer sets are not unique'd unless the number of constraints in them is below kUniquingThreshold. The affine expressions that make up the equalities and inequalities of an integer set are themselves unique and are allocated by the bump pointer allocator.

Definition at line 44 of file IntegerSet.h.

Member Typedef Documentation

◆ ImplType

Definition at line 46 of file IntegerSet.h.

Constructor & Destructor Documentation

◆ IntegerSet() [1/2]

constexpr mlir::IntegerSet::IntegerSet ( )
constexprdefault

Referenced by getFromOpaquePointer().

◆ IntegerSet() [2/2]

mlir::IntegerSet::IntegerSet ( ImplType set)
inlineexplicit

Definition at line 49 of file IntegerSet.h.

Member Function Documentation

◆ dump()

void IntegerSet::dump ( ) const

Definition at line 3847 of file AsmPrinter.cpp.

◆ get()

IntegerSet IntegerSet::get ( unsigned  dimCount,
unsigned  symbolCount,
ArrayRef< AffineExpr constraints,
ArrayRef< bool >  eqFlags 
)
static

◆ getAsOpaquePointer()

const void* mlir::IntegerSet::getAsOpaquePointer ( ) const
inline

Methods supporting C API.

Definition at line 111 of file IntegerSet.h.

◆ getConstraint()

AffineExpr IntegerSet::getConstraint ( unsigned  idx) const

Definition at line 45 of file IntegerSet.cpp.

Referenced by mlir::AsmPrinter::Impl::printIntegerSet().

◆ getConstraints()

ArrayRef< AffineExpr > IntegerSet::getConstraints ( ) const

Definition at line 41 of file IntegerSet.cpp.

Referenced by composeSetAndOperands(), and mlir::getFlattenedAffineExprs().

◆ getContext()

MLIRContext * IntegerSet::getContext ( ) const

Definition at line 57 of file IntegerSet.cpp.

Referenced by composeSetAndOperands(), and mlir::affine::simplifyIntegerSet().

◆ getEmptySet()

static IntegerSet mlir::IntegerSet::getEmptySet ( unsigned  numDims,
unsigned  numSymbols,
MLIRContext context 
)
inlinestatic

Definition at line 56 of file IntegerSet.h.

References get(), and mlir::getAffineConstantExpr().

Referenced by mlirIntegerSetEmptyGet(), and mlir::affine::simplifyIntegerSet().

◆ getEqFlags()

ArrayRef< bool > IntegerSet::getEqFlags ( ) const

Returns the equality bits, which specify whether each of the constraints is an equality or inequality.

Definition at line 51 of file IntegerSet.cpp.

Referenced by composeSetAndOperands(), and mlir::FlatLinearValueConstraints::FlatLinearValueConstraints().

◆ getFromOpaquePointer()

static IntegerSet mlir::IntegerSet::getFromOpaquePointer ( const void *  pointer)
inlinestatic

Definition at line 114 of file IntegerSet.h.

References IntegerSet().

◆ getNumConstraints()

unsigned IntegerSet::getNumConstraints ( ) const

◆ getNumDims()

unsigned IntegerSet::getNumDims ( ) const

◆ getNumEqualities()

unsigned IntegerSet::getNumEqualities ( ) const

Definition at line 25 of file IntegerSet.cpp.

◆ getNumInequalities()

unsigned IntegerSet::getNumInequalities ( ) const

Definition at line 33 of file IntegerSet.cpp.

◆ getNumInputs()

unsigned IntegerSet::getNumInputs ( ) const

◆ getNumSymbols()

unsigned IntegerSet::getNumSymbols ( ) const

◆ isEmptyIntegerSet()

bool IntegerSet::isEmptyIntegerSet ( ) const

Returns true if this is the canonical integer set.

Definition at line 37 of file IntegerSet.cpp.

References getContext().

◆ isEq()

bool IntegerSet::isEq ( unsigned  idx) const

Returns true if the idx^th constraint is an equality, false if it is an inequality.

Definition at line 55 of file IntegerSet.cpp.

Referenced by mlir::AsmPrinter::Impl::printIntegerSet().

◆ operator bool()

mlir::IntegerSet::operator bool ( )
inlineexplicit

Definition at line 76 of file IntegerSet.h.

◆ operator!=()

bool mlir::IntegerSet::operator!= ( IntegerSet  other) const
inline

Definition at line 78 of file IntegerSet.h.

◆ operator==()

bool mlir::IntegerSet::operator== ( IntegerSet  other) const
inline

Definition at line 77 of file IntegerSet.h.

◆ print()

void IntegerSet::print ( raw_ostream &  os) const

Definition at line 3875 of file AsmPrinter.cpp.

◆ replaceDimsAndSymbols()

IntegerSet IntegerSet::replaceDimsAndSymbols ( ArrayRef< AffineExpr dimReplacements,
ArrayRef< AffineExpr symReplacements,
unsigned  numResultDims,
unsigned  numResultSyms 
)

This method substitutes any uses of dimensions and symbols (e.g.

dim#0 with dimReplacements[0]) in subexpressions and returns the modified integer set. Because this can be used to eliminate dims and symbols, the client needs to specify the number of dims and symbols in the result. The returned map always has the same number of results.

Definition at line 68 of file IntegerSet.cpp.

References mlir::get().

◆ walkExprs()

void IntegerSet::walkExprs ( function_ref< void(AffineExpr)>  callback) const

Walk all of the AffineExpr's in this set's constraints.

Walk all of the AffineExpr's in this set.

Each node in an expression tree is visited in postorder.

Definition at line 63 of file IntegerSet.cpp.

Friends And Related Function Documentation

◆ hash_value

::llvm::hash_code hash_value ( IntegerSet  arg)
friend

Definition at line 124 of file IntegerSet.h.


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