diff --git a/mlir/include/mlir-c/Dialect/Linalg.h b/mlir/include/mlir-c/Dialect/Linalg.h --- a/mlir/include/mlir-c/Dialect/Linalg.h +++ b/mlir/include/mlir-c/Dialect/Linalg.h @@ -11,6 +11,7 @@ #define MLIR_C_DIALECT_LINALG_H #include "mlir-c/Registration.h" +#include "mlir-c/Support.h" #ifdef __cplusplus extern "C" { @@ -22,4 +23,6 @@ } #endif +#include "mlir/Dialect/Linalg/Passes.capi.h.inc" + #endif // MLIR_C_DIALECT_LINALG_H diff --git a/mlir/include/mlir/Dialect/Linalg/CMakeLists.txt b/mlir/include/mlir/Dialect/Linalg/CMakeLists.txt --- a/mlir/include/mlir/Dialect/Linalg/CMakeLists.txt +++ b/mlir/include/mlir/Dialect/Linalg/CMakeLists.txt @@ -2,6 +2,8 @@ set(LLVM_TARGET_DEFINITIONS Passes.td) mlir_tablegen(Passes.h.inc -gen-pass-decls -name Linalg) +mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Linalg) +mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Linalg) add_public_tablegen_target(MLIRLinalgPassIncGen) add_mlir_doc(Passes -gen-pass-doc LinalgPasses ./) diff --git a/mlir/lib/Bindings/Python/CMakeLists.txt b/mlir/lib/Bindings/Python/CMakeLists.txt --- a/mlir/lib/Bindings/Python/CMakeLists.txt +++ b/mlir/lib/Bindings/Python/CMakeLists.txt @@ -118,3 +118,11 @@ add_subdirectory(Transforms) add_subdirectory(Conversions) + +add_mlir_python_extension(MLIRLinalgPassesBindingsPythonExtension _mlirLinalgPasses + INSTALL_DIR + python + SOURCES + LinalgPasses.cpp +) +add_dependencies(MLIRBindingsPythonExtension MLIRLinalgPassesBindingsPythonExtension) diff --git a/mlir/lib/Bindings/Python/LinalgPasses.cpp b/mlir/lib/Bindings/Python/LinalgPasses.cpp new file mode 100644 --- /dev/null +++ b/mlir/lib/Bindings/Python/LinalgPasses.cpp @@ -0,0 +1,22 @@ +//===- LinalgPasses.cpp - Pybind module for the Linalg passes -------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "mlir-c/Dialect/Linalg.h" + +#include + +// ----------------------------------------------------------------------------- +// Module initialization. +// ----------------------------------------------------------------------------- + +PYBIND11_MODULE(_mlirLinalgPasses, m) { + m.doc() = "MLIR Linalg Dialect Passes"; + + // Register all Linalg passes on load. + mlirRegisterLinalgPasses(); +} diff --git a/mlir/lib/Bindings/Python/mlir/dialects/linalg/passes/__init__.py b/mlir/lib/Bindings/Python/mlir/dialects/linalg/passes/__init__.py new file mode 100644 --- /dev/null +++ b/mlir/lib/Bindings/Python/mlir/dialects/linalg/passes/__init__.py @@ -0,0 +1,6 @@ +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +from ...._cext_loader import _load_extension +_cextLinalgPasses = _load_extension("_mlirLinalgPasses") diff --git a/mlir/lib/CAPI/Dialect/CMakeLists.txt b/mlir/lib/CAPI/Dialect/CMakeLists.txt --- a/mlir/lib/CAPI/Dialect/CMakeLists.txt +++ b/mlir/lib/CAPI/Dialect/CMakeLists.txt @@ -1,6 +1,7 @@ # TODO: Make the check source feature optional as an argument on *_add_library. set(LLVM_OPTIONAL_SOURCES Linalg.cpp + LinalgPasses.cpp SCF.cpp Shape.cpp Standard.cpp @@ -9,10 +10,16 @@ add_mlir_public_c_api_library(MLIRCAPILinalg Linalg.cpp + LinalgPasses.cpp + + DEPENDS + MLIRLinalgPassIncGen LINK_LIBS PUBLIC MLIRCAPIIR MLIRLinalg + MLIRPass + MLIRLinalgTransforms ) add_mlir_public_c_api_library(MLIRCAPISCF diff --git a/mlir/lib/CAPI/Dialect/LinalgPasses.cpp b/mlir/lib/CAPI/Dialect/LinalgPasses.cpp new file mode 100644 --- /dev/null +++ b/mlir/lib/CAPI/Dialect/LinalgPasses.cpp @@ -0,0 +1,26 @@ +//===- LinalgPasses.cpp - C API for Linalg Dialect Passes -----------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "mlir/CAPI/Pass.h" +#include "mlir/Dialect/Linalg/Passes.h" +#include "mlir/Pass/Pass.h" + +// Must include the declarations as they carry important visibility attributes. +#include "mlir/Dialect/Linalg/Passes.capi.h.inc" + +using namespace mlir; + +#ifdef __cplusplus +extern "C" { +#endif + +#include "mlir/Dialect/Linalg/Passes.capi.cpp.inc" + +#ifdef __cplusplus +} +#endif