From d6a7dfe253456f30693309fc42069e339d40e5a3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=84=B8=ED=9D=AC/On-Device=20Lab=28SR=29/Princip?= =?utf8?q?al=20Engineer/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Mon, 5 Aug 2019 16:35:00 +0900 Subject: [PATCH] [loco] EltwiseSub IR (#6203) * [loco] EltwiseSub IR This will introduce canonical EltwiseSub IR Signed-off-by: SaeHie Park * todo cmt for shape inference --- compiler/loco/include/loco/IR/CanonicalNodes.lst | 1 + compiler/loco/include/loco/IR/Nodes.h | 16 ++++++++++++++++ compiler/loco/src/IR/Nodes.test.cpp | 7 +++++++ .../loco/src/Service/CanonicalShapeInferenceRule.cpp | 1 + compiler/loco/src/Service/TypeInference.cpp | 1 + 5 files changed, 26 insertions(+) diff --git a/compiler/loco/include/loco/IR/CanonicalNodes.lst b/compiler/loco/include/loco/IR/CanonicalNodes.lst index 6ac903d..b87b2e2 100644 --- a/compiler/loco/include/loco/IR/CanonicalNodes.lst +++ b/compiler/loco/include/loco/IR/CanonicalNodes.lst @@ -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) CANONICAL_NODE(FeatureDecode, FeatureDecode) CANONICAL_NODE(FeatureEncode, FeatureEncode) diff --git a/compiler/loco/include/loco/IR/Nodes.h b/compiler/loco/include/loco/IR/Nodes.h index df2b060..740cc0d 100644 --- a/compiler/loco/include/loco/IR/Nodes.h +++ b/compiler/loco/include/loco/IR/Nodes.h @@ -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::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__ diff --git a/compiler/loco/src/IR/Nodes.test.cpp b/compiler/loco/src/IR/Nodes.test.cpp index add26af..025ca89 100644 --- a/compiler/loco/src/IR/Nodes.test.cpp +++ b/compiler/loco/src/IR/Nodes.test.cpp @@ -436,3 +436,10 @@ TEST(EltwiseMulTest, constructor) SUCCEED(); } + +TEST(EltwiseSubTest, constructor) +{ + loco::EltwiseSub eltwise_sub; + + SUCCEED(); +} diff --git a/compiler/loco/src/Service/CanonicalShapeInferenceRule.cpp b/compiler/loco/src/Service/CanonicalShapeInferenceRule.cpp index d76868d..348e54f 100644 --- a/compiler/loco/src/Service/CanonicalShapeInferenceRule.cpp +++ b/compiler/loco/src/Service/CanonicalShapeInferenceRule.cpp @@ -48,6 +48,7 @@ public: // TODO Support DepthwiseFilterEncode // TODO Support EltwiseAdd // TODO Support EltwiseMul + // TODO Support EltwiseSub // TODO Support Forward // TODO Support FeatureBiasAdd diff --git a/compiler/loco/src/Service/TypeInference.cpp b/compiler/loco/src/Service/TypeInference.cpp index 6eb9f6f..67e3c33 100644 --- a/compiler/loco/src/Service/TypeInference.cpp +++ b/compiler/loco/src/Service/TypeInference.cpp @@ -102,6 +102,7 @@ struct CanonicalTypeForwardAlgorithm final : public loco::CanonicalNodeVisitorlhs()); } 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()); } -- 2.7.4