[neurun] Introduce OpCode enum type (#8977)
author이한종/On-Device Lab(SR)/Engineer/삼성전자 <hanjoung.lee@samsung.com>
Mon, 18 Nov 2019 04:21:38 +0000 (13:21 +0900)
committer오형석/On-Device Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Mon, 18 Nov 2019 04:21:38 +0000 (13:21 +0900)
Introduce OpCode enum type for operations. Each operation has its unique
OpCode value.

Resolve #8858

Signed-off-by: Hanjoung Lee <hanjoung.lee@samsung.com>
65 files changed:
runtime/neurun/core/include/model/OpCode.h [new file with mode: 0644]
runtime/neurun/core/include/model/Operation.h
runtime/neurun/core/include/model/Subgraph.h
runtime/neurun/core/include/model/operation/Abs.h
runtime/neurun/core/include/model/operation/Add.h
runtime/neurun/core/include/model/operation/ArgMax.h
runtime/neurun/core/include/model/operation/AvgPool2D.h
runtime/neurun/core/include/model/operation/BatchToSpaceND.h
runtime/neurun/core/include/model/operation/Cast.h
runtime/neurun/core/include/model/operation/Comparison.h
runtime/neurun/core/include/model/operation/Concat.h
runtime/neurun/core/include/model/operation/Conv2D.h
runtime/neurun/core/include/model/operation/Custom.h
runtime/neurun/core/include/model/operation/DepthToSpace.h
runtime/neurun/core/include/model/operation/DepthwiseConv2D.h
runtime/neurun/core/include/model/operation/Dequantize.h
runtime/neurun/core/include/model/operation/Div.h
runtime/neurun/core/include/model/operation/EmbeddingLookup.h
runtime/neurun/core/include/model/operation/Exp.h
runtime/neurun/core/include/model/operation/Floor.h
runtime/neurun/core/include/model/operation/FullyConnected.h
runtime/neurun/core/include/model/operation/Gather.h
runtime/neurun/core/include/model/operation/HashtableLookup.h
runtime/neurun/core/include/model/operation/InstanceNorm.h
runtime/neurun/core/include/model/operation/L2Normalization.h
runtime/neurun/core/include/model/operation/L2Pool2D.h
runtime/neurun/core/include/model/operation/LSTM.h
runtime/neurun/core/include/model/operation/LocalResponseNormalization.h
runtime/neurun/core/include/model/operation/LogicalAnd.h
runtime/neurun/core/include/model/operation/LogicalNot.h
runtime/neurun/core/include/model/operation/LogicalOr.h
runtime/neurun/core/include/model/operation/Logistic.h
runtime/neurun/core/include/model/operation/MaxPool2D.h
runtime/neurun/core/include/model/operation/Mean.h
runtime/neurun/core/include/model/operation/Mul.h
runtime/neurun/core/include/model/operation/Neg.h
runtime/neurun/core/include/model/operation/PReLU.h
runtime/neurun/core/include/model/operation/Pack.h
runtime/neurun/core/include/model/operation/Pad.h
runtime/neurun/core/include/model/operation/Permute.h
runtime/neurun/core/include/model/operation/RNN.h
runtime/neurun/core/include/model/operation/RSQRT.h
runtime/neurun/core/include/model/operation/ReLU.h
runtime/neurun/core/include/model/operation/ReLU1.h
runtime/neurun/core/include/model/operation/ReLU6.h
runtime/neurun/core/include/model/operation/ReduceMax.h
runtime/neurun/core/include/model/operation/ReduceMin.h
runtime/neurun/core/include/model/operation/ReduceSum.h
runtime/neurun/core/include/model/operation/Reshape.h
runtime/neurun/core/include/model/operation/ResizeBilinear.h
runtime/neurun/core/include/model/operation/SQRT.h
runtime/neurun/core/include/model/operation/Softmax.h
runtime/neurun/core/include/model/operation/SpaceToBatchND.h
runtime/neurun/core/include/model/operation/SpaceToDepth.h
runtime/neurun/core/include/model/operation/Split.h
runtime/neurun/core/include/model/operation/SquaredDifference.h
runtime/neurun/core/include/model/operation/Squeeze.h
runtime/neurun/core/include/model/operation/StridedSlice.h
runtime/neurun/core/include/model/operation/Sub.h
runtime/neurun/core/include/model/operation/Tanh.h
runtime/neurun/core/include/model/operation/TopKV2.h
runtime/neurun/core/include/model/operation/Transpose.h
runtime/neurun/core/include/model/operation/TransposeConv.h
runtime/neurun/core/include/model/operation/Unpack.h
runtime/neurun/test/graph/MockNode.h

diff --git a/runtime/neurun/core/include/model/OpCode.h b/runtime/neurun/core/include/model/OpCode.h
new file mode 100644 (file)
index 0000000..32a8f9e
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __NEURUN_MODEL_OP_CODE_H__
+#define __NEURUN_MODEL_OP_CODE_H__
+
+#include <unordered_map>
+
+namespace neurun
+{
+namespace model
+{
+
+enum class OpCode
+{
+  Invalid,             //< Unused
+#define OP(Name) Name, //< All operations
+#include "Operations.lst"
+#undef OP
+  Subgraph, //< Subgraph is treated specially
+  COUNT
+};
+
+} // namespace model
+} // namespace neurun
+
+#endif // __NEURUN_MODEL_OP_CODE_H__
index c829f35..b206879 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <memory>
 
+#include "model/OpCode.h"
 #include "model/Operand.h"
 #include "model/OperandIndexSequence.h"
 #include "model/OperandConstraint.h"
@@ -55,6 +56,7 @@ public:
 public:
   virtual void accept(OperationVisitor &v) const = 0;
   virtual std::string name() const = 0;
+  virtual OpCode opcode() const = 0;
 
 public:
   void replaceInput(const OperandIndex &from, const OperandIndex &to);
index bf3f059..b9061db 100644 (file)
@@ -54,6 +54,7 @@ public:
   void accept(OperationVisitor &v) const override;
 
   virtual std::string name(void) const override { return "Subgraph"; }
+  OpCode opcode(void) const final { return OpCode::Subgraph; }
 
 public:
   void appendOperation(const OperationIndex &index, const Operation &node)
index 40f635f..07baa4e 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Abs"; }
+  OpCode opcode() const final { return OpCode::Abs; }
 };
 
 } // namespace operation
