From: 박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 Date: Thu, 19 Jul 2018 05:41:32 +0000 (+0900) Subject: [nest] Introduce 'Mul' expression node (#713) X-Git-Tag: nncc_backup~2383 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eccebd0e7d74a214b9019180f2e63baa3936e558;p=platform%2Fcore%2Fml%2Fnnfw.git [nest] Introduce 'Mul' expression node (#713) This commit adds 'MulNode' class under nest::expr namespace to support arithmetic multiplication in nest IR. Signed-off-by: Jonghyun Park --- diff --git a/contrib/nest/include/nest/expr/MulNode.h b/contrib/nest/include/nest/expr/MulNode.h new file mode 100644 index 0000000..cf40c00 --- /dev/null +++ b/contrib/nest/include/nest/expr/MulNode.h @@ -0,0 +1,37 @@ +#ifndef __NEST_EXPR_MUL_NODE_H__ +#define __NEST_EXPR_MUL_NODE_H__ + +#include "nest/expr/Node.h" + +#include + +namespace nest +{ +namespace expr +{ + +class MulNode final : public Node +{ +public: + MulNode(const std::shared_ptr &lhs, const std::shared_ptr &rhs) + : _lhs{lhs}, _rhs{rhs} + { + // DO NOTHING + } + +public: + const MulNode *asMul(void) const override { return this; } + +public: + const std::shared_ptr &lhs(void) const { return _lhs; } + const std::shared_ptr &rhs(void) const { return _rhs; } + +private: + std::shared_ptr const _lhs; + std::shared_ptr const _rhs; +}; + +} // namespace expr +} // namespace nest + +#endif // __NEST_EXPR_MUL_NODE_H__ diff --git a/contrib/nest/include/nest/expr/Node.def b/contrib/nest/include/nest/expr/Node.def index baf9aaa..0429517 100644 --- a/contrib/nest/include/nest/expr/Node.def +++ b/contrib/nest/include/nest/expr/Node.def @@ -6,3 +6,4 @@ EXPR(Var) EXPR(Deref) EXPR(Add) +EXPR(Mul) diff --git a/contrib/nest/src/expr/MulNode.test.cpp b/contrib/nest/src/expr/MulNode.test.cpp new file mode 100644 index 0000000..4c4f974 --- /dev/null +++ b/contrib/nest/src/expr/MulNode.test.cpp @@ -0,0 +1,27 @@ +#include "nest/expr/MulNode.h" + +#include + +#include + +namespace +{ +struct DummyNode final : public nest::expr::Node +{ +}; +} + +TEST(MUL_NODE, cast) +{ + auto left = std::make_shared(); + auto right = std::make_shared(); + + auto derived = std::make_shared(left, right); + std::shared_ptr base = derived; + + ASSERT_NE(derived.get(), nullptr); + ASSERT_EQ(base->asMul(), derived.get()); + + ASSERT_EQ(derived->lhs().get(), left.get()); + ASSERT_EQ(derived->rhs().get(), right.get()); +}