[Mlir-commits] [mlir] 3c464d2 - [mlir][emitc] Add support for C-API/python binding to EmitC dialect (#119476)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Dec 11 10:07:25 PST 2024
Author: Eliud de León
Date: 2024-12-11T10:07:21-08:00
New Revision: 3c464d23682b0f9e6f70965e8f8f3861c9ba5417
URL: https://github.com/llvm/llvm-project/commit/3c464d23682b0f9e6f70965e8f8f3861c9ba5417
DIFF: https://github.com/llvm/llvm-project/commit/3c464d23682b0f9e6f70965e8f8f3861c9ba5417.diff
LOG: [mlir][emitc] Add support for C-API/python binding to EmitC dialect (#119476)
Added EmitC dialect bindings.
Added:
mlir/include/mlir-c/Dialect/EmitC.h
mlir/lib/CAPI/Dialect/EmitC.cpp
mlir/python/mlir/dialects/EmitC.td
mlir/python/mlir/dialects/emitc.py
mlir/test/python/dialects/emitc_dialect.py
Modified:
mlir/lib/CAPI/Dialect/CMakeLists.txt
mlir/python/CMakeLists.txt
Removed:
################################################################################
diff --git a/mlir/include/mlir-c/Dialect/EmitC.h b/mlir/include/mlir-c/Dialect/EmitC.h
new file mode 100644
index 00000000000000..82e698344bf1e7
--- /dev/null
+++ b/mlir/include/mlir-c/Dialect/EmitC.h
@@ -0,0 +1,26 @@
+//===-- mlir-c/Dialect/EmitC.h - C API for EmitC dialect ----------*- C -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef MLIR_C_DIALECT_EmitC_H
+#define MLIR_C_DIALECT_EmitC_H
+
+#include "mlir-c/IR.h"
+#include "mlir-c/Support.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(EmitC, emitc);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // MLIR_C_DIALECT_EmitC_H
diff --git a/mlir/lib/CAPI/Dialect/CMakeLists.txt b/mlir/lib/CAPI/Dialect/CMakeLists.txt
index 4e141b60ff8cc9..5ad4bafedf6c48 100644
--- a/mlir/lib/CAPI/Dialect/CMakeLists.txt
+++ b/mlir/lib/CAPI/Dialect/CMakeLists.txt
@@ -40,6 +40,15 @@ add_mlir_upstream_c_api_library(MLIRCAPIControlFlow
MLIRControlFlowDialect
)
+add_mlir_upstream_c_api_library(MLIRCAPIEmitC
+ EmitC.cpp
+
+ PARTIAL_SOURCES_INTENDED
+ LINK_LIBS PUBLIC
+ MLIRCAPIIR
+ MLIREmitCDialect
+)
+
add_mlir_upstream_c_api_library(MLIRCAPIMath
Math.cpp
diff --git a/mlir/lib/CAPI/Dialect/EmitC.cpp b/mlir/lib/CAPI/Dialect/EmitC.cpp
new file mode 100644
index 00000000000000..3dcb7038a57981
--- /dev/null
+++ b/mlir/lib/CAPI/Dialect/EmitC.cpp
@@ -0,0 +1,13 @@
+//===- EmitC.cpp - C Interface for EmitC dialect --------------------------===//
+//
+// 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/EmitC.h"
+#include "mlir/CAPI/Registration.h"
+#include "mlir/Dialect/EmitC/IR/EmitC.h"
+
+MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(EmitC, emitc, mlir::emitc::EmitCDialect)
diff --git a/mlir/python/CMakeLists.txt b/mlir/python/CMakeLists.txt
index e1b870b53ad25c..10866c11bdb71b 100644
--- a/mlir/python/CMakeLists.txt
+++ b/mlir/python/CMakeLists.txt
@@ -352,6 +352,14 @@ declare_mlir_python_sources(
dialects/quant.py
_mlir_libs/_mlir/dialects/quant.pyi)
+declare_mlir_dialect_python_bindings(
+ ADD_TO_PARENT MLIRPythonSources.Dialects
+ ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
+ TD_FILE dialects/EmitC.td
+ SOURCES
+ dialects/emitc.py
+ DIALECT_NAME emitc)
+
declare_mlir_dialect_python_bindings(
ADD_TO_PARENT MLIRPythonSources.Dialects
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
diff --git a/mlir/python/mlir/dialects/EmitC.td b/mlir/python/mlir/dialects/EmitC.td
new file mode 100644
index 00000000000000..ff0a56d1550148
--- /dev/null
+++ b/mlir/python/mlir/dialects/EmitC.td
@@ -0,0 +1,14 @@
+//===-- EmitC.td - Entry point for EmitC bind --------*- tablegen -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef PYTHON_BINDINGS_EMITC
+#define PYTHON_BINDINGS_EMITC
+
+include "mlir/Dialect/EmitC/IR/EmitC.td"
+
+#endif
diff --git a/mlir/python/mlir/dialects/emitc.py b/mlir/python/mlir/dialects/emitc.py
new file mode 100644
index 00000000000000..99c3286e576f1e
--- /dev/null
+++ b/mlir/python/mlir/dialects/emitc.py
@@ -0,0 +1,5 @@
+# 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 ._emitc_ops_gen import *
diff --git a/mlir/test/python/dialects/emitc_dialect.py b/mlir/test/python/dialects/emitc_dialect.py
new file mode 100644
index 00000000000000..0c42c2d4084f19
--- /dev/null
+++ b/mlir/test/python/dialects/emitc_dialect.py
@@ -0,0 +1,31 @@
+# RUN: %PYTHON %s | FileCheck %s
+
+from mlir.ir import *
+import mlir.dialects.emitc as emitc
+
+
+def run(f):
+ print("\nTEST:", f.__name__)
+ with Context() as ctx, Location.unknown():
+ module = Module.create()
+ with InsertionPoint(module.body):
+ f(ctx)
+ print(module)
+
+
+# CHECK-LABEL: TEST: testConstantOp
+ at run
+def testConstantOp(ctx):
+ i32 = IntegerType.get_signless(32)
+ a = emitc.ConstantOp(result=i32, value=IntegerAttr.get(i32, 42))
+ # CHECK: %{{.*}} = "emitc.constant"() <{value = 42 : i32}> : () -> i32
+
+
+# CHECK-LABEL: TEST: testAddOp
+ at run
+def testAddOp(ctx):
+ i32 = IntegerType.get_signless(32)
+ lhs = emitc.ConstantOp(result=i32, value=IntegerAttr.get(i32, 0))
+ rhs = emitc.ConstantOp(result=i32, value=IntegerAttr.get(i32, 0))
+ a = emitc.AddOp(i32, lhs, rhs)
+ # CHECK: %{{.*}} = emitc.add %{{.*}}, %{{.*}} : (i32, i32) -> i32
More information about the Mlir-commits
mailing list