index fc3403d..4f0b575 100644 (file)
@@ -47,6 +47,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Add"; }
+  OpCode opcode() const final { return OpCode::Add; }
 
 public:
   const Param &param() const { return _param; }
index b9ad508..ac25a0d 100644 (file)
@@ -46,6 +46,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "ArgMax"; }
+  OpCode opcode() const final { return OpCode::ArgMax; }
 
 public:
   const Param &param() const { return _param; }
index 860b019..b7af571 100644 (file)
@@ -54,6 +54,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "AvgPool2D"; }
+  OpCode opcode() const final { return OpCode::AvgPool2D; }
 
 public:
   const Param &param() const { return _param; }
index 80e9488..5e9c296 100644 (file)
@@ -41,6 +41,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "BatchToSpaceND"; }
+  OpCode opcode() const final { return OpCode::BatchToSpaceND; }
 };
 
 } // namespace operation
index 215da97..3d112bb 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Cast"; }
+  OpCode opcode() const final { return OpCode::Cast; }
 };
 
 } // namespace operation
index 57d1f07..4b04291 100644 (file)
@@ -57,6 +57,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Comparison"; }
+  OpCode opcode() const final { return OpCode::Comparison; }
 
 public:
   const Param &param() const { return _param; }
index 44b93f3..864c036 100644 (file)
@@ -43,6 +43,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Concat"; }
+  OpCode opcode() const final { return OpCode::Concat; }
 
 public:
   const Param &param() const { return _param; }
