From 04992e45ad982ce34edacea9f9275ca122e47a75 Mon Sep 17 00:00:00 2001 From: Tai Ly Date: Fri, 5 May 2023 18:04:36 +0000 Subject: Add BuildMlirFromTosaFile API This BuildMlirFromTosaFile API deserializes a tosa fbs or json file and returns a mlir module as OwningOpRef This also refactors the existing deserialization passes to use the new API, and then copy the deserialized module's main function into the existing function, and copy all attributes of the new function and new module into the existing function and module. This allows testing of the new API by running deserialization passes. Here is an example showing the attributes on the deserialized module and functions: module attributes {tf_saved_model.semantics, tosa.description = "Tosa FBS Converted", tosa.fbs_version = "0.70.0d"} { func.func @main(%arg0: tensor<1x256x256x3xui8> {tf_saved_model.index_path = ["input_0"]}) -> (tensor<1x1x17x3xf32> {tf_saved_model.index_path = ["output_0"]}) attributes {tf.entry_function = {inputs = "tosa_de serialized_input_0:0", outputs = "tosa_deserialized_output_0:0"}, tf_saved_model.exported_names = ["tosa_deserialized"]} { Signed-off-by: Tai Ly Change-Id: Ia6c0202ef43ce5d37788cd459ed7c3f8424dd619 --- include/DeserializationPasses.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'include') diff --git a/include/DeserializationPasses.h b/include/DeserializationPasses.h index 1bc195a..1a38814 100644 --- a/include/DeserializationPasses.h +++ b/include/DeserializationPasses.h @@ -19,6 +19,8 @@ #include #include "mlir/Dialect/Func/IR/FuncOps.h" // from @llvm-project +#include "mlir/IR/BuiltinOps.h" // from @llvm-project +#include "mlir/IR/OwningOpRef.h" // from @llvm-project #include "mlir/Pass/Pass.h" // from @llvm-project namespace mlir { @@ -27,6 +29,13 @@ namespace tosa { std::unique_ptr createTosaDeserializePass(); std::unique_ptr createTosaDeserializeJSONPass(); +// deserializes a tosa file and return an mlir module +// if file_is_fbs is true, then treat file_name as a tosa flatbuffer file +// otherwise, treat file_name as a tosa json file +mlir::OwningOpRef +BuildMlirFromTosaFile(const char *file_name, mlir::MLIRContext *context, + bool file_is_fbs = true); + #define GEN_PASS_REGISTRATION #define GEN_PASS_CLASSES #include "include/DeserializationPasses.h.inc" -- cgit v1.2.1