[mlir][python] ExecutionEngine can dump to object file
authorNicolas Vasilache <nicolas.vasilache@gmail.com>
Mon, 19 Apr 2021 19:30:29 +0000 (19:30 +0000)
committerNicolas Vasilache <nicolas.vasilache@gmail.com>
Mon, 19 Apr 2021 19:33:27 +0000 (19:33 +0000)
Differential Revision: https://reviews.llvm.org/D100786

mlir/include/mlir-c/ExecutionEngine.h
mlir/lib/Bindings/Python/ExecutionEngine.cpp
mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp

index 5210f10..4a5d6ad 100644 (file)
@@ -67,6 +67,11 @@ MLIR_CAPI_EXPORTED void
 mlirExecutionEngineRegisterSymbol(MlirExecutionEngine jit, MlirStringRef name,
                                   void *sym);
 
+/// Dump as an object in `fileName`.
+MLIR_CAPI_EXPORTED void
+mlirExecutionEngineDumpToObjectFile(MlirExecutionEngine jit,
+                                    MlirStringRef fileName);
+
 #ifdef __cplusplus
 }
 #endif
index 0e8ae8b..b5c8dde 100644 (file)
@@ -93,5 +93,13 @@ void mlir::python::populateExecutionEngineSubmodule(py::module &m) {
                 mlirStringRefCreate(name.c_str(), name.size()),
                 reinterpret_cast<void *>(sym));
           },
-          "Lookup function `func` in the ExecutionEngine.");
+          "Lookup function `func` in the ExecutionEngine.")
+      .def(
+          "dump_to_object_file",
+          [](PyExecutionEngine &executionEngine, const std::string &fileName) {
+            mlirExecutionEngineDumpToObjectFile(
+                executionEngine.get(),
+                mlirStringRefCreate(fileName.c_str(), fileName.size()));
+          },
+          "Dump ExecutionEngine to an object file.");
 }
index 345eac2..36f24ed 100644 (file)
@@ -66,3 +66,8 @@ extern "C" void mlirExecutionEngineRegisterSymbol(MlirExecutionEngine jit,
     return symbolMap;
   });
 }
+
+extern "C" void mlirExecutionEngineDumpToObjectFile(MlirExecutionEngine jit,
+                                                    MlirStringRef name) {
+  unwrap(jit)->dumpToObjectFile(unwrap(name));
+}