From c406301dd9657d333d5b59cc934a813e1c364d77 Mon Sep 17 00:00:00 2001 From: "Alexander Efimov/AI Tools Lab/./Samsung Electronics" Date: Tue, 20 Aug 2019 13:41:14 +0300 Subject: [PATCH] Add getter for opcode name (#6658) Added getter of opcode name in string format Signed-off-by: Efimov Alexander --- compiler/mir/include/mir/Operation.h | 5 +++++ compiler/mir/src/Operation.cpp | 16 ++++++++++++++++ compiler/mir/unittests/Operation.cpp | 7 +++++++ 3 files changed, 28 insertions(+) diff --git a/compiler/mir/include/mir/Operation.h b/compiler/mir/include/mir/Operation.h index b70f36b..415cb56 100644 --- a/compiler/mir/include/mir/Operation.h +++ b/compiler/mir/include/mir/Operation.h @@ -186,6 +186,11 @@ private: std::deque _outputs; }; +/** + * @return the opcode of operation in string format, like "Add", "Conv2d", etc. + */ +const std::string &getTypeName(Operation::Type type); + } // namespace mir #endif //_MIR_OPERATION_H_ diff --git a/compiler/mir/src/Operation.cpp b/compiler/mir/src/Operation.cpp index 135d81c..cf613b3 100644 --- a/compiler/mir/src/Operation.cpp +++ b/compiler/mir/src/Operation.cpp @@ -48,4 +48,20 @@ void Operation::accept(IVisitor *v) } } +const std::string &getTypeName(Operation::Type type) +{ + switch (type) + { +#define HANDLE_OP(OpType, OpClass) \ + case Operation::Type::OpType: \ + { \ + static const std::string name(#OpType); \ + return name; \ + } +#include "mir/Operations.inc" +#undef HANDLE_OP + } + throw std::runtime_error("unexpected opcode"); +} + } // namespace mir diff --git a/compiler/mir/unittests/Operation.cpp b/compiler/mir/unittests/Operation.cpp index cc6ed39..e8b769e 100644 --- a/compiler/mir/unittests/Operation.cpp +++ b/compiler/mir/unittests/Operation.cpp @@ -80,3 +80,10 @@ TEST(Operation, ConcatAxisTest) ops::ConcatOp op_n3({input1.getOutput(0), input2.getOutput(0)}, -3); ASSERT_EQ(op_n3.getAxis(), 0); } + +TEST(Operation, OpNameTest) +{ +#define HANDLE_OP(OpType, OpClass) ASSERT_EQ(getTypeName(Operation::Type::OpType), #OpType); +#include "mir/Operations.inc" +#undef HANDLE_OP +} -- 2.7.4