[enco] Introduce BypassGenerationPass (#3062)
author박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 11 Mar 2019 10:35:11 +0000 (19:35 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 11 Mar 2019 10:35:11 +0000 (19:35 +0900)
Let's introduce and use BypassGenerationPass in enco backend
implementation.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/enco/core/src/Backend.cpp
contrib/enco/core/src/Transforms/Optimizations.h

index 65e142a..6165bba 100644 (file)
@@ -121,6 +121,7 @@ void BackendImpl::compile(coco::Module *m, coco::Data *d)
   pipeline.append(make_unique<CopyLoweringPass>());
   // Lower ConcatF as Shuffle if it is not delegated to NNAPI yet
   pipeline.append(make_unique<ConcatLoweringPass>());
+  pipeline.append(make_unique<BypassGenerationPass>());
 
   // Apply transforms in the pipeline
   for (uint32_t n = 0; n < pipeline.size(); ++n)
@@ -139,8 +140,6 @@ void BackendImpl::compile(coco::Module *m, coco::Data *d)
   // that share the same bag as their underlying bag
   assert(!has_inout_bag(code(sess)->module()));
 
-  generate_bypass_shuffle(code(sess));
-
   eliminate_free_instr(code(sess));
   // NOTE Free Op Elimination should be applied after Free Instr Elimination
   //      - Free Instr Elimination may generate additional free Op(s)
index d47e43b..7cfc230 100644 (file)
@@ -18,6 +18,7 @@
 #define __ENCO_OPTIMIZATIONS_H__
 
 #include "Code.h"
+#include "Pass.h"
 
 namespace enco
 {
@@ -45,6 +46,16 @@ namespace enco
  */
 void generate_bypass_shuffle(enco::Code *code);
 
+struct BypassGenerationPass final : public Pass
+{
+  PASS_CTOR(BypassGenerationPass)
+  {
+    // DO NOTHING
+  }
+
+  void run(const SessionID &sess) const override { generate_bypass_shuffle(code(sess)); }
+};
+
 /**
  * @brief Update the base bag of each object if possible
  *