#ifndef __LUCI_IR_CIRCLENODEDECL_H__
#define __LUCI_IR_CIRCLENODEDECL_H__
-#include <loco/IR/Node.h>
#include <loco/IR/Dialect.h>
+#include <loco/IR/Node.h>
+#include <loco/IR/NodeMixins.h>
+#include <luci/IR/PropertyShapeStatus.h>
#include "CircleOpcode.h"
#include "CircleNodeVisitor.forward.h"
using NodeName = std::string;
-struct CircleNode : public loco::Node
+struct CircleNode : public loco::Node,
+ public loco::NodeMixin<loco::NodeTrait::DataType>,
+ public loco::NodeMixin<loco::NodeTrait::TensorShape>
{
virtual ~CircleNode() = default;
_quantparam = std::move(quantparam);
}
+ ShapeStatus shape_status(void) const { return _shape_status; }
+ void shape_status(ShapeStatus ss) { _shape_status = ss; }
+
+ int32_t op_version(void) const { return _op_version; }
+ void op_version(int32_t op_version) { _op_version = op_version; }
+
private:
NodeName _name;
std::unique_ptr<CircleQuantParam> _quantparam;
+ ShapeStatus _shape_status{ShapeStatus::UNDEFINED};
+ int32_t _op_version = 1;
};
template <CircleOpcode Code> struct CircleNodeImpl : public CircleNode