Skip to content
This repository was archived by the owner on Oct 11, 2025. It is now read-only.

Commit 78adb1b

Browse files
authored
[MLIR][CAPI][python] expose the python binding for linalgOp.getIndexingMaps (#136054)
This PR is mainly about exposing the python bindings for `linalgOp.getIndexingMaps`. --------- Signed-off-by: Bangtian Liu <[email protected]>
1 parent daf8378 commit 78adb1b

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

mlir/include/mlir-c/Dialect/Linalg.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ typedef struct MlirLinalgConvolutionDimensions {
5050
MLIR_CAPI_EXPORTED MlirLinalgConvolutionDimensions
5151
mlirLinalgInferConvolutionDimensions(MlirOperation op);
5252

53+
MLIR_CAPI_EXPORTED MlirAttribute
54+
mlirLinalgGetIndexingMapsAttribute(MlirOperation op);
55+
5356
MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(Linalg, linalg);
5457

5558
#ifdef __cplusplus

mlir/lib/Bindings/Python/DialectLinalg.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ static void populateDialectLinalgSubmodule(nb::module_ m) {
120120

121121
m.def("infer_convolution_dimensions", &InferConvolutionDimensions,
122122
"Infers convolution dimensions", nb::arg("op"));
123+
124+
m.def(
125+
"get_indexing_maps",
126+
[](MlirOperation op) -> std::optional<MlirAttribute> {
127+
MlirAttribute attr = mlirLinalgGetIndexingMapsAttribute(op);
128+
if (mlirAttributeIsNull(attr))
129+
return std::nullopt;
130+
return attr;
131+
},
132+
"Returns the indexing_maps attribute for a linalg op.");
123133
}
124134

125135
NB_MODULE(_mlirDialectsLinalg, m) {

mlir/lib/CAPI/Dialect/Linalg.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,14 @@ mlirLinalgInferConvolutionDimensions(MlirOperation op) {
120120
return result;
121121
}
122122

123+
MLIR_CAPI_EXPORTED MlirAttribute
124+
mlirLinalgGetIndexingMapsAttribute(MlirOperation op) {
125+
auto linalgOp = llvm::dyn_cast<mlir::linalg::LinalgOp>(unwrap(op));
126+
if (!linalgOp)
127+
return MlirAttribute{nullptr};
128+
129+
ArrayAttr attr = linalgOp.getIndexingMaps();
130+
return wrap(attr);
131+
}
132+
123133
MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(Linalg, linalg, LinalgDialect)

0 commit comments

Comments
 (0)