Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / compiler / luci / lang / include / luci / IR / CircleNodeDecl.h
index b87bdf9..967103e 100644 (file)
 #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"
@@ -31,7 +33,9 @@ namespace luci
 
 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;
 
@@ -50,9 +54,17 @@ struct CircleNode : public loco::Node
     _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