// automatically generated by the FlatBuffers compiler, do not modify #ifndef FLATBUFFERS_GENERATED_TOSA_TOSA_H_ #define FLATBUFFERS_GENERATED_TOSA_TOSA_H_ #include "flatbuffers/flatbuffers.h" namespace tosa { struct PoolAttribute; struct PoolAttributeBuilder; struct ConvAttribute; struct ConvAttributeBuilder; struct TransposeConvAttribute; struct TransposeConvAttributeBuilder; struct PadAttribute; struct PadAttributeBuilder; struct AxisAttribute; struct AxisAttributeBuilder; struct ReshapeAttribute; struct ReshapeAttributeBuilder; struct SliceAttribute; struct SliceAttributeBuilder; struct TileAttribute; struct TileAttributeBuilder; struct ResizeAttribute; struct ResizeAttributeBuilder; struct ClampAttribute; struct ClampAttributeBuilder; struct RescaleAttribute; struct RescaleAttributeBuilder; struct MulAttribute; struct MulAttributeBuilder; struct ArithmeticRightShiftAttribute; struct ArithmeticRightShiftAttributeBuilder; struct CondIfAttribute; struct CondIfAttributeBuilder; struct WhileLoopAttribute; struct WhileLoopAttributeBuilder; struct TransposeAttribute; struct TransposeAttributeBuilder; struct TableAttribute; struct TableAttributeBuilder; struct UnaryQuantInfo; struct UnaryQuantInfoBuilder; struct ConvQuantInfo; struct ConvQuantInfoBuilder; struct MatMulQuantInfo; struct MatMulQuantInfoBuilder; struct PadQuantInfo; struct PadQuantInfoBuilder; struct Version; struct VersionBuilder; struct TosaTensor; struct TosaTensorBuilder; struct TosaOperator; struct TosaOperatorBuilder; struct TosaBasicBlock; struct TosaBasicBlockBuilder; struct TosaGraph; struct TosaGraphBuilder; enum DType : uint32_t { DType_UNKNOWN = 0, DType_BOOL = 1, DType_UINT8 = 2, DType_INT4 = 3, DType_INT8 = 4, DType_INT16 = 5, DType_INT32 = 6, DType_INT48 = 7, DType_FLOAT = 8, DType_MIN = DType_UNKNOWN, DType_MAX = DType_FLOAT }; inline const DType (&EnumValuesDType())[9] { static const DType values[] = { DType_UNKNOWN, DType_BOOL, DType_UINT8, DType_INT4, DType_INT8, DType_INT16, DType_INT32, DType_INT48, DType_FLOAT }; return values; } inline const char * const *EnumNamesDType() { static const char * const names[10] = { "UNKNOWN", "BOOL", "UINT8", "INT4", "INT8", "INT16", "INT32", "INT48", "FLOAT", nullptr }; return names; } inline const char *EnumNameDType(DType e) { if (flatbuffers::IsOutRange(e, DType_UNKNOWN, DType_FLOAT)) return ""; const size_t index = static_cast(e); return EnumNamesDType()[index]; } enum ResizeMode : uint32_t { ResizeMode_UNKNOWN = 0, ResizeMode_NEAREST = 1, ResizeMode_BILINEAR = 2, ResizeMode_MIN = ResizeMode_UNKNOWN, ResizeMode_MAX = ResizeMode_BILINEAR }; inline const ResizeMode (&EnumValuesResizeMode())[3] { static const ResizeMode values[] = { ResizeMode_UNKNOWN, ResizeMode_NEAREST, ResizeMode_BILINEAR }; return values; } inline const char * const *EnumNamesResizeMode() { static const char * const names[4] = { "UNKNOWN", "NEAREST", "BILINEAR", nullptr }; return names; } inline const char *EnumNameResizeMode(ResizeMode e) { if (flatbuffers::IsOutRange(e, ResizeMode_UNKNOWN, ResizeMode_BILINEAR)) return ""; const size_t index = static_cast(e); return EnumNamesResizeMode()[index]; } enum Op : uint32_t { Op_UNKNOWN = 0, Op_ARGMAX = 1, Op_AVG_POOL2D = 2, Op_CONV2D = 3, Op_CONV3D = 4, Op_DEPTHWISE_CONV2D = 5, Op_FULLY_CONNECTED = 6, Op_MATMUL = 7, Op_MAX_POOL2D = 8, Op_TRANSPOSE_CONV2D = 9, Op_CLAMP = 10, Op_RESERVED = 11, Op_SIGMOID = 12, Op_TANH = 13, Op_ADD = 14, Op_ARITHMETIC_RIGHT_SHIFT = 15, Op_BITWISE_AND = 16, Op_BITWISE_OR = 17, Op_BITWISE_XOR = 18, Op_INTDIV = 19, Op_LOGICAL_AND = 20, Op_LOGICAL_LEFT_SHIFT = 21, Op_LOGICAL_RIGHT_SHIFT = 22, Op_LOGICAL_OR = 23, Op_LOGICAL_XOR = 24, Op_MAXIMUM = 25, Op_MINIMUM = 26, Op_MUL = 27, Op_POW = 28, Op_SUB = 29, Op_TABLE = 30, Op_ABS = 31, Op_BITWISE_NOT = 32, Op_CEIL = 33, Op_CLZ = 34, Op_EXP = 35, Op_FLOOR = 36, Op_LOG = 37, Op_LOGICAL_NOT = 38, Op_NEGATE = 39, Op_RECIPROCAL = 40, Op_RSQRT = 41, Op_SELECT = 42, Op_EQUAL = 43, Op_GREATER = 44, Op_GREATER_EQUAL = 45, Op_REDUCE_ANY = 46, Op_REDUCE_ALL = 47, Op_REDUCE_MAX = 48, Op_REDUCE_MIN = 49, Op_REDUCE_PRODUCT = 50, Op_REDUCE_SUM = 51, Op_CONCAT = 52, Op_PAD = 53, Op_RESHAPE = 54, Op_REVERSE = 55, Op_SLICE = 56, Op_TILE = 57, Op_TRANSPOSE = 58, Op_GATHER = 59, Op_SCATTER = 60, Op_RESIZE = 61, Op_CAST = 62, Op_RESCALE = 63, Op_CONST = 64, Op_IDENTITY = 65, Op_CUSTOM = 66, Op_COND_IF = 67, Op_WHILE_LOOP = 68, Op_MIN = Op_UNKNOWN, Op_MAX = Op_WHILE_LOOP }; inline const Op (&EnumValuesOp())[69] { static const Op values[] = { Op_UNKNOWN, Op_ARGMAX, Op_AVG_POOL2D, Op_CONV2D, Op_CONV3D, Op_DEPTHWISE_CONV2D, Op_FULLY_CONNECTED, Op_MATMUL, Op_MAX_POOL2D, Op_TRANSPOSE_CONV2D, Op_CLAMP, Op_RESERVED, Op_SIGMOID, Op_TANH, Op_ADD, Op_ARITHMETIC_RIGHT_SHIFT, Op_BITWISE_AND, Op_BITWISE_OR, Op_BITWISE_XOR, Op_INTDIV, Op_LOGICAL_AND, Op_LOGICAL_LEFT_SHIFT, Op_LOGICAL_RIGHT_SHIFT, Op_LOGICAL_OR, Op_LOGICAL_XOR, Op_MAXIMUM, Op_MINIMUM, Op_MUL, Op_POW, Op_SUB, Op_TABLE, Op_ABS, Op_BITWISE_NOT, Op_CEIL, Op_CLZ, Op_EXP, Op_FLOOR, Op_LOG, Op_LOGICAL_NOT, Op_NEGATE, Op_RECIPROCAL, Op_RSQRT, Op_SELECT, Op_EQUAL, Op_GREATER, Op_GREATER_EQUAL, Op_REDUCE_ANY, Op_REDUCE_ALL, Op_REDUCE_MAX, Op_REDUCE_MIN, Op_REDUCE_PRODUCT, Op_REDUCE_SUM, Op_CONCAT, Op_PAD, Op_RESHAPE, Op_REVERSE, Op_SLICE, Op_TILE, Op_TRANSPOSE, Op_GATHER, Op_SCATTER, Op_RESIZE, Op_CAST, Op_RESCALE, Op_CONST, Op_IDENTITY, Op_CUSTOM, Op_COND_IF, Op_WHILE_LOOP }; return values; } inline const char * const *EnumNamesOp() { static const char * const names[70] = { "UNKNOWN", "ARGMAX", "AVG_POOL2D", "CONV2D", "CONV3D", "DEPTHWISE_CONV2D", "FULLY_CONNECTED", "MATMUL", "MAX_POOL2D", "TRANSPOSE_CONV2D", "CLAMP", "RESERVED", "SIGMOID", "TANH", "ADD", "ARITHMETIC_RIGHT_SHIFT", "BITWISE_AND", "BITWISE_OR", "BITWISE_XOR", "INTDIV", "LOGICAL_AND", "LOGICAL_LEFT_SHIFT", "LOGICAL_RIGHT_SHIFT", "LOGICAL_OR", "LOGICAL_XOR", "MAXIMUM", "MINIMUM", "MUL", "POW", "SUB", "TABLE", "ABS", "BITWISE_NOT", "CEIL", "CLZ", "EXP", "FLOOR", "LOG", "LOGICAL_NOT", "NEGATE", "RECIPROCAL", "RSQRT", "SELECT", "EQUAL", "GREATER", "GREATER_EQUAL", "REDUCE_ANY", "REDUCE_ALL", "REDUCE_MAX", "REDUCE_MIN", "REDUCE_PRODUCT", "REDUCE_SUM", "CONCAT", "PAD", "RESHAPE", "REVERSE", "SLICE", "TILE", "TRANSPOSE", "GATHER", "SCATTER", "RESIZE", "CAST", "RESCALE", "CONST", "IDENTITY", "CUSTOM", "COND_IF", "WHILE_LOOP", nullptr }; return names; } inline const char *EnumNameOp(Op e) { if (flatbuffers::IsOutRange(e, Op_UNKNOWN, Op_WHILE_LOOP)) return ""; const size_t index = static_cast(e); return EnumNamesOp()[index]; } enum Attribute : uint8_t { Attribute_NONE = 0, Attribute_PoolAttribute = 1, Attribute_ConvAttribute = 2, Attribute_TransposeConvAttribute = 3, Attribute_PadAttribute = 4, Attribute_AxisAttribute = 5, Attribute_ReshapeAttribute = 6, Attribute_SliceAttribute = 7, Attribute_TileAttribute = 8, Attribute_ResizeAttribute = 9, Attribute_ClampAttribute = 10, Attribute_RescaleAttribute = 11, Attribute_MulAttribute = 12, Attribute_ArithmeticRightShiftAttribute = 13, Attribute_CondIfAttribute = 14, Attribute_WhileLoopAttribute = 15, Attribute_TransposeAttribute = 16, Attribute_TableAttribute = 17, Attribute_MIN = Attribute_NONE, Attribute_MAX = Attribute_TableAttribute }; inline const Attribute (&EnumValuesAttribute())[18] { static const Attribute values[] = { Attribute_NONE, Attribute_PoolAttribute, Attribute_ConvAttribute, Attribute_TransposeConvAttribute, Attribute_PadAttribute, Attribute_AxisAttribute, Attribute_ReshapeAttribute, Attribute_SliceAttribute, Attribute_TileAttribute, Attribute_ResizeAttribute, Attribute_ClampAttribute, Attribute_RescaleAttribute, Attribute_MulAttribute, Attribute_ArithmeticRightShiftAttribute, Attribute_CondIfAttribute, Attribute_WhileLoopAttribute, Attribute_TransposeAttribute, Attribute_TableAttribute }; return values; } inline const char * const *EnumNamesAttribute() { static const char * const names[19] = { "NONE", "PoolAttribute", "ConvAttribute", "TransposeConvAttribute", "PadAttribute", "AxisAttribute", "ReshapeAttribute", "SliceAttribute", "TileAttribute", "ResizeAttribute", "ClampAttribute", "RescaleAttribute", "MulAttribute", "ArithmeticRightShiftAttribute", "CondIfAttribute", "WhileLoopAttribute", "TransposeAttribute", "TableAttribute", nullptr }; return names; } inline const char *EnumNameAttribute(Attribute e) { if (flatbuffers::IsOutRange(e, Attribute_NONE, Attribute_TableAttribute)) return ""; const size_t index = static_cast(e); return EnumNamesAttribute()[index]; } template struct AttributeTraits { static const Attribute enum_value = Attribute_NONE; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_PoolAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_ConvAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_TransposeConvAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_PadAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_AxisAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_ReshapeAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_SliceAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_TileAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_ResizeAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_ClampAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_RescaleAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_MulAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_ArithmeticRightShiftAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_CondIfAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_WhileLoopAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_TransposeAttribute; }; template<> struct AttributeTraits { static const Attribute enum_value = Attribute_TableAttribute; }; bool VerifyAttribute(flatbuffers::Verifier &verifier, const void *obj, Attribute type); bool VerifyAttributeVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types); enum QuantInfo : uint8_t { QuantInfo_NONE = 0, QuantInfo_UnaryQuantInfo = 1, QuantInfo_ConvQuantInfo = 2, QuantInfo_MatMulQuantInfo = 3, QuantInfo_PadQuantInfo = 4, QuantInfo_MIN = QuantInfo_NONE, QuantInfo_MAX = QuantInfo_PadQuantInfo }; inline const QuantInfo (&EnumValuesQuantInfo())[5] { static const QuantInfo values[] = { QuantInfo_NONE, QuantInfo_UnaryQuantInfo, QuantInfo_ConvQuantInfo, QuantInfo_MatMulQuantInfo, QuantInfo_PadQuantInfo }; return values; } inline const char * const *EnumNamesQuantInfo() { static const char * const names[6] = { "NONE", "UnaryQuantInfo", "ConvQuantInfo", "MatMulQuantInfo", "PadQuantInfo", nullptr }; return names; } inline const char *EnumNameQuantInfo(QuantInfo e) { if (flatbuffers::IsOutRange(e, QuantInfo_NONE, QuantInfo_PadQuantInfo)) return ""; const size_t index = static_cast(e); return EnumNamesQuantInfo()[index]; } template struct QuantInfoTraits { static const QuantInfo enum_value = QuantInfo_NONE; }; template<> struct QuantInfoTraits { static const QuantInfo enum_value = QuantInfo_UnaryQuantInfo; }; template<> struct QuantInfoTraits { static const QuantInfo enum_value = QuantInfo_ConvQuantInfo; }; template<> struct QuantInfoTraits { static const QuantInfo enum_value = QuantInfo_MatMulQuantInfo; }; template<> struct QuantInfoTraits { static const QuantInfo enum_value = QuantInfo_PadQuantInfo; }; bool VerifyQuantInfo(flatbuffers::Verifier &verifier, const void *obj, QuantInfo type); bool VerifyQuantInfoVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types); struct PoolAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef PoolAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_PADDING = 4, VT_KERNEL = 6, VT_STRIDE = 8 }; const flatbuffers::Vector *padding() const { return GetPointer *>(VT_PADDING); } const flatbuffers::Vector *kernel() const { return GetPointer *>(VT_KERNEL); } const flatbuffers::Vector *stride() const { return GetPointer *>(VT_STRIDE); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_PADDING) && verifier.VerifyVector(padding()) && VerifyOffset(verifier, VT_KERNEL) && verifier.VerifyVector(kernel()) && VerifyOffset(verifier, VT_STRIDE) && verifier.VerifyVector(stride()) && verifier.EndTable(); } }; struct PoolAttributeBuilder { typedef PoolAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_padding(flatbuffers::Offset> padding) { fbb_.AddOffset(PoolAttribute::VT_PADDING, padding); } void add_kernel(flatbuffers::Offset> kernel) { fbb_.AddOffset(PoolAttribute::VT_KERNEL, kernel); } void add_stride(flatbuffers::Offset> stride) { fbb_.AddOffset(PoolAttribute::VT_STRIDE, stride); } explicit PoolAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreatePoolAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> padding = 0, flatbuffers::Offset> kernel = 0, flatbuffers::Offset> stride = 0) { PoolAttributeBuilder builder_(_fbb); builder_.add_stride(stride); builder_.add_kernel(kernel); builder_.add_padding(padding); return builder_.Finish(); } inline flatbuffers::Offset CreatePoolAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *padding = nullptr, const std::vector *kernel = nullptr, const std::vector *stride = nullptr) { auto padding__ = padding ? _fbb.CreateVector(*padding) : 0; auto kernel__ = kernel ? _fbb.CreateVector(*kernel) : 0; auto stride__ = stride ? _fbb.CreateVector(*stride) : 0; return tosa::CreatePoolAttribute( _fbb, padding__, kernel__, stride__); } struct ConvAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ConvAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_PADDING = 4, VT_STRIDE = 6, VT_DILATION = 8 }; const flatbuffers::Vector *padding() const { return GetPointer *>(VT_PADDING); } const flatbuffers::Vector *stride() const { return GetPointer *>(VT_STRIDE); } const flatbuffers::Vector *dilation() const { return GetPointer *>(VT_DILATION); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_PADDING) && verifier.VerifyVector(padding()) && VerifyOffset(verifier, VT_STRIDE) && verifier.VerifyVector(stride()) && VerifyOffset(verifier, VT_DILATION) && verifier.VerifyVector(dilation()) && verifier.EndTable(); } }; struct ConvAttributeBuilder { typedef ConvAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_padding(flatbuffers::Offset> padding) { fbb_.AddOffset(ConvAttribute::VT_PADDING, padding); } void add_stride(flatbuffers::Offset> stride) { fbb_.AddOffset(ConvAttribute::VT_STRIDE, stride); } void add_dilation(flatbuffers::Offset> dilation) { fbb_.AddOffset(ConvAttribute::VT_DILATION, dilation); } explicit ConvAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateConvAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> padding = 0, flatbuffers::Offset> stride = 0, flatbuffers::Offset> dilation = 0) { ConvAttributeBuilder builder_(_fbb); builder_.add_dilation(dilation); builder_.add_stride(stride); builder_.add_padding(padding); return builder_.Finish(); } inline flatbuffers::Offset CreateConvAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *padding = nullptr, const std::vector *stride = nullptr, const std::vector *dilation = nullptr) { auto padding__ = padding ? _fbb.CreateVector(*padding) : 0; auto stride__ = stride ? _fbb.CreateVector(*stride) : 0; auto dilation__ = dilation ? _fbb.CreateVector(*dilation) : 0; return tosa::CreateConvAttribute( _fbb, padding__, stride__, dilation__); } struct TransposeConvAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TransposeConvAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_OUTPAD = 4, VT_STRIDE = 6, VT_DILATION = 8, VT_OUTPUT_SHAPE = 10 }; const flatbuffers::Vector *outpad() const { return GetPointer *>(VT_OUTPAD); } const flatbuffers::Vector *stride() const { return GetPointer *>(VT_STRIDE); } const flatbuffers::Vector *dilation() const { return GetPointer *>(VT_DILATION); } const flatbuffers::Vector *output_shape() const { return GetPointer *>(VT_OUTPUT_SHAPE); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_OUTPAD) && verifier.VerifyVector(outpad()) && VerifyOffset(verifier, VT_STRIDE) && verifier.VerifyVector(stride()) && VerifyOffset(verifier, VT_DILATION) && verifier.VerifyVector(dilation()) && VerifyOffset(verifier, VT_OUTPUT_SHAPE) && verifier.VerifyVector(output_shape()) && verifier.EndTable(); } }; struct TransposeConvAttributeBuilder { typedef TransposeConvAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_outpad(flatbuffers::Offset> outpad) { fbb_.AddOffset(TransposeConvAttribute::VT_OUTPAD, outpad); } void add_stride(flatbuffers::Offset> stride) { fbb_.AddOffset(TransposeConvAttribute::VT_STRIDE, stride); } void add_dilation(flatbuffers::Offset> dilation) { fbb_.AddOffset(TransposeConvAttribute::VT_DILATION, dilation); } void add_output_shape(flatbuffers::Offset> output_shape) { fbb_.AddOffset(TransposeConvAttribute::VT_OUTPUT_SHAPE, output_shape); } explicit TransposeConvAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateTransposeConvAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> outpad = 0, flatbuffers::Offset> stride = 0, flatbuffers::Offset> dilation = 0, flatbuffers::Offset> output_shape = 0) { TransposeConvAttributeBuilder builder_(_fbb); builder_.add_output_shape(output_shape); builder_.add_dilation(dilation); builder_.add_stride(stride); builder_.add_outpad(outpad); return builder_.Finish(); } inline flatbuffers::Offset CreateTransposeConvAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *outpad = nullptr, const std::vector *stride = nullptr, const std::vector *dilation = nullptr, const std::vector *output_shape = nullptr) { auto outpad__ = outpad ? _fbb.CreateVector(*outpad) : 0; auto stride__ = stride ? _fbb.CreateVector(*stride) : 0; auto dilation__ = dilation ? _fbb.CreateVector(*dilation) : 0; auto output_shape__ = output_shape ? _fbb.CreateVector(*output_shape) : 0; return tosa::CreateTransposeConvAttribute( _fbb, outpad__, stride__, dilation__, output_shape__); } struct PadAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef PadAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_PADDING = 4, VT_PAD_CONST_INT = 6, VT_PAD_CONST_FP = 8 }; const flatbuffers::Vector *padding() const { return GetPointer *>(VT_PADDING); } int32_t pad_const_int() const { return GetField(VT_PAD_CONST_INT, 0); } float pad_const_fp() const { return GetField(VT_PAD_CONST_FP, 0.0f); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_PADDING) && verifier.VerifyVector(padding()) && VerifyField(verifier, VT_PAD_CONST_INT) && VerifyField(verifier, VT_PAD_CONST_FP) && verifier.EndTable(); } }; struct PadAttributeBuilder { typedef PadAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_padding(flatbuffers::Offset> padding) { fbb_.AddOffset(PadAttribute::VT_PADDING, padding); } void add_pad_const_int(int32_t pad_const_int) { fbb_.AddElement(PadAttribute::VT_PAD_CONST_INT, pad_const_int, 0); } void add_pad_const_fp(float pad_const_fp) { fbb_.AddElement(PadAttribute::VT_PAD_CONST_FP, pad_const_fp, 0.0f); } explicit PadAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreatePadAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> padding = 0, int32_t pad_const_int = 0, float pad_const_fp = 0.0f) { PadAttributeBuilder builder_(_fbb); builder_.add_pad_const_fp(pad_const_fp); builder_.add_pad_const_int(pad_const_int); builder_.add_padding(padding); return builder_.Finish(); } inline flatbuffers::Offset CreatePadAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *padding = nullptr, int32_t pad_const_int = 0, float pad_const_fp = 0.0f) { auto padding__ = padding ? _fbb.CreateVector(*padding) : 0; return tosa::CreatePadAttribute( _fbb, padding__, pad_const_int, pad_const_fp); } struct AxisAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef AxisAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_AXIS = 4 }; int32_t axis() const { return GetField(VT_AXIS, 0); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_AXIS) && verifier.EndTable(); } }; struct AxisAttributeBuilder { typedef AxisAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_axis(int32_t axis) { fbb_.AddElement(AxisAttribute::VT_AXIS, axis, 0); } explicit AxisAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateAxisAttribute( flatbuffers::FlatBufferBuilder &_fbb, int32_t axis = 0) { AxisAttributeBuilder builder_(_fbb); builder_.add_axis(axis); return builder_.Finish(); } struct ReshapeAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ReshapeAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_SHAPE = 4 }; const flatbuffers::Vector *shape() const { return GetPointer *>(VT_SHAPE); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_SHAPE) && verifier.VerifyVector(shape()) && verifier.EndTable(); } }; struct ReshapeAttributeBuilder { typedef ReshapeAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_shape(flatbuffers::Offset> shape) { fbb_.AddOffset(ReshapeAttribute::VT_SHAPE, shape); } explicit ReshapeAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateReshapeAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> shape = 0) { ReshapeAttributeBuilder builder_(_fbb); builder_.add_shape(shape); return builder_.Finish(); } inline flatbuffers::Offset CreateReshapeAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *shape = nullptr) { auto shape__ = shape ? _fbb.CreateVector(*shape) : 0; return tosa::CreateReshapeAttribute( _fbb, shape__); } struct SliceAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef SliceAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_BEGIN = 4, VT_SIZE = 6 }; const flatbuffers::Vector *begin() const { return GetPointer *>(VT_BEGIN); } const flatbuffers::Vector *size() const { return GetPointer *>(VT_SIZE); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_BEGIN) && verifier.VerifyVector(begin()) && VerifyOffset(verifier, VT_SIZE) && verifier.VerifyVector(size()) && verifier.EndTable(); } }; struct SliceAttributeBuilder { typedef SliceAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_begin(flatbuffers::Offset> begin) { fbb_.AddOffset(SliceAttribute::VT_BEGIN, begin); } void add_size(flatbuffers::Offset> size) { fbb_.AddOffset(SliceAttribute::VT_SIZE, size); } explicit SliceAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateSliceAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> begin = 0, flatbuffers::Offset> size = 0) { SliceAttributeBuilder builder_(_fbb); builder_.add_size(size); builder_.add_begin(begin); return builder_.Finish(); } inline flatbuffers::Offset CreateSliceAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *begin = nullptr, const std::vector *size = nullptr) { auto begin__ = begin ? _fbb.CreateVector(*begin) : 0; auto size__ = size ? _fbb.CreateVector(*size) : 0; return tosa::CreateSliceAttribute( _fbb, begin__, size__); } struct TileAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TileAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_MULTIPLES = 4 }; const flatbuffers::Vector *multiples() const { return GetPointer *>(VT_MULTIPLES); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_MULTIPLES) && verifier.VerifyVector(multiples()) && verifier.EndTable(); } }; struct TileAttributeBuilder { typedef TileAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_multiples(flatbuffers::Offset> multiples) { fbb_.AddOffset(TileAttribute::VT_MULTIPLES, multiples); } explicit TileAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateTileAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> multiples = 0) { TileAttributeBuilder builder_(_fbb); builder_.add_multiples(multiples); return builder_.Finish(); } inline flatbuffers::Offset CreateTileAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *multiples = nullptr) { auto multiples__ = multiples ? _fbb.CreateVector(*multiples) : 0; return tosa::CreateTileAttribute( _fbb, multiples__); } struct ResizeAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ResizeAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_OUTPUT_SIZE = 4, VT_STRIDE = 6, VT_OFFSET = 8, VT_SHIFT = 10, VT_STRIDE_FP = 12, VT_OFFSET_FP = 14, VT_MODE = 16 }; const flatbuffers::Vector *output_size() const { return GetPointer *>(VT_OUTPUT_SIZE); } const flatbuffers::Vector *stride() const { return GetPointer *>(VT_STRIDE); } const flatbuffers::Vector *offset() const { return GetPointer *>(VT_OFFSET); } int32_t shift() const { return GetField(VT_SHIFT, 0); } const flatbuffers::Vector *stride_fp() const { return GetPointer *>(VT_STRIDE_FP); } const flatbuffers::Vector *offset_fp() const { return GetPointer *>(VT_OFFSET_FP); } tosa::ResizeMode mode() const { return static_cast(GetField(VT_MODE, 0)); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_OUTPUT_SIZE) && verifier.VerifyVector(output_size()) && VerifyOffset(verifier, VT_STRIDE) && verifier.VerifyVector(stride()) && VerifyOffset(verifier, VT_OFFSET) && verifier.VerifyVector(offset()) && VerifyField(verifier, VT_SHIFT) && VerifyOffset(verifier, VT_STRIDE_FP) && verifier.VerifyVector(stride_fp()) && VerifyOffset(verifier, VT_OFFSET_FP) && verifier.VerifyVector(offset_fp()) && VerifyField(verifier, VT_MODE) && verifier.EndTable(); } }; struct ResizeAttributeBuilder { typedef ResizeAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_output_size(flatbuffers::Offset> output_size) { fbb_.AddOffset(ResizeAttribute::VT_OUTPUT_SIZE, output_size); } void add_stride(flatbuffers::Offset> stride) { fbb_.AddOffset(ResizeAttribute::VT_STRIDE, stride); } void add_offset(flatbuffers::Offset> offset) { fbb_.AddOffset(ResizeAttribute::VT_OFFSET, offset); } void add_shift(int32_t shift) { fbb_.AddElement(ResizeAttribute::VT_SHIFT, shift, 0); } void add_stride_fp(flatbuffers::Offset> stride_fp) { fbb_.AddOffset(ResizeAttribute::VT_STRIDE_FP, stride_fp); } void add_offset_fp(flatbuffers::Offset> offset_fp) { fbb_.AddOffset(ResizeAttribute::VT_OFFSET_FP, offset_fp); } void add_mode(tosa::ResizeMode mode) { fbb_.AddElement(ResizeAttribute::VT_MODE, static_cast(mode), 0); } explicit ResizeAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateResizeAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> output_size = 0, flatbuffers::Offset> stride = 0, flatbuffers::Offset> offset = 0, int32_t shift = 0, flatbuffers::Offset> stride_fp = 0, flatbuffers::Offset> offset_fp = 0, tosa::ResizeMode mode = tosa::ResizeMode_UNKNOWN) { ResizeAttributeBuilder builder_(_fbb); builder_.add_mode(mode); builder_.add_offset_fp(offset_fp); builder_.add_stride_fp(stride_fp); builder_.add_shift(shift); builder_.add_offset(offset); builder_.add_stride(stride); builder_.add_output_size(output_size); return builder_.Finish(); } inline flatbuffers::Offset CreateResizeAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *output_size = nullptr, const std::vector *stride = nullptr, const std::vector *offset = nullptr, int32_t shift = 0, const std::vector *stride_fp = nullptr, const std::vector *offset_fp = nullptr, tosa::ResizeMode mode = tosa::ResizeMode_UNKNOWN) { auto output_size__ = output_size ? _fbb.CreateVector(*output_size) : 0; auto stride__ = stride ? _fbb.CreateVector(*stride) : 0; auto offset__ = offset ? _fbb.CreateVector(*offset) : 0; auto stride_fp__ = stride_fp ? _fbb.CreateVector(*stride_fp) : 0; auto offset_fp__ = offset_fp ? _fbb.CreateVector(*offset_fp) : 0; return tosa::CreateResizeAttribute( _fbb, output_size__, stride__, offset__, shift, stride_fp__, offset_fp__, mode); } struct ClampAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ClampAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_MIN_INT = 4, VT_MAX_INT = 6, VT_MIN_FP = 8, VT_MAX_FP = 10 }; int32_t min_int() const { return GetField(VT_MIN_INT, 0); } int32_t max_int() const { return GetField(VT_MAX_INT, 0); } float min_fp() const { return GetField(VT_MIN_FP, 0.0f); } float max_fp() const { return GetField(VT_MAX_FP, 0.0f); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_MIN_INT) && VerifyField(verifier, VT_MAX_INT) && VerifyField(verifier, VT_MIN_FP) && VerifyField(verifier, VT_MAX_FP) && verifier.EndTable(); } }; struct ClampAttributeBuilder { typedef ClampAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_min_int(int32_t min_int) { fbb_.AddElement(ClampAttribute::VT_MIN_INT, min_int, 0); } void add_max_int(int32_t max_int) { fbb_.AddElement(ClampAttribute::VT_MAX_INT, max_int, 0); } void add_min_fp(float min_fp) { fbb_.AddElement(ClampAttribute::VT_MIN_FP, min_fp, 0.0f); } void add_max_fp(float max_fp) { fbb_.AddElement(ClampAttribute::VT_MAX_FP, max_fp, 0.0f); } explicit ClampAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateClampAttribute( flatbuffers::FlatBufferBuilder &_fbb, int32_t min_int = 0, int32_t max_int = 0, float min_fp = 0.0f, float max_fp = 0.0f) { ClampAttributeBuilder builder_(_fbb); builder_.add_max_fp(max_fp); builder_.add_min_fp(min_fp); builder_.add_max_int(max_int); builder_.add_min_int(min_int); return builder_.Finish(); } struct RescaleAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef RescaleAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_INPUT_ZP = 4, VT_OUTPUT_ZP = 6, VT_MULTIPLIER = 8, VT_SHIFT = 10, VT_SCALE32 = 12, VT_DOUBLE_ROUND = 14, VT_PER_CHANNEL = 16 }; int32_t input_zp() const { return GetField(VT_INPUT_ZP, 0); } int32_t output_zp() const { return GetField(VT_OUTPUT_ZP, 0); } const flatbuffers::Vector *multiplier() const { return GetPointer *>(VT_MULTIPLIER); } const flatbuffers::Vector *shift() const { return GetPointer *>(VT_SHIFT); } bool scale32() const { return GetField(VT_SCALE32, 0) != 0; } bool double_round() const { return GetField(VT_DOUBLE_ROUND, 0) != 0; } bool per_channel() const { return GetField(VT_PER_CHANNEL, 0) != 0; } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_INPUT_ZP) && VerifyField(verifier, VT_OUTPUT_ZP) && VerifyOffset(verifier, VT_MULTIPLIER) && verifier.VerifyVector(multiplier()) && VerifyOffset(verifier, VT_SHIFT) && verifier.VerifyVector(shift()) && VerifyField(verifier, VT_SCALE32) && VerifyField(verifier, VT_DOUBLE_ROUND) && VerifyField(verifier, VT_PER_CHANNEL) && verifier.EndTable(); } }; struct RescaleAttributeBuilder { typedef RescaleAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_input_zp(int32_t input_zp) { fbb_.AddElement(RescaleAttribute::VT_INPUT_ZP, input_zp, 0); } void add_output_zp(int32_t output_zp) { fbb_.AddElement(RescaleAttribute::VT_OUTPUT_ZP, output_zp, 0); } void add_multiplier(flatbuffers::Offset> multiplier) { fbb_.AddOffset(RescaleAttribute::VT_MULTIPLIER, multiplier); } void add_shift(flatbuffers::Offset> shift) { fbb_.AddOffset(RescaleAttribute::VT_SHIFT, shift); } void add_scale32(bool scale32) { fbb_.AddElement(RescaleAttribute::VT_SCALE32, static_cast(scale32), 0); } void add_double_round(bool double_round) { fbb_.AddElement(RescaleAttribute::VT_DOUBLE_ROUND, static_cast(double_round), 0); } void add_per_channel(bool per_channel) { fbb_.AddElement(RescaleAttribute::VT_PER_CHANNEL, static_cast(per_channel), 0); } explicit RescaleAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateRescaleAttribute( flatbuffers::FlatBufferBuilder &_fbb, int32_t input_zp = 0, int32_t output_zp = 0, flatbuffers::Offset> multiplier = 0, flatbuffers::Offset> shift = 0, bool scale32 = false, bool double_round = false, bool per_channel = false) { RescaleAttributeBuilder builder_(_fbb); builder_.add_shift(shift); builder_.add_multiplier(multiplier); builder_.add_output_zp(output_zp); builder_.add_input_zp(input_zp); builder_.add_per_channel(per_channel); builder_.add_double_round(double_round); builder_.add_scale32(scale32); return builder_.Finish(); } inline flatbuffers::Offset CreateRescaleAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, int32_t input_zp = 0, int32_t output_zp = 0, const std::vector *multiplier = nullptr, const std::vector *shift = nullptr, bool scale32 = false, bool double_round = false, bool per_channel = false) { auto multiplier__ = multiplier ? _fbb.CreateVector(*multiplier) : 0; auto shift__ = shift ? _fbb.CreateVector(*shift) : 0; return tosa::CreateRescaleAttribute( _fbb, input_zp, output_zp, multiplier__, shift__, scale32, double_round, per_channel); } struct MulAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef MulAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_SHIFT = 4 }; int32_t shift() const { return GetField(VT_SHIFT, 0); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_SHIFT) && verifier.EndTable(); } }; struct MulAttributeBuilder { typedef MulAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_shift(int32_t shift) { fbb_.AddElement(MulAttribute::VT_SHIFT, shift, 0); } explicit MulAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateMulAttribute( flatbuffers::FlatBufferBuilder &_fbb, int32_t shift = 0) { MulAttributeBuilder builder_(_fbb); builder_.add_shift(shift); return builder_.Finish(); } struct ArithmeticRightShiftAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ArithmeticRightShiftAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_ROUND = 4 }; bool round() const { return GetField(VT_ROUND, 0) != 0; } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_ROUND) && verifier.EndTable(); } }; struct ArithmeticRightShiftAttributeBuilder { typedef ArithmeticRightShiftAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_round(bool round) { fbb_.AddElement(ArithmeticRightShiftAttribute::VT_ROUND, static_cast(round), 0); } explicit ArithmeticRightShiftAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateArithmeticRightShiftAttribute( flatbuffers::FlatBufferBuilder &_fbb, bool round = false) { ArithmeticRightShiftAttributeBuilder builder_(_fbb); builder_.add_round(round); return builder_.Finish(); } struct CondIfAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef CondIfAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_THEN_BRANCH = 4, VT_ELSE_BRANCH = 6 }; const flatbuffers::String *then_branch() const { return GetPointer(VT_THEN_BRANCH); } const flatbuffers::String *else_branch() const { return GetPointer(VT_ELSE_BRANCH); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_THEN_BRANCH) && verifier.VerifyString(then_branch()) && VerifyOffset(verifier, VT_ELSE_BRANCH) && verifier.VerifyString(else_branch()) && verifier.EndTable(); } }; struct CondIfAttributeBuilder { typedef CondIfAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_then_branch(flatbuffers::Offset then_branch) { fbb_.AddOffset(CondIfAttribute::VT_THEN_BRANCH, then_branch); } void add_else_branch(flatbuffers::Offset else_branch) { fbb_.AddOffset(CondIfAttribute::VT_ELSE_BRANCH, else_branch); } explicit CondIfAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateCondIfAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset then_branch = 0, flatbuffers::Offset else_branch = 0) { CondIfAttributeBuilder builder_(_fbb); builder_.add_else_branch(else_branch); builder_.add_then_branch(then_branch); return builder_.Finish(); } inline flatbuffers::Offset CreateCondIfAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const char *then_branch = nullptr, const char *else_branch = nullptr) { auto then_branch__ = then_branch ? _fbb.CreateString(then_branch) : 0; auto else_branch__ = else_branch ? _fbb.CreateString(else_branch) : 0; return tosa::CreateCondIfAttribute( _fbb, then_branch__, else_branch__); } struct WhileLoopAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef WhileLoopAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_COND_BRANCH = 4, VT_BODY_BRANCH = 6 }; const flatbuffers::String *cond_branch() const { return GetPointer(VT_COND_BRANCH); } const flatbuffers::String *body_branch() const { return GetPointer(VT_BODY_BRANCH); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_COND_BRANCH) && verifier.VerifyString(cond_branch()) && VerifyOffset(verifier, VT_BODY_BRANCH) && verifier.VerifyString(body_branch()) && verifier.EndTable(); } }; struct WhileLoopAttributeBuilder { typedef WhileLoopAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_cond_branch(flatbuffers::Offset cond_branch) { fbb_.AddOffset(WhileLoopAttribute::VT_COND_BRANCH, cond_branch); } void add_body_branch(flatbuffers::Offset body_branch) { fbb_.AddOffset(WhileLoopAttribute::VT_BODY_BRANCH, body_branch); } explicit WhileLoopAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateWhileLoopAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset cond_branch = 0, flatbuffers::Offset body_branch = 0) { WhileLoopAttributeBuilder builder_(_fbb); builder_.add_body_branch(body_branch); builder_.add_cond_branch(cond_branch); return builder_.Finish(); } inline flatbuffers::Offset CreateWhileLoopAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const char *cond_branch = nullptr, const char *body_branch = nullptr) { auto cond_branch__ = cond_branch ? _fbb.CreateString(cond_branch) : 0; auto body_branch__ = body_branch ? _fbb.CreateString(body_branch) : 0; return tosa::CreateWhileLoopAttribute( _fbb, cond_branch__, body_branch__); } struct TransposeAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TransposeAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_PERM = 4 }; const flatbuffers::Vector *perm() const { return GetPointer *>(VT_PERM); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_PERM) && verifier.VerifyVector(perm()) && verifier.EndTable(); } }; struct TransposeAttributeBuilder { typedef TransposeAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_perm(flatbuffers::Offset> perm) { fbb_.AddOffset(TransposeAttribute::VT_PERM, perm); } explicit TransposeAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateTransposeAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> perm = 0) { TransposeAttributeBuilder builder_(_fbb); builder_.add_perm(perm); return builder_.Finish(); } inline flatbuffers::Offset CreateTransposeAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *perm = nullptr) { auto perm__ = perm ? _fbb.CreateVector(*perm) : 0; return tosa::CreateTransposeAttribute( _fbb, perm__); } struct TableAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TableAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_TABLE = 4 }; const flatbuffers::Vector *table() const { return GetPointer *>(VT_TABLE); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_TABLE) && verifier.VerifyVector(table()) && verifier.EndTable(); } }; struct TableAttributeBuilder { typedef TableAttribute Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_table(flatbuffers::Offset> table) { fbb_.AddOffset(TableAttribute::VT_TABLE, table); } explicit TableAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateTableAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> table = 0) { TableAttributeBuilder builder_(_fbb); builder_.add_table(table); return builder_.Finish(); } inline flatbuffers::Offset CreateTableAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *table = nullptr) { auto table__ = table ? _fbb.CreateVector(*table) : 0; return tosa::CreateTableAttribute( _fbb, table__); } struct UnaryQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef UnaryQuantInfoBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_INPUT_ZP = 4, VT_OUTPUT_ZP = 6 }; int32_t input_zp() const { return GetField(VT_INPUT_ZP, 0); } int32_t output_zp() const { return GetField(VT_OUTPUT_ZP, 0); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_INPUT_ZP) && VerifyField(verifier, VT_OUTPUT_ZP) && verifier.EndTable(); } }; struct UnaryQuantInfoBuilder { typedef UnaryQuantInfo Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_input_zp(int32_t input_zp) { fbb_.AddElement(UnaryQuantInfo::VT_INPUT_ZP, input_zp, 0); } void add_output_zp(int32_t output_zp) { fbb_.AddElement(UnaryQuantInfo::VT_OUTPUT_ZP, output_zp, 0); } explicit UnaryQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateUnaryQuantInfo( flatbuffers::FlatBufferBuilder &_fbb, int32_t input_zp = 0, int32_t output_zp = 0) { UnaryQuantInfoBuilder builder_(_fbb); builder_.add_output_zp(output_zp); builder_.add_input_zp(input_zp); return builder_.Finish(); } struct ConvQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef ConvQuantInfoBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_INPUT_ZP = 4, VT_WEIGHT_ZP = 6 }; int32_t input_zp() const { return GetField(VT_INPUT_ZP, 0); } int32_t weight_zp() const { return GetField(VT_WEIGHT_ZP, 0); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_INPUT_ZP) && VerifyField(verifier, VT_WEIGHT_ZP) && verifier.EndTable(); } }; struct ConvQuantInfoBuilder { typedef ConvQuantInfo Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_input_zp(int32_t input_zp) { fbb_.AddElement(ConvQuantInfo::VT_INPUT_ZP, input_zp, 0); } void add_weight_zp(int32_t weight_zp) { fbb_.AddElement(ConvQuantInfo::VT_WEIGHT_ZP, weight_zp, 0); } explicit ConvQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateConvQuantInfo( flatbuffers::FlatBufferBuilder &_fbb, int32_t input_zp = 0, int32_t weight_zp = 0) { ConvQuantInfoBuilder builder_(_fbb); builder_.add_weight_zp(weight_zp); builder_.add_input_zp(input_zp); return builder_.Finish(); } struct MatMulQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef MatMulQuantInfoBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_A_ZP = 4, VT_B_ZP = 6 }; int32_t a_zp() const { return GetField(VT_A_ZP, 0); } int32_t b_zp() const { return GetField(VT_B_ZP, 0); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A_ZP) && VerifyField(verifier, VT_B_ZP) && verifier.EndTable(); } }; struct MatMulQuantInfoBuilder { typedef MatMulQuantInfo Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_a_zp(int32_t a_zp) { fbb_.AddElement(MatMulQuantInfo::VT_A_ZP, a_zp, 0); } void add_b_zp(int32_t b_zp) { fbb_.AddElement(MatMulQuantInfo::VT_B_ZP, b_zp, 0); } explicit MatMulQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateMatMulQuantInfo( flatbuffers::FlatBufferBuilder &_fbb, int32_t a_zp = 0, int32_t b_zp = 0) { MatMulQuantInfoBuilder builder_(_fbb); builder_.add_b_zp(b_zp); builder_.add_a_zp(a_zp); return builder_.Finish(); } struct PadQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef PadQuantInfoBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_INPUT_ZP = 4 }; int32_t input_zp() const { return GetField(VT_INPUT_ZP, 0); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_INPUT_ZP) && verifier.EndTable(); } }; struct PadQuantInfoBuilder { typedef PadQuantInfo Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_input_zp(int32_t input_zp) { fbb_.AddElement(PadQuantInfo::VT_INPUT_ZP, input_zp, 0); } explicit PadQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreatePadQuantInfo( flatbuffers::FlatBufferBuilder &_fbb, int32_t input_zp = 0) { PadQuantInfoBuilder builder_(_fbb); builder_.add_input_zp(input_zp); return builder_.Finish(); } struct Version FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef VersionBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT__MAJOR = 4, VT__MINOR = 6, VT__PATCH = 8, VT__DRAFT = 10 }; int32_t _major() const { return GetField(VT__MAJOR, 0); } int32_t _minor() const { return GetField(VT__MINOR, 24); } int32_t _patch() const { return GetField(VT__PATCH, 0); } bool _draft() const { return GetField(VT__DRAFT, 1) != 0; } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT__MAJOR) && VerifyField(verifier, VT__MINOR) && VerifyField(verifier, VT__PATCH) && VerifyField(verifier, VT__DRAFT) && verifier.EndTable(); } }; struct VersionBuilder { typedef Version Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add__major(int32_t _major) { fbb_.AddElement(Version::VT__MAJOR, _major, 0); } void add__minor(int32_t _minor) { fbb_.AddElement(Version::VT__MINOR, _minor, 24); } void add__patch(int32_t _patch) { fbb_.AddElement(Version::VT__PATCH, _patch, 0); } void add__draft(bool _draft) { fbb_.AddElement(Version::VT__DRAFT, static_cast(_draft), 1); } explicit VersionBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateVersion( flatbuffers::FlatBufferBuilder &_fbb, int32_t _major = 0, int32_t _minor = 24, int32_t _patch = 0, bool _draft = true) { VersionBuilder builder_(_fbb); builder_.add__patch(_patch); builder_.add__minor(_minor); builder_.add__major(_major); builder_.add__draft(_draft); return builder_.Finish(); } struct TosaTensor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TosaTensorBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_NAME = 4, VT_SHAPE = 6, VT_TYPE = 8, VT_DATA = 10 }; const flatbuffers::String *name() const { return GetPointer(VT_NAME); } const flatbuffers::Vector *shape() const { return GetPointer *>(VT_SHAPE); } tosa::DType type() const { return static_cast(GetField(VT_TYPE, 0)); } const flatbuffers::Vector *data() const { return GetPointer *>(VT_DATA); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_NAME) && verifier.VerifyString(name()) && VerifyOffset(verifier, VT_SHAPE) && verifier.VerifyVector(shape()) && VerifyField(verifier, VT_TYPE) && VerifyOffset(verifier, VT_DATA) && verifier.VerifyVector(data()) && verifier.EndTable(); } }; struct TosaTensorBuilder { typedef TosaTensor Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_name(flatbuffers::Offset name) { fbb_.AddOffset(TosaTensor::VT_NAME, name); } void add_shape(flatbuffers::Offset> shape) { fbb_.AddOffset(TosaTensor::VT_SHAPE, shape); } void add_type(tosa::DType type) { fbb_.AddElement(TosaTensor::VT_TYPE, static_cast(type), 0); } void add_data(flatbuffers::Offset> data) { fbb_.AddOffset(TosaTensor::VT_DATA, data); } explicit TosaTensorBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateTosaTensor( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset name = 0, flatbuffers::Offset> shape = 0, tosa::DType type = tosa::DType_UNKNOWN, flatbuffers::Offset> data = 0) { TosaTensorBuilder builder_(_fbb); builder_.add_data(data); builder_.add_type(type); builder_.add_shape(shape); builder_.add_name(name); return builder_.Finish(); } inline flatbuffers::Offset CreateTosaTensorDirect( flatbuffers::FlatBufferBuilder &_fbb, const char *name = nullptr, const std::vector *shape = nullptr, tosa::DType type = tosa::DType_UNKNOWN, const std::vector *data = nullptr) { auto name__ = name ? _fbb.CreateString(name) : 0; auto shape__ = shape ? _fbb.CreateVector(*shape) : 0; if (data) { _fbb.ForceVectorAlignment(data->size(), sizeof(uint8_t), 8); } auto data__ = data ? _fbb.CreateVector(*data) : 0; return tosa::CreateTosaTensor( _fbb, name__, shape__, type, data__); } struct TosaOperator FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TosaOperatorBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_OP = 4, VT_ATTRIBUTE_TYPE = 6, VT_ATTRIBUTE = 8, VT_INPUTS = 10, VT_OUTPUTS = 12, VT_QUANT_INFO_TYPE = 14, VT_QUANT_INFO = 16 }; tosa::Op op() const { return static_cast(GetField(VT_OP, 0)); } tosa::Attribute attribute_type() const { return static_cast(GetField(VT_ATTRIBUTE_TYPE, 0)); } const void *attribute() const { return GetPointer(VT_ATTRIBUTE); } template const T *attribute_as() const; const tosa::PoolAttribute *attribute_as_PoolAttribute() const { return attribute_type() == tosa::Attribute_PoolAttribute ? static_cast(attribute()) : nullptr; } const tosa::ConvAttribute *attribute_as_ConvAttribute() const { return attribute_type() == tosa::Attribute_ConvAttribute ? static_cast(attribute()) : nullptr; } const tosa::TransposeConvAttribute *attribute_as_TransposeConvAttribute() const { return attribute_type() == tosa::Attribute_TransposeConvAttribute ? static_cast(attribute()) : nullptr; } const tosa::PadAttribute *attribute_as_PadAttribute() const { return attribute_type() == tosa::Attribute_PadAttribute ? static_cast(attribute()) : nullptr; } const tosa::AxisAttribute *attribute_as_AxisAttribute() const { return attribute_type() == tosa::Attribute_AxisAttribute ? static_cast(attribute()) : nullptr; } const tosa::ReshapeAttribute *attribute_as_ReshapeAttribute() const { return attribute_type() == tosa::Attribute_ReshapeAttribute ? static_cast(attribute()) : nullptr; } const tosa::SliceAttribute *attribute_as_SliceAttribute() const { return attribute_type() == tosa::Attribute_SliceAttribute ? static_cast(attribute()) : nullptr; } const tosa::TileAttribute *attribute_as_TileAttribute() const { return attribute_type() == tosa::Attribute_TileAttribute ? static_cast(attribute()) : nullptr; } const tosa::ResizeAttribute *attribute_as_ResizeAttribute() const { return attribute_type() == tosa::Attribute_ResizeAttribute ? static_cast(attribute()) : nullptr; } const tosa::ClampAttribute *attribute_as_ClampAttribute() const { return attribute_type() == tosa::Attribute_ClampAttribute ? static_cast(attribute()) : nullptr; } const tosa::RescaleAttribute *attribute_as_RescaleAttribute() const { return attribute_type() == tosa::Attribute_RescaleAttribute ? static_cast(attribute()) : nullptr; } const tosa::MulAttribute *attribute_as_MulAttribute() const { return attribute_type() == tosa::Attribute_MulAttribute ? static_cast(attribute()) : nullptr; } const tosa::ArithmeticRightShiftAttribute *attribute_as_ArithmeticRightShiftAttribute() const { return attribute_type() == tosa::Attribute_ArithmeticRightShiftAttribute ? static_cast(attribute()) : nullptr; } const tosa::CondIfAttribute *attribute_as_CondIfAttribute() const { return attribute_type() == tosa::Attribute_CondIfAttribute ? static_cast(attribute()) : nullptr; } const tosa::WhileLoopAttribute *attribute_as_WhileLoopAttribute() const { return attribute_type() == tosa::Attribute_WhileLoopAttribute ? static_cast(attribute()) : nullptr; } const tosa::TransposeAttribute *attribute_as_TransposeAttribute() const { return attribute_type() == tosa::Attribute_TransposeAttribute ? static_cast(attribute()) : nullptr; } const tosa::TableAttribute *attribute_as_TableAttribute() const { return attribute_type() == tosa::Attribute_TableAttribute ? static_cast(attribute()) : nullptr; } const flatbuffers::Vector> *inputs() const { return GetPointer> *>(VT_INPUTS); } const flatbuffers::Vector> *outputs() const { return GetPointer> *>(VT_OUTPUTS); } tosa::QuantInfo quant_info_type() const { return static_cast(GetField(VT_QUANT_INFO_TYPE, 0)); } const void *quant_info() const { return GetPointer(VT_QUANT_INFO); } template const T *quant_info_as() const; const tosa::UnaryQuantInfo *quant_info_as_UnaryQuantInfo() const { return quant_info_type() == tosa::QuantInfo_UnaryQuantInfo ? static_cast(quant_info()) : nullptr; } const tosa::ConvQuantInfo *quant_info_as_ConvQuantInfo() const { return quant_info_type() == tosa::QuantInfo_ConvQuantInfo ? static_cast(quant_info()) : nullptr; } const tosa::MatMulQuantInfo *quant_info_as_MatMulQuantInfo() const { return quant_info_type() == tosa::QuantInfo_MatMulQuantInfo ? static_cast(quant_info()) : nullptr; } const tosa::PadQuantInfo *quant_info_as_PadQuantInfo() const { return quant_info_type() == tosa::QuantInfo_PadQuantInfo ? static_cast(quant_info()) : nullptr; } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_OP) && VerifyField(verifier, VT_ATTRIBUTE_TYPE) && VerifyOffset(verifier, VT_ATTRIBUTE) && VerifyAttribute(verifier, attribute(), attribute_type()) && VerifyOffset(verifier, VT_INPUTS) && verifier.VerifyVector(inputs()) && verifier.VerifyVectorOfStrings(inputs()) && VerifyOffset(verifier, VT_OUTPUTS) && verifier.VerifyVector(outputs()) && verifier.VerifyVectorOfStrings(outputs()) && VerifyField(verifier, VT_QUANT_INFO_TYPE) && VerifyOffset(verifier, VT_QUANT_INFO) && VerifyQuantInfo(verifier, quant_info(), quant_info_type()) && verifier.EndTable(); } }; template<> inline const tosa::PoolAttribute *TosaOperator::attribute_as() const { return attribute_as_PoolAttribute(); } template<> inline const tosa::ConvAttribute *TosaOperator::attribute_as() const { return attribute_as_ConvAttribute(); } template<> inline const tosa::TransposeConvAttribute *TosaOperator::attribute_as() const { return attribute_as_TransposeConvAttribute(); } template<> inline const tosa::PadAttribute *TosaOperator::attribute_as() const { return attribute_as_PadAttribute(); } template<> inline const tosa::AxisAttribute *TosaOperator::attribute_as() const { return attribute_as_AxisAttribute(); } template<> inline const tosa::ReshapeAttribute *TosaOperator::attribute_as() const { return attribute_as_ReshapeAttribute(); } template<> inline const tosa::SliceAttribute *TosaOperator::attribute_as() const { return attribute_as_SliceAttribute(); } template<> inline const tosa::TileAttribute *TosaOperator::attribute_as() const { return attribute_as_TileAttribute(); } template<> inline const tosa::ResizeAttribute *TosaOperator::attribute_as() const { return attribute_as_ResizeAttribute(); } template<> inline const tosa::ClampAttribute *TosaOperator::attribute_as() const { return attribute_as_ClampAttribute(); } template<> inline const tosa::RescaleAttribute *TosaOperator::attribute_as() const { return attribute_as_RescaleAttribute(); } template<> inline const tosa::MulAttribute *TosaOperator::attribute_as() const { return attribute_as_MulAttribute(); } template<> inline const tosa::ArithmeticRightShiftAttribute *TosaOperator::attribute_as() const { return attribute_as_ArithmeticRightShiftAttribute(); } template<> inline const tosa::CondIfAttribute *TosaOperator::attribute_as() const { return attribute_as_CondIfAttribute(); } template<> inline const tosa::WhileLoopAttribute *TosaOperator::attribute_as() const { return attribute_as_WhileLoopAttribute(); } template<> inline const tosa::TransposeAttribute *TosaOperator::attribute_as() const { return attribute_as_TransposeAttribute(); } template<> inline const tosa::TableAttribute *TosaOperator::attribute_as() const { return attribute_as_TableAttribute(); } template<> inline const tosa::UnaryQuantInfo *TosaOperator::quant_info_as() const { return quant_info_as_UnaryQuantInfo(); } template<> inline const tosa::ConvQuantInfo *TosaOperator::quant_info_as() const { return quant_info_as_ConvQuantInfo(); } template<> inline const tosa::MatMulQuantInfo *TosaOperator::quant_info_as() const { return quant_info_as_MatMulQuantInfo(); } template<> inline const tosa::PadQuantInfo *TosaOperator::quant_info_as() const { return quant_info_as_PadQuantInfo(); } struct TosaOperatorBuilder { typedef TosaOperator Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_op(tosa::Op op) { fbb_.AddElement(TosaOperator::VT_OP, static_cast(op), 0); } void add_attribute_type(tosa::Attribute attribute_type) { fbb_.AddElement(TosaOperator::VT_ATTRIBUTE_TYPE, static_cast(attribute_type), 0); } void add_attribute(flatbuffers::Offset attribute) { fbb_.AddOffset(TosaOperator::VT_ATTRIBUTE, attribute); } void add_inputs(flatbuffers::Offset>> inputs) { fbb_.AddOffset(TosaOperator::VT_INPUTS, inputs); } void add_outputs(flatbuffers::Offset>> outputs) { fbb_.AddOffset(TosaOperator::VT_OUTPUTS, outputs); } void add_quant_info_type(tosa::QuantInfo quant_info_type) { fbb_.AddElement(TosaOperator::VT_QUANT_INFO_TYPE, static_cast(quant_info_type), 0); } void add_quant_info(flatbuffers::Offset quant_info) { fbb_.AddOffset(TosaOperator::VT_QUANT_INFO, quant_info); } explicit TosaOperatorBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateTosaOperator( flatbuffers::FlatBufferBuilder &_fbb, tosa::Op op = tosa::Op_UNKNOWN, tosa::Attribute attribute_type = tosa::Attribute_NONE, flatbuffers::Offset attribute = 0, flatbuffers::Offset>> inputs = 0, flatbuffers::Offset>> outputs = 0, tosa::QuantInfo quant_info_type = tosa::QuantInfo_NONE, flatbuffers::Offset quant_info = 0) { TosaOperatorBuilder builder_(_fbb); builder_.add_quant_info(quant_info); builder_.add_outputs(outputs); builder_.add_inputs(inputs); builder_.add_attribute(attribute); builder_.add_op(op); builder_.add_quant_info_type(quant_info_type); builder_.add_attribute_type(attribute_type); return builder_.Finish(); } inline flatbuffers::Offset CreateTosaOperatorDirect( flatbuffers::FlatBufferBuilder &_fbb, tosa::Op op = tosa::Op_UNKNOWN, tosa::Attribute attribute_type = tosa::Attribute_NONE, flatbuffers::Offset attribute = 0, const std::vector> *inputs = nullptr, const std::vector> *outputs = nullptr, tosa::QuantInfo quant_info_type = tosa::QuantInfo_NONE, flatbuffers::Offset quant_info = 0) { auto inputs__ = inputs ? _fbb.CreateVector>(*inputs) : 0; auto outputs__ = outputs ? _fbb.CreateVector>(*outputs) : 0; return tosa::CreateTosaOperator( _fbb, op, attribute_type, attribute, inputs__, outputs__, quant_info_type, quant_info); } struct TosaBasicBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TosaBasicBlockBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_NAME = 4, VT_OPERATORS = 6, VT_TENSORS = 8, VT_INPUTS = 10, VT_OUTPUTS = 12 }; const flatbuffers::String *name() const { return GetPointer(VT_NAME); } const flatbuffers::Vector> *operators() const { return GetPointer> *>(VT_OPERATORS); } const flatbuffers::Vector> *tensors() const { return GetPointer> *>(VT_TENSORS); } const flatbuffers::Vector> *inputs() const { return GetPointer> *>(VT_INPUTS); } const flatbuffers::Vector> *outputs() const { return GetPointer> *>(VT_OUTPUTS); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_NAME) && verifier.VerifyString(name()) && VerifyOffset(verifier, VT_OPERATORS) && verifier.VerifyVector(operators()) && verifier.VerifyVectorOfTables(operators()) && VerifyOffset(verifier, VT_TENSORS) && verifier.VerifyVector(tensors()) && verifier.VerifyVectorOfTables(tensors()) && VerifyOffset(verifier, VT_INPUTS) && verifier.VerifyVector(inputs()) && verifier.VerifyVectorOfStrings(inputs()) && VerifyOffset(verifier, VT_OUTPUTS) && verifier.VerifyVector(outputs()) && verifier.VerifyVectorOfStrings(outputs()) && verifier.EndTable(); } }; struct TosaBasicBlockBuilder { typedef TosaBasicBlock Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_name(flatbuffers::Offset name) { fbb_.AddOffset(TosaBasicBlock::VT_NAME, name); } void add_operators(flatbuffers::Offset>> operators) { fbb_.AddOffset(TosaBasicBlock::VT_OPERATORS, operators); } void add_tensors(flatbuffers::Offset>> tensors) { fbb_.AddOffset(TosaBasicBlock::VT_TENSORS, tensors); } void add_inputs(flatbuffers::Offset>> inputs) { fbb_.AddOffset(TosaBasicBlock::VT_INPUTS, inputs); } void add_outputs(flatbuffers::Offset>> outputs) { fbb_.AddOffset(TosaBasicBlock::VT_OUTPUTS, outputs); } explicit TosaBasicBlockBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateTosaBasicBlock( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset name = 0, flatbuffers::Offset>> operators = 0, flatbuffers::Offset>> tensors = 0, flatbuffers::Offset>> inputs = 0, flatbuffers::Offset>> outputs = 0) { TosaBasicBlockBuilder builder_(_fbb); builder_.add_outputs(outputs); builder_.add_inputs(inputs); builder_.add_tensors(tensors); builder_.add_operators(operators); builder_.add_name(name); return builder_.Finish(); } inline flatbuffers::Offset CreateTosaBasicBlockDirect( flatbuffers::FlatBufferBuilder &_fbb, const char *name = nullptr, const std::vector> *operators = nullptr, const std::vector> *tensors = nullptr, const std::vector> *inputs = nullptr, const std::vector> *outputs = nullptr) { auto name__ = name ? _fbb.CreateString(name) : 0; auto operators__ = operators ? _fbb.CreateVector>(*operators) : 0; auto tensors__ = tensors ? _fbb.CreateVector>(*tensors) : 0; auto inputs__ = inputs ? _fbb.CreateVector>(*inputs) : 0; auto outputs__ = outputs ? _fbb.CreateVector>(*outputs) : 0; return tosa::CreateTosaBasicBlock( _fbb, name__, operators__, tensors__, inputs__, outputs__); } struct TosaGraph FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef TosaGraphBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_VERSION = 4, VT_BLOCKS = 6 }; const tosa::Version *version() const { return GetPointer(VT_VERSION); } const flatbuffers::Vector> *blocks() const { return GetPointer> *>(VT_BLOCKS); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_VERSION) && verifier.VerifyTable(version()) && VerifyOffset(verifier, VT_BLOCKS) && verifier.VerifyVector(blocks()) && verifier.VerifyVectorOfTables(blocks()) && verifier.EndTable(); } }; struct TosaGraphBuilder { typedef TosaGraph Table; flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; void add_version(flatbuffers::Offset version) { fbb_.AddOffset(TosaGraph::VT_VERSION, version); } void add_blocks(flatbuffers::Offset>> blocks) { fbb_.AddOffset(TosaGraph::VT_BLOCKS, blocks); } explicit TosaGraphBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); } flatbuffers::Offset Finish() { const auto end = fbb_.EndTable(start_); auto o = flatbuffers::Offset(end); return o; } }; inline flatbuffers::Offset CreateTosaGraph( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset version = 0, flatbuffers::Offset>> blocks = 0) { TosaGraphBuilder builder_(_fbb); builder_.add_blocks(blocks); builder_.add_version(version); return builder_.Finish(); } inline flatbuffers::Offset CreateTosaGraphDirect( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset version = 0, const std::vector> *blocks = nullptr) { auto blocks__ = blocks ? _fbb.CreateVector>(*blocks) : 0; return tosa::CreateTosaGraph( _fbb, version, blocks__); } inline bool VerifyAttribute(flatbuffers::Verifier &verifier, const void *obj, Attribute type) { switch (type) { case Attribute_NONE: { return true; } case Attribute_PoolAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_ConvAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_TransposeConvAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_PadAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_AxisAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_ReshapeAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_SliceAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_TileAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_ResizeAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_ClampAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_RescaleAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_MulAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_ArithmeticRightShiftAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_CondIfAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_WhileLoopAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_TransposeAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case Attribute_TableAttribute: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } default: return true; } } inline bool VerifyAttributeVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { if (!VerifyAttribute( verifier, values->Get(i), types->GetEnum(i))) { return false; } } return true; } inline bool VerifyQuantInfo(flatbuffers::Verifier &verifier, const void *obj, QuantInfo type) { switch (type) { case QuantInfo_NONE: { return true; } case QuantInfo_UnaryQuantInfo: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case QuantInfo_ConvQuantInfo: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case QuantInfo_MatMulQuantInfo: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } case QuantInfo_PadQuantInfo: { auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } default: return true; } } inline bool VerifyQuantInfoVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { if (!VerifyQuantInfo( verifier, values->Get(i), types->GetEnum(i))) { return false; } } return true; } inline const tosa::TosaGraph *GetTosaGraph(const void *buf) { return flatbuffers::GetRoot(buf); } inline const tosa::TosaGraph *GetSizePrefixedTosaGraph(const void *buf) { return flatbuffers::GetSizePrefixedRoot(buf); } inline const char *TosaGraphIdentifier() { return "TOSA"; } inline bool TosaGraphBufferHasIdentifier(const void *buf) { return flatbuffers::BufferHasIdentifier( buf, TosaGraphIdentifier()); } inline bool VerifyTosaGraphBuffer( flatbuffers::Verifier &verifier) { return verifier.VerifyBuffer(TosaGraphIdentifier()); } inline bool VerifySizePrefixedTosaGraphBuffer( flatbuffers::Verifier &verifier) { return verifier.VerifySizePrefixedBuffer(TosaGraphIdentifier()); } inline const char *TosaGraphExtension() { return "tosa"; } inline void FinishTosaGraphBuffer( flatbuffers::FlatBufferBuilder &fbb, flatbuffers::Offset root) { fbb.Finish(root, TosaGraphIdentifier()); } inline void FinishSizePrefixedTosaGraphBuffer( flatbuffers::FlatBufferBuilder &fbb, flatbuffers::Offset root) { fbb.FinishSizePrefixed(root, TosaGraphIdentifier()); } } // namespace tosa #endif // FLATBUFFERS_GENERATED_TOSA_TOSA_H_