MLIR 22.0.0git
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.
IntegerSet replaceDimsAndSymbols (ArrayRef< AffineExpr > dimReplacements, ArrayRef< AffineExpr > symReplacements, unsigned numResultDims, unsigned numResultSyms)
 This method substitutes any uses of dimensions and symbols (e.g.
 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< boolgetEqFlags () const
 Returns the equality bits, which specify whether each of the constraints is an equality or inequality.
bool isEq (unsigned idx) const
 Returns true if the idx^th constraint is an equality, false if it is an inequality.
MLIRContextgetContext () const
void walkExprs (function_ref< void(AffineExpr)> callback) const
 Walk all of the AffineExpr's in this set's constraints.
void print (raw_ostream &os) const
void dump () const
friend::llvm::hash_code hash_value (IntegerSet arg)
const voidgetAsOpaquePointer () const
 Methods supporting C API.

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)

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

Constructor & Destructor Documentation

◆ IntegerSet() [1/2]

mlir::IntegerSet::IntegerSet ( )
constexprdefault

◆ 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 4008 of file AsmPrinter.cpp.

References print().

◆ 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.

References getConstraints().

Referenced by getContext(), and mlir::AsmPrinter::Impl::printIntegerSet().

◆ getConstraints()

ArrayRef< AffineExpr > IntegerSet::getConstraints ( ) const

◆ getContext()

MLIRContext * IntegerSet::getContext ( ) const

◆ getEmptySet()

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

◆ 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(), mlir::FlatLinearValueConstraints::FlatLinearValueConstraints(), isEq(), and replaceDimsAndSymbols().

◆ getFromOpaquePointer()

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

Definition at line 114 of file IntegerSet.h.

References IntegerSet().

◆ getNumConstraints()

◆ getNumDims()

◆ getNumEqualities()

unsigned IntegerSet::getNumEqualities ( ) const

Definition at line 25 of file IntegerSet.cpp.

References getNumConstraints(), and isEq().

Referenced by getNumInequalities().

◆ getNumInequalities()

unsigned IntegerSet::getNumInequalities ( ) const

Definition at line 33 of file IntegerSet.cpp.

References getNumConstraints(), and getNumEqualities().

◆ getNumInputs()

unsigned IntegerSet::getNumInputs ( ) const

◆ getNumSymbols()

◆ hash_value()

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

References IntegerSet().

◆ isEmptyIntegerSet()

bool IntegerSet::isEmptyIntegerSet ( ) const

Returns true if this is the canonical integer set.

Definition at line 37 of file IntegerSet.cpp.

References getContext(), and getEmptySet().

◆ 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.

References getEqFlags().

Referenced by getNumEqualities(), and 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.

References IntegerSet().

◆ operator==()

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

Definition at line 77 of file IntegerSet.h.

References IntegerSet().

◆ print()

void IntegerSet::print ( raw_ostream & os) const

◆ 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 get(), getConstraints(), getEqFlags(), getNumConstraints(), and IntegerSet().

◆ 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.

References getConstraints().


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