index 1a54342..256bf68 100644 (file)
@@ -53,6 +53,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Conv2D"; }
+  OpCode opcode() const final { return OpCode::Conv2D; }
 
 public:
   const Param &param() const { return _param; }
index 6bab1f7..eadae20 100644 (file)
@@ -46,6 +46,7 @@ public:
   const std::string &id() const;
 
   std::string name() const override;
+  OpCode opcode() const final { return OpCode::Custom; }
 
   /**
    * @return user-provided data
index 57c8343..d0609da 100644 (file)
@@ -48,6 +48,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "DepthToSpace"; }
+  OpCode opcode() const final { return OpCode::DepthToSpace; }
 
 public:
   const Param &param() const { return _param; }
index 4d135bc..519c59b 100644 (file)
@@ -54,6 +54,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "DepthwiseConv2D"; }
+  OpCode opcode() const final { return OpCode::DepthwiseConv2D; }
 
 public:
   const Param &param() const { return _param; }
index 9ab7b4c..76dc776 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Dequantize"; }
+  OpCode opcode() const final { return OpCode::Dequantize; }
 };
 
 } // namespace operation
index 5e17a6f..fb76efa 100644 (file)
@@ -47,6 +47,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Div"; }
+  OpCode opcode() const final { return OpCode::Div; }
 
 public:
   const Param &param() const { return _param; }
index 732d1b7..2f159fe 100644 (file)
@@ -41,6 +41,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "EmbeddingLookup"; }
+  OpCode opcode() const final { return OpCode::EmbeddingLookup; }
 };
 
 } // namespace operation
index 077c57a..b314734 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Exp"; }
+  OpCode opcode() const final { return OpCode::Exp; }
 };
 
 } // namespace operation
index 83b851a..2e69c75 100644 (file)
@@ -42,6 +42,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Floor"; }
+  OpCode opcode() const final { return OpCode::Floor; }
 };
 
 } // namespace operation
index 285cfb5..d75c0c8 100644 (file)
@@ -51,6 +51,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "FullyConnected"; }
+  OpCode opcode() const final { return OpCode::FullyConnected; }
 
 public:
   const Param &param() const { return _param; }
index 0f19157..0f73d83 100644 (file)
@@ -49,6 +49,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Gather"; }
+  OpCode opcode() const final { return OpCode::Gather; }
 
 public:
   const Param &param() const { return _param; }
index a8f5606..4eb0314 100644 (file)
@@ -48,6 +48,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "HashTableLookup"; }
+  OpCode opcode() const final { return OpCode::HashtableLookup; }
 };
 
 } // namespace operation
index 2370b61..b19f73b 100644 (file)
@@ -50,6 +50,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "InstanceNorm"; }
+  OpCode opcode() const final { return OpCode::InstanceNorm; }
 
 public:
   const Param &param() const { return _param; }
index b51336b..273874a 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "L2Normalization"; }
+  OpCode opcode() const final { return OpCode::L2Normalization; }
 };
 
 } // namespace operation
index 50d2e21..0415c96 100644 (file)
@@ -53,6 +53,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "L2Pool2D"; }
+  OpCode opcode() const final { return OpCode::L2Pool2D; }
 
 public:
   const Param &param() const { return _param; }
index e97fe12..ce28851 100644 (file)
@@ -74,6 +74,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "LSTM"; }
+  OpCode opcode() const final { return OpCode::LSTM; }
 
 public:
   const Param &param() const { return _param; }
index a906316..998b11d 100644 (file)
@@ -51,6 +51,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "LocalResponseNormalization"; }
+  OpCode opcode() const final { return OpCode::LocalResponseNormalization; }
 
 public:
   const Param &param() const { return _param; }
index ce7b8da..c88364b 100644 (file)
@@ -41,6 +41,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "LogicalAnd"; }
+  OpCode opcode() const final { return OpCode::LogicalAnd; }
 };
 
 } // namespace operation
index 301edd8..8caf75b 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "LogicalNot"; }
+  OpCode opcode() const final { return OpCode::LogicalNot; }
 };
 
 } // namespace operation
index a15ae97..21082eb 100644 (file)
@@ -41,6 +41,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "LogicalOr"; }
+  OpCode opcode() const final { return OpCode::LogicalOr; }
 };
 
 } // namespace operation
index 68cd1aa..756a963 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Logistic"; }
+  OpCode opcode() const final { return OpCode::Logistic; }
 };
 
 } // namespace operation
index 4388788..c793a7b 100644 (file)
@@ -53,6 +53,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "MaxPool2D"; }
+  OpCode opcode() const final { return OpCode::MaxPool2D; }
 
 public:
   const Param &param() const { return _param; }
index 22c2e50..ed8a3d5 100644 (file)
@@ -46,6 +46,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Mean"; }
+  OpCode opcode() const final { return OpCode::Mean; }
 
 public:
   const Param &param() const { return _param; }
index 0675988..c41f175 100644 (file)
@@ -47,6 +47,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Mul"; }
+  OpCode opcode() const final { return OpCode::Mul; }
 
 public:
   const Param &param() const { return _param; }
index 401414d..6bc7111 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Neg"; }
+  OpCode opcode() const final { return OpCode::Neg; }
 };
 
 } // namespace operation
index 76a76ac..26bb8f3 100644 (file)
@@ -41,6 +41,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "PReLU"; }
+  OpCode opcode() const final { return OpCode::PReLU; }
 };
 
 } // namespace operation
index ce7ff7f..94683fb 100644 (file)
@@ -39,6 +39,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Pack"; }
+  OpCode opcode() const final { return OpCode::Pack; }
 
 public:
   const Param &param() const { return _param; }
index 7594098..07eec7b 100644 (file)
@@ -42,6 +42,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Pad"; }
+  OpCode opcode() const final { return OpCode::Pad; }
 };
 
 } // namespace operation
index 2ba4665..33a58ca 100644 (file)
@@ -53,6 +53,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Permute"; }
+  OpCode opcode() const final { return OpCode::Permute; }
 
 public:
   Permute(const OperandIndex &input, const OperandIndex &output,
index 1b7ec89..8ec76e4 100644 (file)
@@ -55,6 +55,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "RNN"; }
+  OpCode opcode() const final { return OpCode::RNN; }
 
 public:
   const Param &param() const { return _param; }
index 243fe94..02616ba 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "RSQRT"; }
+  OpCode opcode() const final { return OpCode::RSQRT; }
 };
 
 } // namespace operation
index 6d7cbd5..287c8ee 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "ReLU"; }
+  OpCode opcode() const final { return OpCode::ReLU; }
 };
 
 } // namespace operation
index b28bab1..bab3847 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "ReLU1"; }
+  OpCode opcode() const final { return OpCode::ReLU1; }
 };
 
 } // namespace operation
index 9bf9eb1..f3cdf93 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "ReLU6"; }
+  OpCode opcode() const final { return OpCode::ReLU6; }
 };
 
 } // namespace operation
index bb52fcb..6361902 100644 (file)
@@ -48,6 +48,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "ReduceMax"; }
+  OpCode opcode() const final { return OpCode::ReduceMax; }
 
 public:
   const Param &param() const { return _param; }
index 7bbeb88..7c25c2d 100644 (file)
@@ -48,6 +48,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "ReduceMin"; }
+  OpCode opcode() const final { return OpCode::ReduceMin; }
 
 public:
   const Param &param() const { return _param; }
index f3162d6..26ce58f 100644 (file)
@@ -46,6 +46,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "ReduceSum"; }
+  OpCode opcode() const final { return OpCode::ReduceSum; }
 
 public:
   const Param &param() const { return _param; }
index d32789e..3a9c01f 100644 (file)
@@ -42,6 +42,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Reshape"; }
+  OpCode opcode() const final { return OpCode::Reshape; }
 };
 
 } // namespace operation
index 685d1e1..1ac9aaf 100644 (file)
@@ -49,6 +49,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "ResizeBilinear"; }
+  OpCode opcode() const final { return OpCode::ResizeBilinear; }
 
 public:
   const Param &param() const { return _param; }
index bd97397..4a2ece8 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "SQRT"; }
+  OpCode opcode() const final { return OpCode::SQRT; }
 };
 
 } // namespace operation
index af4fc99..a6bc228 100644 (file)
@@ -48,6 +48,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "SoftMax"; }
+  OpCode opcode() const final { return OpCode::Softmax; }
 
 public:
   const Param &param() const { return _param; }
index 63ed2c7..79218c1 100644 (file)
@@ -44,6 +44,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "SpaceToBatchND"; }
+  OpCode opcode() const final { return OpCode::SpaceToBatchND; }
 };
 
 } // namespace operation
index c28517b..0b63260 100644 (file)
@@ -48,6 +48,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "SpaceToDepth"; }
+  OpCode opcode() const final { return OpCode::SpaceToDepth; }
 
 public:
   const Param &param() const { return _param; }
index b6d5929..ca96546 100644 (file)
@@ -45,6 +45,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Split"; }
+  OpCode opcode() const final { return OpCode::Split; }
 
 public:
   const Param &param() const { return _param; }
index 85ccb47..352e924 100644 (file)
@@ -41,6 +41,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "SquaredDifference"; }
+  OpCode opcode() const final { return OpCode::SquaredDifference; }
 };
 
 } // namespace operation
index 0d2a238..e719ce9 100644 (file)
@@ -49,6 +49,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Squeeze"; }
+  OpCode opcode() const final { return OpCode::Squeeze; }
   const Param &param() const { return _param; }
 
 private:
index 8cb9a52..13f1398 100644 (file)
@@ -53,6 +53,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "StridedSlice"; }
+  OpCode opcode() const final { return OpCode::StridedSlice; }
 
 public:
   const Param &param() const { return _param; }
index 6fc4b92..931f5e0 100644 (file)
@@ -47,6 +47,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Sub"; }
+  OpCode opcode() const final { return OpCode::Sub; }
 
 public:
   const Param &param() const { return _param; }
index 313c6b7..4458d19 100644 (file)
@@ -40,6 +40,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Tanh"; }
+  OpCode opcode() const final { return OpCode::Tanh; }
 };
 
 } // namespace operation
index f36a491..2145df7 100644 (file)
@@ -54,6 +54,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "TopKV2"; }
+  OpCode opcode() const final { return OpCode::TopKV2; }
 
 public:
   const Param &param() const { return _param; }
index ff32686..ef661c9 100644 (file)
@@ -51,6 +51,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Transpose"; }
+  OpCode opcode() const final { return OpCode::Transpose; }
 
 public:
   const Param &param() const { return _param; }
index b59df06..9c9ea84 100644 (file)
@@ -52,6 +52,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "TransposeConv"; }
+  OpCode opcode() const final { return OpCode::TransposeConv; }
 
 public:
   const Param &param() const { return _param; }
index a1ece87..55e76b6 100644 (file)
@@ -45,6 +45,7 @@ public:
 public:
   void accept(OperationVisitor &v) const override;
   std::string name() const override { return "Unpack"; }
+  OpCode opcode() const final { return OpCode::Unpack; }
 
 public:
   const Param &param() const { return _param; }
index b0b8b71..fbb01d3 100644 (file)
@@ -39,6 +39,7 @@ public:
 public:
   void accept(neurun::model::OperationVisitor &) const override {}
   std::string name() const override { return "SimpleMock"; }
+  neurun::model::OpCode opcode() const final { return neurun::model::OpCode::Invalid; }
 };
 
 } // namespace graph