[enco] Decouple ANNContext and Code in ANNGroupBuilder (#1777)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 8 Oct 2018 07:00:58 +0000 (16:00 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 8 Oct 2018 07:00:58 +0000 (16:00 +0900)
This commit revises ANNGroupBuilder to explicitly take ANNContext as a
pointer.

This change will allow users to use their own ANNContext instead of the
one embedded in enco::Code.

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

index 446a429..de2a234 100644 (file)
@@ -405,7 +405,7 @@ enum Compatibility
 class ANNGroupBuilder
 {
 public:
-  ANNGroupBuilder(enco::Code *code) : _code{code}
+  ANNGroupBuilder(ANNContext *ctx) : _ctx{ctx}
   {
     // DO NOTHING
   }
@@ -415,10 +415,10 @@ public:
   Compatibility kind(const Appender &appender) const;
 
 public:
-  void build(void) const;
+  void build(enco::Code *code) const;
 
 private:
-  enco::Code *_code;
+  ANNContext *_ctx;
 };
 
 Compatibility ANNGroupBuilder::kind(const Appender &app) const
@@ -428,13 +428,13 @@ Compatibility ANNGroupBuilder::kind(const Appender &app) const
 
 Compatibility ANNGroupBuilder::kind(const coco::Block *blk) const
 {
-  return (_code->ann()->find(blk) != nullptr) ? COMPATIBLE : INCOMPATIBLE;
+  return (_ctx->find(blk) != nullptr) ? COMPATIBLE : INCOMPATIBLE;
 }
 
-void ANNGroupBuilder::build(void) const
+void ANNGroupBuilder::build(enco::Code *code) const
 {
-  auto m = _code->module();
-  auto d = _code->data();
+  auto m = code->module();
+  auto d = code->data();
 
   ANNOpBuilder op_builder;
 
@@ -458,7 +458,7 @@ void ANNGroupBuilder::build(void) const
 
     if (COMPATIBLE == t)
     {
-      _code->ann()->create(blk);
+      _ctx->create(blk);
     }
   };
 
@@ -494,7 +494,7 @@ void ANNGroupBuilder::build(void) const
       if (cur_append)
       {
         // Update Android NN IR if the current instruction is compatible
-        auto binder = _code->ann()->find(dst_blk);
+        auto binder = _ctx->find(dst_blk);
         assert(binder != nullptr);
         cur_append(binder);
       }
@@ -584,8 +584,8 @@ namespace enco
 
 void SplitPass::runOnCode(enco::Code *code) const
 {
-  ANNGroupBuilder group_builder{code};
-  group_builder.build();
+  ANNGroupBuilder group_builder{code->ann()};
+  group_builder.build(code);
 
   ANNModuleBuilder module_builder;
   module_builder.build(code->ann());