CANONICAL_NODE(DepthwiseFilterEncode, DepthwiseFilterEncode)
CANONICAL_NODE(EltwiseAdd, EltwiseAdd)
CANONICAL_NODE(EltwiseMul, EltwiseMul)
+CANONICAL_NODE(EltwiseSub, EltwiseSub)
CANONICAL_NODE(FeatureBiasAdd, BiasAdd<Domain::Feature>)
CANONICAL_NODE(FeatureDecode, FeatureDecode)
CANONICAL_NODE(FeatureEncode, FeatureEncode)
void rhs(Node *node) { return at(1)->node(node); }
};
+/**
+ * @brief Elementwise Sub lhs and rhs
+ */
+class EltwiseSub final : public CanonicalNodeDef<CanonicalOpcode::EltwiseSub, FixedArity<2>::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__
SUCCEED();
}
+
+TEST(EltwiseSubTest, constructor)
+{
+ loco::EltwiseSub eltwise_sub;
+
+ SUCCEED();
+}
// TODO Support DepthwiseFilterEncode
// TODO Support EltwiseAdd
// TODO Support EltwiseMul
+ // TODO Support EltwiseSub
// TODO Support Forward
// TODO Support FeatureBiasAdd
// TODO Support DepthwiseFilterEncode
loco::DataType visit(const loco::EltwiseAdd *node) { return loco::dtype_get(node->lhs()); }
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()); }