[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