[loco] EltwiseSub IR (#6203)
author박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Mon, 5 Aug 2019 07:35:00 +0000 (16:35 +0900)
committer박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 5 Aug 2019 07:35:00 +0000 (16:35 +0900)
* [loco] EltwiseSub IR

This will introduce canonical EltwiseSub IR

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
* todo cmt for shape inference

compiler/loco/include/loco/IR/CanonicalNodes.lst
compiler/loco/include/loco/IR/Nodes.h
compiler/loco/src/IR/Nodes.test.cpp
compiler/loco/src/Service/CanonicalShapeInferenceRule.cpp
compiler/loco/src/Service/TypeInference.cpp

index 6ac903d..b87b2e2 100644 (file)
@@ -15,6 +15,7 @@ CANONICAL_NODE(DepthwiseConv2D, DepthwiseConv2D)
 CANONICAL_NODE(DepthwiseFilterEncode, DepthwiseFilterEncode)
 CANONICAL_NODE(EltwiseAdd, EltwiseAdd)
 CANONICAL_NODE(EltwiseMul, EltwiseMul)
+CANONICAL_NODE(EltwiseSub, EltwiseSub)
 CANONICAL_NODE(FeatureBiasAdd, BiasAdd<Domain::Feature>)
 CANONICAL_NODE(FeatureDecode, FeatureDecode)
 CANONICAL_NODE(FeatureEncode, FeatureEncode)
index df2b060..740cc0d 100644 (file)
@@ -656,6 +656,22 @@ public:
   void rhs(Node *node) { return at(1)->node(node); }
 };
 
+/**
+ * @brief Elementwise Sub lhs and rhs
+ */
+class EltwiseSub final : public CanonicalNodeDef<CanonicalOpcode::EltwiseSub, FixedArity<2>::Mixin>
+{
+public:
+  EltwiseSub() = default;
+
+public:
+  Node *lhs(void) const { return at(0)->node(); }
+  void lhs(Node *node) { return at(0)->node(node); }
+
+  Node *rhs(void) const { return at(1)->node(); }
+  void rhs(Node *node) { return at(1)->node(node); }
+};
+
 } // namespace loco
 
 #endif // __LOCO_IR_NODES_H__
index add26af..025ca89 100644 (file)
@@ -436,3 +436,10 @@ TEST(EltwiseMulTest, constructor)
 
   SUCCEED();
 }
+
+TEST(EltwiseSubTest, constructor)
+{
+  loco::EltwiseSub eltwise_sub;
+
+  SUCCEED();
+}
index d76868d..348e54f 100644 (file)
@@ -48,6 +48,7 @@ public:
   // TODO Support DepthwiseFilterEncode
   // TODO Support EltwiseAdd
   // TODO Support EltwiseMul
+  // TODO Support EltwiseSub
   // TODO Support Forward
   // TODO Support FeatureBiasAdd
 
index 6eb9f6f..67e3c33 100644 (file)
@@ -102,6 +102,7 @@ struct CanonicalTypeForwardAlgorithm final : public loco::CanonicalNodeVisitor<l
   // TODO Support DepthwiseFilterEncode
   loco::DataType visit(const loco::EltwiseAdd *node) { return loco::dtype_get(node->lhs()); }
   loco::DataType visit(const loco::EltwiseMul *node) { return loco::dtype_get(node->lhs()); }
+  loco::DataType visit(const loco::EltwiseSub *node) { return loco::dtype_get(node->lhs()); }
   // TODO Support Forward
   loco::DataType visit(const loco::FeatureBiasAdd *node) { return loco::dtype_get(node->value()); }
   loco::DataType visit(const loco::FeatureDecode *node) { return loco::dtype_get(node->input()); }