TFLTranspose is added to represent Tensorflow Lite Transpose operation.
Signed-off-by: Hyun Sik Yoon <hyunsik.yoon@samsung.com>
// TODO TFLTanh
-// TODO TFLTranspose
+/**
+ * @brief TRANSPOSE in TensorFlow Lite
+ */
+class TFLTranspose final : public FixedArityNode<2, TFLNodeImpl<TFLOpcode::TRANSPOSE>>
+{
+public:
+ TFLTranspose() = default;
+
+public:
+ /// @brief Get the input node to transpose
+ loco::Node *a(void) const { return at(0)->node(); }
+
+ /// @brief Set the input node to transpose
+ void a(loco::Node *node) { at(0)->node(node); }
+
+ loco::Node *perm(void) const { return at(1)->node(); }
+ void perm(loco::Node *node) { at(1)->node(node); }
+};
// TODO define more children of TFLNode
// TODO TFLSqrt
TFL_NODE(SUB, locoex::TFLSub)
// TODO TFLTanh
-// TODO TFLTranspose
+TFL_NODE(TRANSPOSE, locoex::TFLTranspose)
// TODO TFLTanh
-// TODO TFLTranspose
+TEST(TFLTransposeTest, constructor)
+{
+ locoex::TFLTranspose tr_node;
+
+ ASSERT_EQ(tr_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(tr_node.opcode(), locoex::TFLOpcode::TRANSPOSE);
+
+ ASSERT_EQ(tr_node.a(), nullptr);
+ ASSERT_EQ(tr_node.perm(), nullptr);
+}
// TODO TFLTanh
-// TODO TFLTranspose
+bool TFLNodeSummaryBuilder::summary(const locoex::TFLTranspose *node, locop::NodeSummary &s) const
+{
+ s.args().append("a", tbl()->lookup(node->a()));
+ s.args().append("perm", tbl()->lookup(node->perm()));
+ s.state(locop::NodeSummary::State::Complete);
+ return true;
+}
} // namespace