[locop] Show correct opname for canonical dialect (#3768)
author박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Fri, 14 Jun 2019 01:59:33 +0000 (10:59 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Fri, 14 Jun 2019 01:59:33 +0000 (10:59 +0900)
With this commit, LinearV1 formatter shows correct opname for
canonical dialect.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/locop/src/FormattedGraph.cpp

index 84c8478..7fa8be0 100644 (file)
@@ -1,37 +1,46 @@
 #include "locop/FormattedGraph.h"
 
+#include <loco/IR/CanonicalOpcode.h>
+#include <loco/IR/CanonicalDialect.h>
+
 #include <pp/Format.h>
 
 #include <map>
 #include <set>
 
+#include <cassert>
+
 namespace
 {
 
+/**
+ * @brief Return the opname as "<dialect>.<op>"
+ */
 std::string opname(loco::Node *node)
 {
-  // TODO Use Visitor later
-  if (dynamic_cast<loco::Push *>(node))
-  {
-    return "Push";
-  }
-
-  if (dynamic_cast<loco::Pull *>(node))
+  if (node->dialect() == loco::CanonicalDialect::get())
   {
-    return "Pull";
-  }
+    auto canonical_node = dynamic_cast<loco::CanonicalNode *>(node);
 
-  if (dynamic_cast<loco::MaxPool2D *>(node))
-  {
-    return "MaxPool2D";
-  }
+    assert(canonical_node != nullptr);
 
-  if (dynamic_cast<loco::FeatureEncode *>(node))
-  {
-    return "FeatureEncode";
+    switch (canonical_node->opcode())
+    {
+#define CANONICAL_NODE(OPCODE, CLASS) \
+  case loco::CanonicalOpcode::OPCODE: \
+    return "canonical." #OPCODE;
+#include "loco/IR/CanonicalNodes.lst"
+#undef CANONICAL_NODE
+    default:
+      break;
+    };
+
+    return "canonical."
+           "Invalid";
   }
 
-  return "Unknown";
+  return "unknown."
+         "Unknown";
 }
 
 } // namespace