MLIR  18.0.0git
Macros | Functions | Variables
SparseTensorDialect.cpp File Reference
#include <utility>
#include "Detail/DimLvlMapParser.h"
#include "mlir/Dialect/SparseTensor/IR/Enums.h"
#include "mlir/Dialect/SparseTensor/IR/SparseTensor.h"
#include "mlir/Dialect/SparseTensor/IR/SparseTensorStorageLayout.h"
#include "mlir/Dialect/SparseTensor/IR/SparseTensorType.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Utils/StaticValueUtils.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/Matchers.h"
#include "mlir/IR/OpImplementation.h"
#include "mlir/IR/PatternMatch.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Support/FormatVariadic.h"
#include "mlir/Dialect/SparseTensor/IR/SparseTensorAttrDefs.cpp.inc"
#include "mlir/Dialect/SparseTensor/IR/SparseTensorAttrEnums.cpp.inc"
#include "mlir/Dialect/SparseTensor/IR/SparseTensorTypes.cpp.inc"
#include "mlir/Dialect/SparseTensor/IR/SparseTensorOps.cpp.inc"
#include "mlir/Dialect/SparseTensor/IR/SparseTensorOpsDialect.cpp.inc"

Go to the source code of this file.

Macros

#define GET_ATTRDEF_CLASSES
 
#define GET_TYPEDEF_CLASSES
 
#define GET_ATTRDEF_LIST
 
#define GET_TYPEDEF_LIST
 
#define GET_OP_LIST
 
#define GET_OP_CLASSES
 

Functions

static constexpr bool acceptBitWidth (unsigned bitWidth)
 
static ParseResult parseOptionalStaticSlice (int64_t &result, AsmParser &parser)
 
static SparseTensorEncodingAttr getNormalizedEncodingForSpecifier (SparseTensorEncodingAttr enc)
 We normalized sparse tensor encoding attribute by always using ordered/unique LT such that "compressed_nu_no" and "compressed_nu" (as well as other variants) lead to the same storage specifier type, and stripping irrelevant fields that do not alter the sparse tensor memory layout. More...
 
static LogicalResult lvlIsInBounds (Level lvl, Value tensor)
 
static LogicalResult isMatchingWidth (Value mem, unsigned width)
 
static LogicalResult verifySparsifierGetterSetter (StorageSpecifierKind mdKind, std::optional< Level > lvl, TypedValue< StorageSpecifierType > md, Operation *op)
 
static Type getFieldElemType (SparseTensorType stt, SparseTensorFieldKind kind)
 
static LogicalResult verifyPackUnPack (Operation *op, bool requiresStaticShape, SparseTensorType stt, RankedTensorType valTp, TypeRange lvlTps)
 
template<typename SpecifierOp >
static SetStorageSpecifierOp getSpecifierSetDef (SpecifierOp op)
 
template<class T >
static LogicalResult verifyNumBlockArgs (T *op, Region &region, const char *regionName, TypeRange inputTypes, Type outputType)
 

Variables

static constexpr Level kInvalidLevel = -1u
 
static constexpr Level kInvalidFieldIndex = -1u
 
static constexpr FieldIndex kDataFieldStartingIdx = 0
 

Macro Definition Documentation

◆ GET_ATTRDEF_CLASSES

#define GET_ATTRDEF_CLASSES

Definition at line 28 of file SparseTensorDialect.cpp.

◆ GET_ATTRDEF_LIST

#define GET_ATTRDEF_LIST

◆ GET_OP_CLASSES

#define GET_OP_CLASSES

Definition at line 1779 of file SparseTensorDialect.cpp.

◆ GET_OP_LIST

#define GET_OP_LIST

◆ GET_TYPEDEF_CLASSES

#define GET_TYPEDEF_CLASSES

Definition at line 32 of file SparseTensorDialect.cpp.

◆ GET_TYPEDEF_LIST

#define GET_TYPEDEF_LIST

Function Documentation

◆ acceptBitWidth()

static constexpr bool acceptBitWidth ( unsigned  bitWidth)
staticconstexpr

Definition at line 42 of file SparseTensorDialect.cpp.

◆ getFieldElemType()

static Type getFieldElemType ( SparseTensorType  stt,
SparseTensorFieldKind  kind 
)
static

Definition at line 990 of file SparseTensorDialect.cpp.

◆ getNormalizedEncodingForSpecifier()

static SparseTensorEncodingAttr getNormalizedEncodingForSpecifier ( SparseTensorEncodingAttr  enc)
static

We normalized sparse tensor encoding attribute by always using ordered/unique LT such that "compressed_nu_no" and "compressed_nu" (as well as other variants) lead to the same storage specifier type, and stripping irrelevant fields that do not alter the sparse tensor memory layout.

Definition at line 925 of file SparseTensorDialect.cpp.

References mlir::sparse_tensor::buildLevelType(), mlir::get(), and mlir::sparse_tensor::getLevelFormat().

◆ getSpecifierSetDef()

template<typename SpecifierOp >
static SetStorageSpecifierOp getSpecifierSetDef ( SpecifierOp  op)
static

Definition at line 1364 of file SparseTensorDialect.cpp.

◆ isMatchingWidth()

static LogicalResult isMatchingWidth ( Value  mem,
unsigned  width 
)
static

◆ lvlIsInBounds()

static LogicalResult lvlIsInBounds ( Level  lvl,
Value  tensor 
)
static

◆ parseOptionalStaticSlice()

static ParseResult parseOptionalStaticSlice ( int64_t &  result,
AsmParser parser 
)
static

◆ verifyNumBlockArgs()

template<class T >
static LogicalResult verifyNumBlockArgs ( T *  op,
Region region,
const char *  regionName,
TypeRange  inputTypes,
Type  outputType 
)
static

Definition at line 1383 of file SparseTensorDialect.cpp.

◆ verifyPackUnPack()

static LogicalResult verifyPackUnPack ( Operation op,
bool  requiresStaticShape,
SparseTensorType  stt,
RankedTensorType  valTp,
TypeRange  lvlTps 
)
static

Definition at line 1004 of file SparseTensorDialect.cpp.

◆ verifySparsifierGetterSetter()

static LogicalResult verifySparsifierGetterSetter ( StorageSpecifierKind  mdKind,
std::optional< Level lvl,
TypedValue< StorageSpecifierType >  md,
Operation op 
)
static

Definition at line 959 of file SparseTensorDialect.cpp.

Variable Documentation

◆ kDataFieldStartingIdx

constexpr FieldIndex kDataFieldStartingIdx = 0
staticconstexpr

◆ kInvalidFieldIndex

constexpr Level kInvalidFieldIndex = -1u
staticconstexpr

Definition at line 60 of file SparseTensorDialect.cpp.

◆ kInvalidLevel

constexpr Level kInvalidLevel = -1u
staticconstexpr