[loco] Introduce EltwiseSqrt (#6520)
author박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Tue, 13 Aug 2019 01:29:47 +0000 (10:29 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Tue, 13 Aug 2019 01:29:47 +0000 (10:29 +0900)
This will introduce IR for elementwise Sqrt

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
compiler/loco/include/loco/IR/CanonicalNodes.lst
compiler/loco/include/loco/IR/Nodes.h
compiler/loco/src/IR/Nodes.test.cpp

index 49808d3..094ee81 100644 (file)
@@ -16,6 +16,7 @@ CANONICAL_NODE(DepthwiseFilterEncode, DepthwiseFilterEncode)
 CANONICAL_NODE(EltwiseAdd, EltwiseAdd)
 CANONICAL_NODE(EltwiseDiv, EltwiseDiv)
 CANONICAL_NODE(EltwiseMul, EltwiseMul)
+CANONICAL_NODE(EltwiseSqrt, EltwiseSqrt)
 CANONICAL_NODE(EltwiseSub, EltwiseSub)
 CANONICAL_NODE(FeatureBiasAdd, BiasAdd<Domain::Feature>)
 CANONICAL_NODE(FeatureDecode, FeatureDecode)
index 535136d..ea65904 100644 (file)
@@ -714,6 +714,20 @@ public:
   void rhs(Node *node) { return at(1)->node(node); }
 };
 
+/**
+ * @brief Elementwise Sqrt of input
+ */
+class EltwiseSqrt final
+    : public CanonicalNodeDef<CanonicalOpcode::EltwiseSqrt, FixedArity<1>::Mixin>
+{
+public:
+  EltwiseSqrt() = default;
+
+public:
+  Node *input(void) const { return at(0)->node(); }
+  void input(Node *node) { at(0)->node(node); }
+};
+
 } // namespace loco
 
 #endif // __LOCO_IR_NODES_H__
index 06be67f..3d2a4d4 100644 (file)
@@ -450,3 +450,13 @@ TEST(EltwiseDivTest, constructor)
 
   SUCCEED();
 }
+
+TEST(EltwiseSqrtTest, constructor)
+{
+  loco::EltwiseSqrt sqrt_node;
+
+  ASSERT_EQ(sqrt_node.dialect(), loco::CanonicalDialect::get());
+  ASSERT_EQ(sqrt_node.opcode(), loco::CanonicalOpcode::EltwiseSqrt);
+
+  ASSERT_EQ(sqrt_node.input(), nullptr);
+}