MLIR 23.0.0git
SparseTensor.h
Go to the documentation of this file.
1//===-- mlir-c/Dialect/SparseTensor.h - C API for SparseTensor ----*- C -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM
4// Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef MLIR_C_DIALECT_SPARSETENSOR_H
11#define MLIR_C_DIALECT_SPARSETENSOR_H
12
13#include "mlir-c/AffineMap.h"
14#include "mlir-c/IR.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(SparseTensor, sparse_tensor);
21
22/// Dimension level types (and properties) that define sparse tensors.
23/// See the documentation in SparseTensorAttrDefs.td for their meaning.
24///
25/// These correspond to SparseTensorEncodingAttr::LevelType in the C++ API.
26/// If updating, keep them in sync and update the static_assert in the impl
27/// file.
29
38
44
45//===----------------------------------------------------------------------===//
46// SparseTensorEncodingAttr
47//===----------------------------------------------------------------------===//
48
49/// Checks whether the given attribute is a `sparse_tensor.encoding` attribute.
52
53/// Creates a `sparse_tensor.encoding` attribute with the given parameters.
55 MlirContext ctx, intptr_t lvlRank,
56 MlirSparseTensorLevelType const *lvlTypes, MlirAffineMap dimToLvl,
57 MlirAffineMap lvlTodim, int posWidth, int crdWidth,
58 MlirAttribute explicitVal, MlirAttribute implicitVal);
59
61
62/// Returns the level-rank of the `sparse_tensor.encoding` attribute.
64mlirSparseTensorEncodingGetLvlRank(MlirAttribute attr);
65
66/// Returns a specified level-type of the `sparse_tensor.encoding` attribute.
69
70/// Returns a specified level-format of the `sparse_tensor.encoding` attribute.
72mlirSparseTensorEncodingAttrGetLvlFmt(MlirAttribute attr, intptr_t lvl);
73
74/// Returns the dimension-to-level mapping of the `sparse_tensor.encoding`
75/// attribute.
76MLIR_CAPI_EXPORTED MlirAffineMap
78
79/// Returns the level-to-dimension mapping of the `sparse_tensor.encoding`
80/// attribute.
81MLIR_CAPI_EXPORTED MlirAffineMap
83
84/// Returns the position bitwidth of the `sparse_tensor.encoding` attribute.
87
88/// Returns the coordinate bitwidth of the `sparse_tensor.encoding` attribute.
91
92/// Returns the explicit value of the `sparse_tensor.encoding` attribute.
93MLIR_CAPI_EXPORTED MlirAttribute
95
96/// Returns the implicit value of the `sparse_tensor.encoding` attribute.
97MLIR_CAPI_EXPORTED MlirAttribute
99
100MLIR_CAPI_EXPORTED unsigned
102
103MLIR_CAPI_EXPORTED unsigned
105
108 enum MlirSparseTensorLevelFormat lvlFmt,
109 const enum MlirSparseTensorLevelPropertyNondefault *properties,
110 unsigned propSize, unsigned n, unsigned m);
111
112#ifdef __cplusplus
113}
114#endif
115
116#include "mlir/Dialect/SparseTensor/Transforms/Passes.capi.h.inc"
117
118#endif // MLIR_C_DIALECT_SPARSETENSOR_H
MLIR_CAPI_EXPORTED MlirAffineMap mlirSparseTensorEncodingAttrGetDimToLvl(MlirAttribute attr)
Returns the dimension-to-level mapping of the sparse_tensor.encoding attribute.
MLIR_CAPI_EXPORTED MlirAttribute mlirSparseTensorEncodingAttrGetImplicitVal(MlirAttribute attr)
Returns the implicit value of the sparse_tensor.encoding attribute.
MLIR_CAPI_EXPORTED intptr_t mlirSparseTensorEncodingGetLvlRank(MlirAttribute attr)
Returns the level-rank of the sparse_tensor.encoding attribute.
MLIR_CAPI_EXPORTED MlirAttribute mlirSparseTensorEncodingAttrGet(MlirContext ctx, intptr_t lvlRank, MlirSparseTensorLevelType const *lvlTypes, MlirAffineMap dimToLvl, MlirAffineMap lvlTodim, int posWidth, int crdWidth, MlirAttribute explicitVal, MlirAttribute implicitVal)
Creates a sparse_tensor.encoding attribute with the given parameters.
MLIR_CAPI_EXPORTED enum MlirSparseTensorLevelFormat mlirSparseTensorEncodingAttrGetLvlFmt(MlirAttribute attr, intptr_t lvl)
Returns a specified level-format of the sparse_tensor.encoding attribute.
MLIR_CAPI_EXPORTED int mlirSparseTensorEncodingAttrGetCrdWidth(MlirAttribute attr)
Returns the coordinate bitwidth of the sparse_tensor.encoding attribute.
uint64_t MlirSparseTensorLevelType
Dimension level types (and properties) that define sparse tensors.
MLIR_CAPI_EXPORTED MlirStringRef mlirSparseTensorEncodingAttrGetName(void)
MLIR_CAPI_EXPORTED MlirAffineMap mlirSparseTensorEncodingAttrGetLvlToDim(MlirAttribute attr)
Returns the level-to-dimension mapping of the sparse_tensor.encoding attribute.
MLIR_CAPI_EXPORTED MlirAttribute mlirSparseTensorEncodingAttrGetExplicitVal(MlirAttribute attr)
Returns the explicit value of the sparse_tensor.encoding attribute.
MlirSparseTensorLevelFormat
@ MLIR_SPARSE_TENSOR_LEVEL_N_OUT_OF_M
@ MLIR_SPARSE_TENSOR_LEVEL_COMPRESSED
@ MLIR_SPARSE_TENSOR_LEVEL_DENSE
@ MLIR_SPARSE_TENSOR_LEVEL_LOOSE_COMPRESSED
@ MLIR_SPARSE_TENSOR_LEVEL_SINGLETON
@ MLIR_SPARSE_TENSOR_LEVEL_BATCH
MLIR_CAPI_EXPORTED unsigned mlirSparseTensorEncodingAttrGetStructuredN(MlirSparseTensorLevelType lvlType)
MLIR_CAPI_EXPORTED MlirSparseTensorLevelType mlirSparseTensorEncodingAttrBuildLvlType(enum MlirSparseTensorLevelFormat lvlFmt, const enum MlirSparseTensorLevelPropertyNondefault *properties, unsigned propSize, unsigned n, unsigned m)
MLIR_CAPI_EXPORTED unsigned mlirSparseTensorEncodingAttrGetStructuredM(MlirSparseTensorLevelType lvlType)
MLIR_CAPI_EXPORTED bool mlirAttributeIsASparseTensorEncodingAttr(MlirAttribute attr)
Checks whether the given attribute is a sparse_tensor.encoding attribute.
MLIR_CAPI_EXPORTED MlirSparseTensorLevelType mlirSparseTensorEncodingAttrGetLvlType(MlirAttribute attr, intptr_t lvl)
Returns a specified level-type of the sparse_tensor.encoding attribute.
MLIR_CAPI_EXPORTED int mlirSparseTensorEncodingAttrGetPosWidth(MlirAttribute attr)
Returns the position bitwidth of the sparse_tensor.encoding attribute.
MlirSparseTensorLevelPropertyNondefault
@ MLIR_SPARSE_PROPERTY_NON_UNIQUE
@ MLIR_SPARSE_PROPERTY_NON_ORDERED
@ MLIR_SPARSE_PROPERTY_SOA
#define MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(Name, Namespace)
Definition IR.h:215
#define MLIR_CAPI_EXPORTED
Definition Support.h:46
A pointer to a sized fragment of a string, not necessarily null-terminated.
Definition Support.h:75