--- /dev/null
+#ifndef __NEURUN_GRAPH_OPERAND_LOWER_INFO_H__
+#define __NEURUN_GRAPH_OPERAND_LOWER_INFO_H__
+
+#include <stdint.h>
+
+#include "LayoutSet.h"
+
+namespace neurun
+{
+namespace graph
+{
+namespace operand
+{
+
+class LowerInfo
+{
+public:
+ class Shape4D
+ {
+ public:
+ Shape4D(uint32_t n, uint32_t h, uint32_t w, uint32_t c) : _n{n}, _h{h}, _w{w}, _c{c}
+ {
+ // DO NOTHING
+ }
+
+ public:
+ uint32_t n(void) const { return _n; }
+ uint32_t h(void) const { return _h; }
+ uint32_t w(void) const { return _w; }
+ uint32_t c(void) const { return _c; }
+
+ private:
+ uint32_t _n;
+ uint32_t _h;
+ uint32_t _w;
+ uint32_t _c;
+ };
+
+public:
+ LowerInfo(const Shape4D &shape) : _shape{shape}
+ {
+ // DO NOTHING
+ }
+
+public:
+ const Shape4D &shape(void) const { return _shape; }
+ const LayoutSet &def_layouts(void) const { return _def_layouts; }
+ const LayoutSet &use_layouts(void) const { return _use_layouts; }
+
+public:
+ void addDefLayout(const Layout &layout) { _def_layouts.add(layout); }
+ void addUseLayout(const Layout &layout) { _use_layouts.add(layout); }
+
+private:
+ Shape4D _shape;
+ LayoutSet _def_layouts;
+ LayoutSet _use_layouts;
+};
+
+} // namespace operand
+} // namespace graph
+} // namespace neurun
+
+#endif // __NEURUN_GRAPH_OPERAND_LOWED_INFO_H__