From: 박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 Date: Thu, 27 Jun 2019 07:14:49 +0000 (+0900) Subject: [loco] Introduce Node.opnum API (#4004) X-Git-Tag: nncc_backup~247 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ff692e7ae7069a47047427ca88ab4af9ea194763;p=platform%2Fcore%2Fml%2Fnnfw.git [loco] Introduce Node.opnum API (#4004) This opnum API allows us to check the type of nodes without using dynamic_cast. Signed-off-by: Jonghyun Park --- diff --git a/contrib/loco/include/loco/IR/CanonicalNode.h b/contrib/loco/include/loco/IR/CanonicalNode.h index 99a13e9..38a24a2 100644 --- a/contrib/loco/include/loco/IR/CanonicalNode.h +++ b/contrib/loco/include/loco/IR/CanonicalNode.h @@ -40,6 +40,7 @@ template struct CanonicalNodeImpl : public CanonicalNode { virtual ~CanonicalNodeImpl() = default; + uint32_t opnum(void) const final { return static_cast(Code); } CanonicalOpcode opcode(void) const final { return Code; } }; diff --git a/contrib/loco/include/loco/IR/Node.h b/contrib/loco/include/loco/IR/Node.h index f8219e3..c436478 100644 --- a/contrib/loco/include/loco/IR/Node.h +++ b/contrib/loco/include/loco/IR/Node.h @@ -70,6 +70,8 @@ public: */ virtual const Dialect *dialect(void) const = 0; + virtual uint32_t opnum(void) const = 0; + public: /// @brief Return the number of arguments virtual uint32_t arity(void) const = 0; diff --git a/contrib/loco/src/IR/MockupNode.h b/contrib/loco/src/IR/MockupNode.h index 184c30f..ec56c90 100644 --- a/contrib/loco/src/IR/MockupNode.h +++ b/contrib/loco/src/IR/MockupNode.h @@ -40,6 +40,7 @@ public: public: const loco::Dialect *dialect(void) const final { return MockDialect::get(); } + uint32_t opnum(void) const final { return 0; } uint32_t arity(void) const final { return 1; } Node *arg(uint32_t N) const final { return _arg.node(); } diff --git a/contrib/loco/src/IR/Node.test.cpp b/contrib/loco/src/IR/Node.test.cpp index cc879e7..61d0931 100644 --- a/contrib/loco/src/IR/Node.test.cpp +++ b/contrib/loco/src/IR/Node.test.cpp @@ -81,6 +81,7 @@ TEST(FixedArityNodeTest, constructor) struct DerivedNode final : public loco::FixedArityNode<1, loco::Node> { loco::Dialect *dialect(void) const final { return MockDialect::get(); } + uint32_t opnum(void) const final { return 0; } }; DerivedNode node;