[Mlir-commits] [mlir] [mlir][CAPI][python] expose the python bindings for linalg::isaContractionOpInterface and linalg::inferContractionDims (PR #134935)
Maksim Levental
llvmlistbot at llvm.org
Wed Apr 9 09:14:59 PDT 2025
================
@@ -20,6 +53,33 @@ static void populateDialectLinalgSubmodule(nb::module_ m) {
nb::arg("op"),
"Fill the region for `op`, which is assumed to be a builtin named Linalg "
"op.");
+
+ m.def("isa_contraction_op", &mlirLinalgIsContractionOp,
+ "Checks if the given operation is a Linalg contraction operation.",
+ nb::arg("op"));
+
+ nb::class_<PyContractionDimensions>(m, "ContractionDimensions")
+ .def_prop_ro("batch",
+ [](const PyContractionDimensions &self) {
+ return convertDenseI32AttrToList(self.value.batch);
+ })
+ .def_prop_ro("m",
+ [](const PyContractionDimensions &self) {
+ return convertDenseI32AttrToList(self.value.m);
+ })
+ .def_prop_ro("n",
+ [](const PyContractionDimensions &self) {
+ return convertDenseI32AttrToList(self.value.n);
+ })
+ .def_prop_ro("k", [](const PyContractionDimensions &self) {
+ return convertDenseI32AttrToList(self.value.k);
----------------
makslevental wrote:
ah it's because `prop_ro` is expecting `const` (`ro`). you could probably const cast the field using a really ugly function pointer type but this is fine too.
https://github.com/llvm/llvm-project/pull/134935
More information about the Mlir-commits
mailing list