[Mlir-commits] [mlir] [mlir][Python] fix dialect extensions which bind C types (PR #175405)
Maksim Levental
llvmlistbot at llvm.org
Sat Jan 10 20:52:30 PST 2026
================
@@ -8,30 +8,40 @@
#include "mlir-c/Dialect/Linalg.h"
#include "mlir-c/IR.h"
+#include "mlir/Bindings/Python/IRAttributes.h"
+#include "mlir/Bindings/Python/IRCore.h"
#include "mlir/Bindings/Python/Nanobind.h"
#include "mlir/Bindings/Python/NanobindAdaptors.h"
namespace nb = nanobind;
using namespace mlir::python::nanobind_adaptors;
+namespace mlir {
+namespace python {
+namespace MLIR_BINDINGS_PYTHON_DOMAIN {
+namespace linalg {
-static std::optional<MlirLinalgContractionDimensions>
-InferContractionDimensions(MlirOperation op) {
+struct PyLinalgContractionDimensions : MlirLinalgContractionDimensions {};
+
+struct PyLinalgConvolutionDimensions : MlirLinalgConvolutionDimensions {};
+
+static std::optional<PyLinalgContractionDimensions>
+InferContractionDimensions(PyOperationBase &op) {
MlirLinalgContractionDimensions dims =
- mlirLinalgInferContractionDimensions(op);
+ mlirLinalgInferContractionDimensions(op.getOperation());
// Detect "empty" result. This occurs when `op` is not a contraction op,
// or when `linalg::inferContractionDims` fails.
if (mlirAttributeIsNull(dims.batch) && mlirAttributeIsNull(dims.m) &&
mlirAttributeIsNull(dims.n) && mlirAttributeIsNull(dims.k)) {
return std::nullopt;
}
- return dims;
+ return PyLinalgContractionDimensions{dims.batch, dims.m, dims.n, dims.k};
----------------
makslevental wrote:
Oh and also because I did `PyLinalgContractionDimensions : MlirLinalgContractionDimensions` and `MlirLinalgContractionDimensions` is `typedef`ed you can't actually even do it (I don't know how the initializer list works...)
https://github.com/llvm/llvm-project/pull/175405
More information about the Mlir-commits
mailing list