MLIR
19.0.0git
|
#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/Bufferization/IR/BufferizableOpInterface.h"
#include "mlir/Dialect/Complex/IR/Complex.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.
Namespaces | |
mlir | |
Include the generated interface declarations. | |
mlir::sparse_tensor | |
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 mlir::ParseResult | parseLevelRange (AsmParser &parser, Level &lvlLo, Level &lvlHi) |
Parses a level range in the form "$lo `to` $hi" or simply "$lo" if $hi - $lo = 1. More... | |
static void | printLevelRange (AsmPrinter &p, Level lo, Level hi) |
Prints a level range in the form "$lo `to` $hi" or simply "$lo" if $hi - $lo = 1. More... | |
llvm::hash_code | mlir::sparse_tensor::hash_value (LevelType lt) |
static constexpr bool | acceptBitWidth (unsigned bitWidth) |
static SmallVector< Size > | getSparseFieldShape (const SparseTensorEncodingAttr enc, std::optional< ArrayRef< int64_t >> dimShape) |
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 ToBufferOp > | |
static LogicalResult | inferSparseBufferType (ValueRange ops, DictionaryAttr attr, OpaqueProperties prop, RegionRange region, SmallVectorImpl< mlir::Type > &ret) |
template<typename SpecifierOp > | |
static SetStorageSpecifierOp | getSpecifierSetDef (SpecifierOp op) |
template<class T > | |
static LogicalResult | verifyNumBlockArgs (T *op, Region ®ion, const char *regionName, TypeRange inputTypes, Type outputType) |
static ParseResult | parseLevelRange (OpAsmParser &parser, IntegerAttr &lvlLoAttr, IntegerAttr &lvlHiAttr) |
Parses a level range in the form "$lo `to` $hi" or simply "$lo" if $hi - $lo = 1. More... | |
static void | printLevelRange (OpAsmPrinter &p, Operation *, IntegerAttr lvlLo, IntegerAttr lvlHi) |
Prints a level range in the form "$lo `to` $hi" or simply "$lo" if $hi - $lo = 1. More... | |
Variables | |
static constexpr Level | kInvalidLevel = -1u |
static constexpr Level | kInvalidFieldIndex = -1u |
static constexpr FieldIndex | kDataFieldStartingIdx = 0 |
#define GET_ATTRDEF_CLASSES |
Definition at line 30 of file SparseTensorDialect.cpp.
#define GET_ATTRDEF_LIST |
#define GET_OP_CLASSES |
Definition at line 2208 of file SparseTensorDialect.cpp.
#define GET_OP_LIST |
#define GET_TYPEDEF_CLASSES |
Definition at line 42 of file SparseTensorDialect.cpp.
#define GET_TYPEDEF_LIST |
|
staticconstexpr |
Definition at line 60 of file SparseTensorDialect.cpp.
|
static |
Definition at line 1268 of file SparseTensorDialect.cpp.
|
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 1200 of file SparseTensorDialect.cpp.
References mlir::get(), and mlir::sparse_tensor::LevelType::stripStorageIrrelevantProperties().
|
static |
Definition at line 74 of file SparseTensorDialect.cpp.
Referenced by mlir::sparse_tensor::foreachFieldAndTypeInSparseTensor().
|
static |
Definition at line 1705 of file SparseTensorDialect.cpp.
|
static |
Definition at line 1588 of file SparseTensorDialect.cpp.
References mlir::get(), mlir::sparse_tensor::SparseTensorType::getAoSCOOStart(), mlir::sparse_tensor::SparseTensorType::getBatchLvlShape(), mlir::sparse_tensor::SparseTensorType::getContext(), mlir::sparse_tensor::SparseTensorType::getCrdType(), mlir::sparse_tensor::SparseTensorType::getElementType(), mlir::sparse_tensor::SparseTensorType::getPosType(), mlir::sparse_tensor::getSparseTensorType(), and mlir::success().
|
static |
Definition at line 1232 of file SparseTensorDialect.cpp.
References mlir::sparse_tensor::getMemRefType(), mlir::Type::isIndex(), mlir::Type::isInteger(), and mlir::success().
|
static |
Definition at line 1228 of file SparseTensorDialect.cpp.
References mlir::sparse_tensor::getSparseTensorType(), and mlir::success().
|
static |
Parses a level range in the form "$lo `to` $hi" or simply "$lo" if $hi - $lo = 1.
Definition at line 2077 of file SparseTensorDialect.cpp.
References mlir::AsmParser::emitError(), mlir::failure(), mlir::AsmParser::getNameLoc(), mlir::AsmParser::parseInteger(), mlir::AsmParser::parseOptionalKeyword(), mlir::succeeded(), and mlir::success().
Referenced by parseLevelRange().
|
static |
Parses a level range in the form "$lo `to` $hi" or simply "$lo" if $hi - $lo = 1.
Definition at line 2098 of file SparseTensorDialect.cpp.
References mlir::failure(), mlir::get(), mlir::AsmParser::getBuilder(), mlir::Builder::getIndexType(), parseLevelRange(), and mlir::success().
|
static |
Definition at line 281 of file SparseTensorDialect.cpp.
References mlir::AsmParser::emitError(), mlir::failure(), mlir::AsmParser::getCurrentLocation(), mlir::AsmParser::parseOptionalInteger(), and mlir::AsmParser::parseQuestion().
|
static |
Prints a level range in the form "$lo `to` $hi" or simply "$lo" if $hi - $lo = 1.
Definition at line 2111 of file SparseTensorDialect.cpp.
Referenced by printLevelRange().
|
static |
Prints a level range in the form "$lo `to` $hi" or simply "$lo" if $hi - $lo = 1.
Definition at line 2121 of file SparseTensorDialect.cpp.
References printLevelRange().
|
static |
Definition at line 1724 of file SparseTensorDialect.cpp.
|
static |
Definition at line 1282 of file SparseTensorDialect.cpp.
|
static |
Definition at line 1237 of file SparseTensorDialect.cpp.
|
staticconstexpr |
Definition at line 99 of file SparseTensorDialect.cpp.
Referenced by mlir::sparse_tensor::StorageLayout::foreachField(), and mlir::sparse_tensor::StorageLayout::getNumDataFields().
|
staticconstexpr |
Definition at line 98 of file SparseTensorDialect.cpp.
|
staticconstexpr |
Definition at line 97 of file SparseTensorDialect.cpp.
Referenced by mlir::sparse_tensor::StorageLayout::foreachField().