[enco/frontend] Functions to set coco module IO (#2190)
author박세희/동작제어Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Fri, 9 Nov 2018 07:04:12 +0000 (16:04 +0900)
committer박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Fri, 9 Nov 2018 07:04:12 +0000 (16:04 +0900)
This will add two methods set_module_inputs and set_module_outputs to
set coco::Module inputs and outputs from TensorContext and TensorBags

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
contrib/enco/frontend/tflite/src/Frontend.cpp

index 7e1417c..1a75596 100644 (file)
@@ -17,6 +17,7 @@
 #include "Frontend.h"
 #include "IRBuilder.h"
 
+#include <nncc/core/ADT/tensor/LexicalLayout.h>
 #include <nncc/core/ADT/tensor/Shape.h>
 
 #include <map>
@@ -115,6 +116,54 @@ private:
 };
 
 /**
+ * @brief Set module input operands and its information
+ */
+void set_module_inputs(coco::Module *m, TensorContext &ctx, TensorBags &bags,
+                       const IndexVector &inputs)
+{
+  for (uint32_t n = 0; n < inputs.size(); ++n)
+  {
+    auto const tensor_id = inputs.at(n);
+
+    auto const tensor_name = ctx.name(tensor_id);
+    auto const tensor_shape = ctx.shape(tensor_id);
+    auto const tensor_bag = bags.bag(tensor_id);
+
+    auto input = m->entity()->input()->create(tensor_shape);
+
+    input->name(tensor_name);
+    input->bag(tensor_bag);
+    input->reorder<tensor::LexicalLayout>();
+
+    m->input()->insert(input);
+  }
+}
+
+/**
+ * @brief Set module output operands and its information
+ */
+void set_module_outputs(coco::Module *m, TensorContext &ctx, TensorBags &bags,
+                        const IndexVector &outputs)
+{
+  for (uint32_t n = 0; n < outputs.size(); ++n)
+  {
+    auto const tensor_id = outputs.at(n);
+
+    auto const tensor_name = ctx.name(tensor_id);
+    auto const tensor_shape = ctx.shape(tensor_id);
+    auto const tensor_bag = bags.bag(tensor_id);
+
+    auto output = m->entity()->output()->create(tensor_shape);
+
+    output->name(tensor_name);
+    output->bag(tensor_bag);
+    output->reorder<tensor::LexicalLayout>();
+
+    m->output()->insert(output);
+  }
+}
+
+/**
  * @brief Class to store context to build IR from tflite
  */
 class GraphBuilderContext