blob: 0f73819429c55f6fecb96fe27aff23a482e3a0f8 [file] [log] [blame]
Eric Kunze2364dcd2021-04-26 11:06:57 -07001
2// Copyright (c) 2020-2021, ARM Limited.
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// automatically generated by the FlatBuffers compiler, do not modify
17
18
19#ifndef FLATBUFFERS_GENERATED_TOSA_TOSA_H_
20#define FLATBUFFERS_GENERATED_TOSA_TOSA_H_
21
22#include "flatbuffers/flatbuffers.h"
23
24namespace tosa {
25
26struct Pool2dAttribute;
27struct Pool2dAttributeBuilder;
28
29struct Conv2dAttribute;
30struct Conv2dAttributeBuilder;
31
32struct TransposeConv2dAttribute;
33struct TransposeConv2dAttributeBuilder;
34
35struct ReluNAttribute;
36struct ReluNAttributeBuilder;
37
38struct AxisAttribute;
39struct AxisAttributeBuilder;
40
41struct ReshapeAttribute;
42struct ReshapeAttributeBuilder;
43
44struct SliceAttribute;
45struct SliceAttributeBuilder;
46
47struct TileAttribute;
48struct TileAttributeBuilder;
49
50struct ResizeAttribute;
51struct ResizeAttributeBuilder;
52
53struct ClampAttribute;
54struct ClampAttributeBuilder;
55
56struct RescaleAttribute;
57struct RescaleAttributeBuilder;
58
59struct MulAttribute;
60struct MulAttributeBuilder;
61
62struct ArithmeticRightShiftAttribute;
63struct ArithmeticRightShiftAttributeBuilder;
64
65struct CondIfAttribute;
66struct CondIfAttributeBuilder;
67
68struct WhileLoopAttribute;
69struct WhileLoopAttributeBuilder;
70
71struct UnaryQuantInfo;
72struct UnaryQuantInfoBuilder;
73
74struct ConvQuantInfo;
75struct ConvQuantInfoBuilder;
76
77struct MatMulQuantInfo;
78struct MatMulQuantInfoBuilder;
79
80struct PadQuantInfo;
81struct PadQuantInfoBuilder;
82
83struct Version;
84struct VersionBuilder;
85
86struct TosaTensor;
87struct TosaTensorBuilder;
88
89struct TosaOperator;
90struct TosaOperatorBuilder;
91
92struct TosaBasicBlock;
93struct TosaBasicBlockBuilder;
94
95struct TosaGraph;
96struct TosaGraphBuilder;
97
98enum DType {
99 DType_UNKNOWN = 0,
100 DType_BOOL = 1,
101 DType_UINT8 = 2,
102 DType_INT4 = 3,
103 DType_INT8 = 4,
104 DType_INT16 = 5,
105 DType_INT32 = 6,
106 DType_INT48 = 7,
107 DType_FLOAT = 8,
108 DType_MIN = DType_UNKNOWN,
109 DType_MAX = DType_FLOAT
110};
111
112inline const DType (&EnumValuesDType())[9] {
113 static const DType values[] = {
114 DType_UNKNOWN,
115 DType_BOOL,
116 DType_UINT8,
117 DType_INT4,
118 DType_INT8,
119 DType_INT16,
120 DType_INT32,
121 DType_INT48,
122 DType_FLOAT
123 };
124 return values;
125}
126
127inline const char * const *EnumNamesDType() {
128 static const char * const names[10] = {
129 "UNKNOWN",
130 "BOOL",
131 "UINT8",
132 "INT4",
133 "INT8",
134 "INT16",
135 "INT32",
136 "INT48",
137 "FLOAT",
138 nullptr
139 };
140 return names;
141}
142
143inline const char *EnumNameDType(DType e) {
144 if (flatbuffers::IsOutRange(e, DType_UNKNOWN, DType_FLOAT)) return "";
145 const size_t index = static_cast<size_t>(e);
146 return EnumNamesDType()[index];
147}
148
149enum ResizeMode {
150 ResizeMode_UNKNOWN = 0,
151 ResizeMode_NEAREST = 1,
152 ResizeMode_BILINEAR = 2,
153 ResizeMode_MIN = ResizeMode_UNKNOWN,
154 ResizeMode_MAX = ResizeMode_BILINEAR
155};
156
157inline const ResizeMode (&EnumValuesResizeMode())[3] {
158 static const ResizeMode values[] = {
159 ResizeMode_UNKNOWN,
160 ResizeMode_NEAREST,
161 ResizeMode_BILINEAR
162 };
163 return values;
164}
165
166inline const char * const *EnumNamesResizeMode() {
167 static const char * const names[4] = {
168 "UNKNOWN",
169 "NEAREST",
170 "BILINEAR",
171 nullptr
172 };
173 return names;
174}
175
176inline const char *EnumNameResizeMode(ResizeMode e) {
177 if (flatbuffers::IsOutRange(e, ResizeMode_UNKNOWN, ResizeMode_BILINEAR)) return "";
178 const size_t index = static_cast<size_t>(e);
179 return EnumNamesResizeMode()[index];
180}
181
182enum Op {
183 Op_UNKNOWN = 0,
184 Op_ARGMAX = 1,
185 Op_AVG_POOL2D = 2,
186 Op_CONV2D = 3,
187 Op_CONV3D = 4,
188 Op_DEPTHWISE_CONV2D = 5,
189 Op_FULLY_CONNECTED = 6,
190 Op_MATMUL = 7,
191 Op_MAX_POOL2D = 8,
192 Op_TRANSPOSE_CONV2D = 9,
193 Op_CLAMP = 10,
194 Op_RELUN = 11,
195 Op_SIGMOID = 12,
196 Op_TANH = 13,
197 Op_ADD = 14,
198 Op_ARITHMETIC_RIGHT_SHIFT = 15,
199 Op_BITWISE_AND = 16,
200 Op_BITWISE_OR = 17,
201 Op_BITWISE_XOR = 18,
Kevin Chenga8b4eaf2021-05-10 13:14:00 -0700202 Op_DIV = 19,
203 Op_LOGICAL_AND = 20,
204 Op_LOGICAL_LEFT_SHIFT = 21,
205 Op_LOGICAL_RIGHT_SHIFT = 22,
206 Op_LOGICAL_OR = 23,
207 Op_LOGICAL_XOR = 24,
208 Op_MAXIMUM = 25,
209 Op_MINIMUM = 26,
210 Op_MUL = 27,
211 Op_POW = 28,
212 Op_SUB = 29,
213 Op_TABLE = 30,
214 Op_ABS = 31,
215 Op_BITWISE_NOT = 32,
216 Op_CEIL = 33,
217 Op_CLZ = 34,
218 Op_EXP = 35,
219 Op_FLOOR = 36,
220 Op_LOG = 37,
221 Op_LOGICAL_NOT = 38,
222 Op_NEGATE = 39,
223 Op_RECIPROCAL = 40,
224 Op_RSQRT = 41,
225 Op_SELECT = 42,
226 Op_EQUAL = 43,
227 Op_GREATER = 44,
228 Op_GREATER_EQUAL = 45,
229 Op_REDUCE_ANY = 46,
230 Op_REDUCE_ALL = 47,
231 Op_REDUCE_MAX = 48,
232 Op_REDUCE_MIN = 49,
233 Op_REDUCE_PRODUCT = 50,
234 Op_REDUCE_SUM = 51,
235 Op_CONCAT = 52,
236 Op_PAD = 53,
237 Op_RESHAPE = 54,
238 Op_REVERSE = 55,
239 Op_SLICE = 56,
240 Op_TILE = 57,
241 Op_TRANSPOSE = 58,
242 Op_GATHER = 59,
243 Op_SCATTER = 60,
244 Op_RESIZE = 61,
245 Op_CAST = 62,
246 Op_RESCALE = 63,
247 Op_CONST = 64,
Eric Kunze2364dcd2021-04-26 11:06:57 -0700248 Op_IDENTITY = 65,
Kevin Chenga8b4eaf2021-05-10 13:14:00 -0700249 Op_CUSTOM = 66,
250 Op_COND_IF = 67,
251 Op_WHILE_LOOP = 68,
Eric Kunze2364dcd2021-04-26 11:06:57 -0700252 Op_MIN = Op_UNKNOWN,
253 Op_MAX = Op_WHILE_LOOP
254};
255
Kevin Chenga8b4eaf2021-05-10 13:14:00 -0700256inline const Op (&EnumValuesOp())[69] {
Eric Kunze2364dcd2021-04-26 11:06:57 -0700257 static const Op values[] = {
258 Op_UNKNOWN,
259 Op_ARGMAX,
260 Op_AVG_POOL2D,
261 Op_CONV2D,
262 Op_CONV3D,
263 Op_DEPTHWISE_CONV2D,
264 Op_FULLY_CONNECTED,
265 Op_MATMUL,
266 Op_MAX_POOL2D,
267 Op_TRANSPOSE_CONV2D,
268 Op_CLAMP,
269 Op_RELUN,
270 Op_SIGMOID,
271 Op_TANH,
272 Op_ADD,
273 Op_ARITHMETIC_RIGHT_SHIFT,
274 Op_BITWISE_AND,
275 Op_BITWISE_OR,
276 Op_BITWISE_XOR,
Kevin Chenga8b4eaf2021-05-10 13:14:00 -0700277 Op_DIV,
Eric Kunze2364dcd2021-04-26 11:06:57 -0700278 Op_LOGICAL_AND,
279 Op_LOGICAL_LEFT_SHIFT,
280 Op_LOGICAL_RIGHT_SHIFT,
281 Op_LOGICAL_OR,
282 Op_LOGICAL_XOR,
283 Op_MAXIMUM,
284 Op_MINIMUM,
285 Op_MUL,
286 Op_POW,
287 Op_SUB,
288 Op_TABLE,
289 Op_ABS,
290 Op_BITWISE_NOT,
291 Op_CEIL,
292 Op_CLZ,
293 Op_EXP,
294 Op_FLOOR,
295 Op_LOG,
296 Op_LOGICAL_NOT,
297 Op_NEGATE,
298 Op_RECIPROCAL,
299 Op_RSQRT,
300 Op_SELECT,
301 Op_EQUAL,
302 Op_GREATER,
303 Op_GREATER_EQUAL,
304 Op_REDUCE_ANY,
305 Op_REDUCE_ALL,
306 Op_REDUCE_MAX,
307 Op_REDUCE_MIN,
308 Op_REDUCE_PRODUCT,
309 Op_REDUCE_SUM,
310 Op_CONCAT,
311 Op_PAD,
312 Op_RESHAPE,
313 Op_REVERSE,
314 Op_SLICE,
315 Op_TILE,
316 Op_TRANSPOSE,
317 Op_GATHER,
318 Op_SCATTER,
319 Op_RESIZE,
320 Op_CAST,
321 Op_RESCALE,
322 Op_CONST,
Eric Kunze2364dcd2021-04-26 11:06:57 -0700323 Op_IDENTITY,
Eric Kunze2364dcd2021-04-26 11:06:57 -0700324 Op_CUSTOM,
325 Op_COND_IF,
326 Op_WHILE_LOOP
327 };
328 return values;
329}
330
331inline const char * const *EnumNamesOp() {
Kevin Chenga8b4eaf2021-05-10 13:14:00 -0700332 static const char * const names[70] = {
Eric Kunze2364dcd2021-04-26 11:06:57 -0700333 "UNKNOWN",
334 "ARGMAX",
335 "AVG_POOL2D",
336 "CONV2D",
337 "CONV3D",
338 "DEPTHWISE_CONV2D",
339 "FULLY_CONNECTED",
340 "MATMUL",
341 "MAX_POOL2D",
342 "TRANSPOSE_CONV2D",
343 "CLAMP",
344 "RELUN",
345 "SIGMOID",
346 "TANH",
347 "ADD",
348 "ARITHMETIC_RIGHT_SHIFT",
349 "BITWISE_AND",
350 "BITWISE_OR",
351 "BITWISE_XOR",
Kevin Chenga8b4eaf2021-05-10 13:14:00 -0700352 "DIV",
Eric Kunze2364dcd2021-04-26 11:06:57 -0700353 "LOGICAL_AND",
354 "LOGICAL_LEFT_SHIFT",
355 "LOGICAL_RIGHT_SHIFT",
356 "LOGICAL_OR",
357 "LOGICAL_XOR",
358 "MAXIMUM",
359 "MINIMUM",
360 "MUL",
361 "POW",
362 "SUB",
363 "TABLE",
364 "ABS",
365 "BITWISE_NOT",
366 "CEIL",
367 "CLZ",
368 "EXP",
369 "FLOOR",
370 "LOG",
371 "LOGICAL_NOT",
372 "NEGATE",
373 "RECIPROCAL",
374 "RSQRT",
375 "SELECT",
376 "EQUAL",
377 "GREATER",
378 "GREATER_EQUAL",
379 "REDUCE_ANY",
380 "REDUCE_ALL",
381 "REDUCE_MAX",
382 "REDUCE_MIN",
383 "REDUCE_PRODUCT",
384 "REDUCE_SUM",
385 "CONCAT",
386 "PAD",
387 "RESHAPE",
388 "REVERSE",
389 "SLICE",
390 "TILE",
391 "TRANSPOSE",
392 "GATHER",
393 "SCATTER",
394 "RESIZE",
395 "CAST",
396 "RESCALE",
397 "CONST",
Eric Kunze2364dcd2021-04-26 11:06:57 -0700398 "IDENTITY",
Eric Kunze2364dcd2021-04-26 11:06:57 -0700399 "CUSTOM",
400 "COND_IF",
401 "WHILE_LOOP",
402 nullptr
403 };
404 return names;
405}
406
407inline const char *EnumNameOp(Op e) {
408 if (flatbuffers::IsOutRange(e, Op_UNKNOWN, Op_WHILE_LOOP)) return "";
409 const size_t index = static_cast<size_t>(e);
410 return EnumNamesOp()[index];
411}
412
413enum Attribute {
414 Attribute_NONE = 0,
415 Attribute_Pool2dAttribute = 1,
416 Attribute_Conv2dAttribute = 2,
417 Attribute_TransposeConv2dAttribute = 3,
418 Attribute_ReluNAttribute = 4,
419 Attribute_AxisAttribute = 5,
420 Attribute_ReshapeAttribute = 6,
421 Attribute_SliceAttribute = 7,
422 Attribute_TileAttribute = 8,
423 Attribute_ResizeAttribute = 9,
424 Attribute_ClampAttribute = 10,
425 Attribute_RescaleAttribute = 11,
426 Attribute_MulAttribute = 12,
427 Attribute_ArithmeticRightShiftAttribute = 13,
428 Attribute_CondIfAttribute = 14,
429 Attribute_WhileLoopAttribute = 15,
430 Attribute_MIN = Attribute_NONE,
431 Attribute_MAX = Attribute_WhileLoopAttribute
432};
433
434inline const Attribute (&EnumValuesAttribute())[16] {
435 static const Attribute values[] = {
436 Attribute_NONE,
437 Attribute_Pool2dAttribute,
438 Attribute_Conv2dAttribute,
439 Attribute_TransposeConv2dAttribute,
440 Attribute_ReluNAttribute,
441 Attribute_AxisAttribute,
442 Attribute_ReshapeAttribute,
443 Attribute_SliceAttribute,
444 Attribute_TileAttribute,
445 Attribute_ResizeAttribute,
446 Attribute_ClampAttribute,
447 Attribute_RescaleAttribute,
448 Attribute_MulAttribute,
449 Attribute_ArithmeticRightShiftAttribute,
450 Attribute_CondIfAttribute,
451 Attribute_WhileLoopAttribute
452 };
453 return values;
454}
455
456inline const char * const *EnumNamesAttribute() {
457 static const char * const names[17] = {
458 "NONE",
459 "Pool2dAttribute",
460 "Conv2dAttribute",
461 "TransposeConv2dAttribute",
462 "ReluNAttribute",
463 "AxisAttribute",
464 "ReshapeAttribute",
465 "SliceAttribute",
466 "TileAttribute",
467 "ResizeAttribute",
468 "ClampAttribute",
469 "RescaleAttribute",
470 "MulAttribute",
471 "ArithmeticRightShiftAttribute",
472 "CondIfAttribute",
473 "WhileLoopAttribute",
474 nullptr
475 };
476 return names;
477}
478
479inline const char *EnumNameAttribute(Attribute e) {
480 if (flatbuffers::IsOutRange(e, Attribute_NONE, Attribute_WhileLoopAttribute)) return "";
481 const size_t index = static_cast<size_t>(e);
482 return EnumNamesAttribute()[index];
483}
484
485template<typename T> struct AttributeTraits {
486 static const Attribute enum_value = Attribute_NONE;
487};
488
489template<> struct AttributeTraits<tosa::Pool2dAttribute> {
490 static const Attribute enum_value = Attribute_Pool2dAttribute;
491};
492
493template<> struct AttributeTraits<tosa::Conv2dAttribute> {
494 static const Attribute enum_value = Attribute_Conv2dAttribute;
495};
496
497template<> struct AttributeTraits<tosa::TransposeConv2dAttribute> {
498 static const Attribute enum_value = Attribute_TransposeConv2dAttribute;
499};
500
501template<> struct AttributeTraits<tosa::ReluNAttribute> {
502 static const Attribute enum_value = Attribute_ReluNAttribute;
503};
504
505template<> struct AttributeTraits<tosa::AxisAttribute> {
506 static const Attribute enum_value = Attribute_AxisAttribute;
507};
508
509template<> struct AttributeTraits<tosa::ReshapeAttribute> {
510 static const Attribute enum_value = Attribute_ReshapeAttribute;
511};
512
513template<> struct AttributeTraits<tosa::SliceAttribute> {
514 static const Attribute enum_value = Attribute_SliceAttribute;
515};
516
517template<> struct AttributeTraits<tosa::TileAttribute> {
518 static const Attribute enum_value = Attribute_TileAttribute;
519};
520
521template<> struct AttributeTraits<tosa::ResizeAttribute> {
522 static const Attribute enum_value = Attribute_ResizeAttribute;
523};
524
525template<> struct AttributeTraits<tosa::ClampAttribute> {
526 static const Attribute enum_value = Attribute_ClampAttribute;
527};
528
529template<> struct AttributeTraits<tosa::RescaleAttribute> {
530 static const Attribute enum_value = Attribute_RescaleAttribute;
531};
532
533template<> struct AttributeTraits<tosa::MulAttribute> {
534 static const Attribute enum_value = Attribute_MulAttribute;
535};
536
537template<> struct AttributeTraits<tosa::ArithmeticRightShiftAttribute> {
538 static const Attribute enum_value = Attribute_ArithmeticRightShiftAttribute;
539};
540
541template<> struct AttributeTraits<tosa::CondIfAttribute> {
542 static const Attribute enum_value = Attribute_CondIfAttribute;
543};
544
545template<> struct AttributeTraits<tosa::WhileLoopAttribute> {
546 static const Attribute enum_value = Attribute_WhileLoopAttribute;
547};
548
549bool VerifyAttribute(flatbuffers::Verifier &verifier, const void *obj, Attribute type);
550bool VerifyAttributeVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
551
552enum QuantInfo {
553 QuantInfo_NONE = 0,
554 QuantInfo_UnaryQuantInfo = 1,
555 QuantInfo_ConvQuantInfo = 2,
556 QuantInfo_MatMulQuantInfo = 3,
557 QuantInfo_PadQuantInfo = 4,
558 QuantInfo_MIN = QuantInfo_NONE,
559 QuantInfo_MAX = QuantInfo_PadQuantInfo
560};
561
562inline const QuantInfo (&EnumValuesQuantInfo())[5] {
563 static const QuantInfo values[] = {
564 QuantInfo_NONE,
565 QuantInfo_UnaryQuantInfo,
566 QuantInfo_ConvQuantInfo,
567 QuantInfo_MatMulQuantInfo,
568 QuantInfo_PadQuantInfo
569 };
570 return values;
571}
572
573inline const char * const *EnumNamesQuantInfo() {
574 static const char * const names[6] = {
575 "NONE",
576 "UnaryQuantInfo",
577 "ConvQuantInfo",
578 "MatMulQuantInfo",
579 "PadQuantInfo",
580 nullptr
581 };
582 return names;
583}
584
585inline const char *EnumNameQuantInfo(QuantInfo e) {
586 if (flatbuffers::IsOutRange(e, QuantInfo_NONE, QuantInfo_PadQuantInfo)) return "";
587 const size_t index = static_cast<size_t>(e);
588 return EnumNamesQuantInfo()[index];
589}
590
591template<typename T> struct QuantInfoTraits {
592 static const QuantInfo enum_value = QuantInfo_NONE;
593};
594
595template<> struct QuantInfoTraits<tosa::UnaryQuantInfo> {
596 static const QuantInfo enum_value = QuantInfo_UnaryQuantInfo;
597};
598
599template<> struct QuantInfoTraits<tosa::ConvQuantInfo> {
600 static const QuantInfo enum_value = QuantInfo_ConvQuantInfo;
601};
602
603template<> struct QuantInfoTraits<tosa::MatMulQuantInfo> {
604 static const QuantInfo enum_value = QuantInfo_MatMulQuantInfo;
605};
606
607template<> struct QuantInfoTraits<tosa::PadQuantInfo> {
608 static const QuantInfo enum_value = QuantInfo_PadQuantInfo;
609};
610
611bool VerifyQuantInfo(flatbuffers::Verifier &verifier, const void *obj, QuantInfo type);
612bool VerifyQuantInfoVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
613
614struct Pool2dAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
615 typedef Pool2dAttributeBuilder Builder;
616 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
617 VT_PADDING = 4,
618 VT_KERNEL = 6,
619 VT_STRIDE = 8
620 };
621 const flatbuffers::Vector<int32_t> *padding() const {
622 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_PADDING);
623 }
624 const flatbuffers::Vector<int32_t> *kernel() const {
625 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_KERNEL);
626 }
627 const flatbuffers::Vector<int32_t> *stride() const {
628 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_STRIDE);
629 }
630 bool Verify(flatbuffers::Verifier &verifier) const {
631 return VerifyTableStart(verifier) &&
632 VerifyOffset(verifier, VT_PADDING) &&
633 verifier.VerifyVector(padding()) &&
634 VerifyOffset(verifier, VT_KERNEL) &&
635 verifier.VerifyVector(kernel()) &&
636 VerifyOffset(verifier, VT_STRIDE) &&
637 verifier.VerifyVector(stride()) &&
638 verifier.EndTable();
639 }
640};
641
642struct Pool2dAttributeBuilder {
643 typedef Pool2dAttribute Table;
644 flatbuffers::FlatBufferBuilder &fbb_;
645 flatbuffers::uoffset_t start_;
646 void add_padding(flatbuffers::Offset<flatbuffers::Vector<int32_t>> padding) {
647 fbb_.AddOffset(Pool2dAttribute::VT_PADDING, padding);
648 }
649 void add_kernel(flatbuffers::Offset<flatbuffers::Vector<int32_t>> kernel) {
650 fbb_.AddOffset(Pool2dAttribute::VT_KERNEL, kernel);
651 }
652 void add_stride(flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride) {
653 fbb_.AddOffset(Pool2dAttribute::VT_STRIDE, stride);
654 }
655 explicit Pool2dAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
656 : fbb_(_fbb) {
657 start_ = fbb_.StartTable();
658 }
659 Pool2dAttributeBuilder &operator=(const Pool2dAttributeBuilder &);
660 flatbuffers::Offset<Pool2dAttribute> Finish() {
661 const auto end = fbb_.EndTable(start_);
662 auto o = flatbuffers::Offset<Pool2dAttribute>(end);
663 return o;
664 }
665};
666
667inline flatbuffers::Offset<Pool2dAttribute> CreatePool2dAttribute(
668 flatbuffers::FlatBufferBuilder &_fbb,
669 flatbuffers::Offset<flatbuffers::Vector<int32_t>> padding = 0,
670 flatbuffers::Offset<flatbuffers::Vector<int32_t>> kernel = 0,
671 flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride = 0) {
672 Pool2dAttributeBuilder builder_(_fbb);
673 builder_.add_stride(stride);
674 builder_.add_kernel(kernel);
675 builder_.add_padding(padding);
676 return builder_.Finish();
677}
678
679inline flatbuffers::Offset<Pool2dAttribute> CreatePool2dAttributeDirect(
680 flatbuffers::FlatBufferBuilder &_fbb,
681 const std::vector<int32_t> *padding = nullptr,
682 const std::vector<int32_t> *kernel = nullptr,
683 const std::vector<int32_t> *stride = nullptr) {
684 auto padding__ = padding ? _fbb.CreateVector<int32_t>(*padding) : 0;
685 auto kernel__ = kernel ? _fbb.CreateVector<int32_t>(*kernel) : 0;
686 auto stride__ = stride ? _fbb.CreateVector<int32_t>(*stride) : 0;
687 return tosa::CreatePool2dAttribute(
688 _fbb,
689 padding__,
690 kernel__,
691 stride__);
692}
693
694struct Conv2dAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
695 typedef Conv2dAttributeBuilder Builder;
696 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
697 VT_PADDING = 4,
698 VT_STRIDE = 6,
699 VT_DILATION = 8
700 };
701 const flatbuffers::Vector<int32_t> *padding() const {
702 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_PADDING);
703 }
704 const flatbuffers::Vector<int32_t> *stride() const {
705 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_STRIDE);
706 }
707 const flatbuffers::Vector<int32_t> *dilation() const {
708 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_DILATION);
709 }
710 bool Verify(flatbuffers::Verifier &verifier) const {
711 return VerifyTableStart(verifier) &&
712 VerifyOffset(verifier, VT_PADDING) &&
713 verifier.VerifyVector(padding()) &&
714 VerifyOffset(verifier, VT_STRIDE) &&
715 verifier.VerifyVector(stride()) &&
716 VerifyOffset(verifier, VT_DILATION) &&
717 verifier.VerifyVector(dilation()) &&
718 verifier.EndTable();
719 }
720};
721
722struct Conv2dAttributeBuilder {
723 typedef Conv2dAttribute Table;
724 flatbuffers::FlatBufferBuilder &fbb_;
725 flatbuffers::uoffset_t start_;
726 void add_padding(flatbuffers::Offset<flatbuffers::Vector<int32_t>> padding) {
727 fbb_.AddOffset(Conv2dAttribute::VT_PADDING, padding);
728 }
729 void add_stride(flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride) {
730 fbb_.AddOffset(Conv2dAttribute::VT_STRIDE, stride);
731 }
732 void add_dilation(flatbuffers::Offset<flatbuffers::Vector<int32_t>> dilation) {
733 fbb_.AddOffset(Conv2dAttribute::VT_DILATION, dilation);
734 }
735 explicit Conv2dAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
736 : fbb_(_fbb) {
737 start_ = fbb_.StartTable();
738 }
739 Conv2dAttributeBuilder &operator=(const Conv2dAttributeBuilder &);
740 flatbuffers::Offset<Conv2dAttribute> Finish() {
741 const auto end = fbb_.EndTable(start_);
742 auto o = flatbuffers::Offset<Conv2dAttribute>(end);
743 return o;
744 }
745};
746
747inline flatbuffers::Offset<Conv2dAttribute> CreateConv2dAttribute(
748 flatbuffers::FlatBufferBuilder &_fbb,
749 flatbuffers::Offset<flatbuffers::Vector<int32_t>> padding = 0,
750 flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride = 0,
751 flatbuffers::Offset<flatbuffers::Vector<int32_t>> dilation = 0) {
752 Conv2dAttributeBuilder builder_(_fbb);
753 builder_.add_dilation(dilation);
754 builder_.add_stride(stride);
755 builder_.add_padding(padding);
756 return builder_.Finish();
757}
758
759inline flatbuffers::Offset<Conv2dAttribute> CreateConv2dAttributeDirect(
760 flatbuffers::FlatBufferBuilder &_fbb,
761 const std::vector<int32_t> *padding = nullptr,
762 const std::vector<int32_t> *stride = nullptr,
763 const std::vector<int32_t> *dilation = nullptr) {
764 auto padding__ = padding ? _fbb.CreateVector<int32_t>(*padding) : 0;
765 auto stride__ = stride ? _fbb.CreateVector<int32_t>(*stride) : 0;
766 auto dilation__ = dilation ? _fbb.CreateVector<int32_t>(*dilation) : 0;
767 return tosa::CreateConv2dAttribute(
768 _fbb,
769 padding__,
770 stride__,
771 dilation__);
772}
773
774struct TransposeConv2dAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
775 typedef TransposeConv2dAttributeBuilder Builder;
776 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
777 VT_OUTPAD = 4,
778 VT_STRIDE = 6,
779 VT_DILATION = 8,
780 VT_OUTPUT_SHAPE = 10
781 };
782 const flatbuffers::Vector<int32_t> *outpad() const {
783 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPAD);
784 }
785 const flatbuffers::Vector<int32_t> *stride() const {
786 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_STRIDE);
787 }
788 const flatbuffers::Vector<int32_t> *dilation() const {
789 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_DILATION);
790 }
791 const flatbuffers::Vector<int32_t> *output_shape() const {
792 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUT_SHAPE);
793 }
794 bool Verify(flatbuffers::Verifier &verifier) const {
795 return VerifyTableStart(verifier) &&
796 VerifyOffset(verifier, VT_OUTPAD) &&
797 verifier.VerifyVector(outpad()) &&
798 VerifyOffset(verifier, VT_STRIDE) &&
799 verifier.VerifyVector(stride()) &&
800 VerifyOffset(verifier, VT_DILATION) &&
801 verifier.VerifyVector(dilation()) &&
802 VerifyOffset(verifier, VT_OUTPUT_SHAPE) &&
803 verifier.VerifyVector(output_shape()) &&
804 verifier.EndTable();
805 }
806};
807
808struct TransposeConv2dAttributeBuilder {
809 typedef TransposeConv2dAttribute Table;
810 flatbuffers::FlatBufferBuilder &fbb_;
811 flatbuffers::uoffset_t start_;
812 void add_outpad(flatbuffers::Offset<flatbuffers::Vector<int32_t>> outpad) {
813 fbb_.AddOffset(TransposeConv2dAttribute::VT_OUTPAD, outpad);
814 }
815 void add_stride(flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride) {
816 fbb_.AddOffset(TransposeConv2dAttribute::VT_STRIDE, stride);
817 }
818 void add_dilation(flatbuffers::Offset<flatbuffers::Vector<int32_t>> dilation) {
819 fbb_.AddOffset(TransposeConv2dAttribute::VT_DILATION, dilation);
820 }
821 void add_output_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> output_shape) {
822 fbb_.AddOffset(TransposeConv2dAttribute::VT_OUTPUT_SHAPE, output_shape);
823 }
824 explicit TransposeConv2dAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
825 : fbb_(_fbb) {
826 start_ = fbb_.StartTable();
827 }
828 TransposeConv2dAttributeBuilder &operator=(const TransposeConv2dAttributeBuilder &);
829 flatbuffers::Offset<TransposeConv2dAttribute> Finish() {
830 const auto end = fbb_.EndTable(start_);
831 auto o = flatbuffers::Offset<TransposeConv2dAttribute>(end);
832 return o;
833 }
834};
835
836inline flatbuffers::Offset<TransposeConv2dAttribute> CreateTransposeConv2dAttribute(
837 flatbuffers::FlatBufferBuilder &_fbb,
838 flatbuffers::Offset<flatbuffers::Vector<int32_t>> outpad = 0,
839 flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride = 0,
840 flatbuffers::Offset<flatbuffers::Vector<int32_t>> dilation = 0,
841 flatbuffers::Offset<flatbuffers::Vector<int32_t>> output_shape = 0) {
842 TransposeConv2dAttributeBuilder builder_(_fbb);
843 builder_.add_output_shape(output_shape);
844 builder_.add_dilation(dilation);
845 builder_.add_stride(stride);
846 builder_.add_outpad(outpad);
847 return builder_.Finish();
848}
849
850inline flatbuffers::Offset<TransposeConv2dAttribute> CreateTransposeConv2dAttributeDirect(
851 flatbuffers::FlatBufferBuilder &_fbb,
852 const std::vector<int32_t> *outpad = nullptr,
853 const std::vector<int32_t> *stride = nullptr,
854 const std::vector<int32_t> *dilation = nullptr,
855 const std::vector<int32_t> *output_shape = nullptr) {
856 auto outpad__ = outpad ? _fbb.CreateVector<int32_t>(*outpad) : 0;
857 auto stride__ = stride ? _fbb.CreateVector<int32_t>(*stride) : 0;
858 auto dilation__ = dilation ? _fbb.CreateVector<int32_t>(*dilation) : 0;
859 auto output_shape__ = output_shape ? _fbb.CreateVector<int32_t>(*output_shape) : 0;
860 return tosa::CreateTransposeConv2dAttribute(
861 _fbb,
862 outpad__,
863 stride__,
864 dilation__,
865 output_shape__);
866}
867
868struct ReluNAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
869 typedef ReluNAttributeBuilder Builder;
870 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
871 VT_MAX_INT = 4,
872 VT_MAX_FP = 6
873 };
874 int32_t max_int() const {
875 return GetField<int32_t>(VT_MAX_INT, 0);
876 }
877 float max_fp() const {
878 return GetField<float>(VT_MAX_FP, 0.0f);
879 }
880 bool Verify(flatbuffers::Verifier &verifier) const {
881 return VerifyTableStart(verifier) &&
882 VerifyField<int32_t>(verifier, VT_MAX_INT) &&
883 VerifyField<float>(verifier, VT_MAX_FP) &&
884 verifier.EndTable();
885 }
886};
887
888struct ReluNAttributeBuilder {
889 typedef ReluNAttribute Table;
890 flatbuffers::FlatBufferBuilder &fbb_;
891 flatbuffers::uoffset_t start_;
892 void add_max_int(int32_t max_int) {
893 fbb_.AddElement<int32_t>(ReluNAttribute::VT_MAX_INT, max_int, 0);
894 }
895 void add_max_fp(float max_fp) {
896 fbb_.AddElement<float>(ReluNAttribute::VT_MAX_FP, max_fp, 0.0f);
897 }
898 explicit ReluNAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
899 : fbb_(_fbb) {
900 start_ = fbb_.StartTable();
901 }
902 ReluNAttributeBuilder &operator=(const ReluNAttributeBuilder &);
903 flatbuffers::Offset<ReluNAttribute> Finish() {
904 const auto end = fbb_.EndTable(start_);
905 auto o = flatbuffers::Offset<ReluNAttribute>(end);
906 return o;
907 }
908};
909
910inline flatbuffers::Offset<ReluNAttribute> CreateReluNAttribute(
911 flatbuffers::FlatBufferBuilder &_fbb,
912 int32_t max_int = 0,
913 float max_fp = 0.0f) {
914 ReluNAttributeBuilder builder_(_fbb);
915 builder_.add_max_fp(max_fp);
916 builder_.add_max_int(max_int);
917 return builder_.Finish();
918}
919
920struct AxisAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
921 typedef AxisAttributeBuilder Builder;
922 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
923 VT_AXIS = 4
924 };
925 int32_t axis() const {
926 return GetField<int32_t>(VT_AXIS, 0);
927 }
928 bool Verify(flatbuffers::Verifier &verifier) const {
929 return VerifyTableStart(verifier) &&
930 VerifyField<int32_t>(verifier, VT_AXIS) &&
931 verifier.EndTable();
932 }
933};
934
935struct AxisAttributeBuilder {
936 typedef AxisAttribute Table;
937 flatbuffers::FlatBufferBuilder &fbb_;
938 flatbuffers::uoffset_t start_;
939 void add_axis(int32_t axis) {
940 fbb_.AddElement<int32_t>(AxisAttribute::VT_AXIS, axis, 0);
941 }
942 explicit AxisAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
943 : fbb_(_fbb) {
944 start_ = fbb_.StartTable();
945 }
946 AxisAttributeBuilder &operator=(const AxisAttributeBuilder &);
947 flatbuffers::Offset<AxisAttribute> Finish() {
948 const auto end = fbb_.EndTable(start_);
949 auto o = flatbuffers::Offset<AxisAttribute>(end);
950 return o;
951 }
952};
953
954inline flatbuffers::Offset<AxisAttribute> CreateAxisAttribute(
955 flatbuffers::FlatBufferBuilder &_fbb,
956 int32_t axis = 0) {
957 AxisAttributeBuilder builder_(_fbb);
958 builder_.add_axis(axis);
959 return builder_.Finish();
960}
961
962struct ReshapeAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
963 typedef ReshapeAttributeBuilder Builder;
964 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
965 VT_SHAPE = 4
966 };
967 const flatbuffers::Vector<int32_t> *shape() const {
968 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE);
969 }
970 bool Verify(flatbuffers::Verifier &verifier) const {
971 return VerifyTableStart(verifier) &&
972 VerifyOffset(verifier, VT_SHAPE) &&
973 verifier.VerifyVector(shape()) &&
974 verifier.EndTable();
975 }
976};
977
978struct ReshapeAttributeBuilder {
979 typedef ReshapeAttribute Table;
980 flatbuffers::FlatBufferBuilder &fbb_;
981 flatbuffers::uoffset_t start_;
982 void add_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape) {
983 fbb_.AddOffset(ReshapeAttribute::VT_SHAPE, shape);
984 }
985 explicit ReshapeAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
986 : fbb_(_fbb) {
987 start_ = fbb_.StartTable();
988 }
989 ReshapeAttributeBuilder &operator=(const ReshapeAttributeBuilder &);
990 flatbuffers::Offset<ReshapeAttribute> Finish() {
991 const auto end = fbb_.EndTable(start_);
992 auto o = flatbuffers::Offset<ReshapeAttribute>(end);
993 return o;
994 }
995};
996
997inline flatbuffers::Offset<ReshapeAttribute> CreateReshapeAttribute(
998 flatbuffers::FlatBufferBuilder &_fbb,
999 flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape = 0) {
1000 ReshapeAttributeBuilder builder_(_fbb);
1001 builder_.add_shape(shape);
1002 return builder_.Finish();
1003}
1004
1005inline flatbuffers::Offset<ReshapeAttribute> CreateReshapeAttributeDirect(
1006 flatbuffers::FlatBufferBuilder &_fbb,
1007 const std::vector<int32_t> *shape = nullptr) {
1008 auto shape__ = shape ? _fbb.CreateVector<int32_t>(*shape) : 0;
1009 return tosa::CreateReshapeAttribute(
1010 _fbb,
1011 shape__);
1012}
1013
1014struct SliceAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1015 typedef SliceAttributeBuilder Builder;
1016 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1017 VT_BEGIN = 4,
1018 VT_SIZE = 6
1019 };
1020 const flatbuffers::Vector<int32_t> *begin() const {
1021 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_BEGIN);
1022 }
1023 const flatbuffers::Vector<int32_t> *size() const {
1024 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SIZE);
1025 }
1026 bool Verify(flatbuffers::Verifier &verifier) const {
1027 return VerifyTableStart(verifier) &&
1028 VerifyOffset(verifier, VT_BEGIN) &&
1029 verifier.VerifyVector(begin()) &&
1030 VerifyOffset(verifier, VT_SIZE) &&
1031 verifier.VerifyVector(size()) &&
1032 verifier.EndTable();
1033 }
1034};
1035
1036struct SliceAttributeBuilder {
1037 typedef SliceAttribute Table;
1038 flatbuffers::FlatBufferBuilder &fbb_;
1039 flatbuffers::uoffset_t start_;
1040 void add_begin(flatbuffers::Offset<flatbuffers::Vector<int32_t>> begin) {
1041 fbb_.AddOffset(SliceAttribute::VT_BEGIN, begin);
1042 }
1043 void add_size(flatbuffers::Offset<flatbuffers::Vector<int32_t>> size) {
1044 fbb_.AddOffset(SliceAttribute::VT_SIZE, size);
1045 }
1046 explicit SliceAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1047 : fbb_(_fbb) {
1048 start_ = fbb_.StartTable();
1049 }
1050 SliceAttributeBuilder &operator=(const SliceAttributeBuilder &);
1051 flatbuffers::Offset<SliceAttribute> Finish() {
1052 const auto end = fbb_.EndTable(start_);
1053 auto o = flatbuffers::Offset<SliceAttribute>(end);
1054 return o;
1055 }
1056};
1057
1058inline flatbuffers::Offset<SliceAttribute> CreateSliceAttribute(
1059 flatbuffers::FlatBufferBuilder &_fbb,
1060 flatbuffers::Offset<flatbuffers::Vector<int32_t>> begin = 0,
1061 flatbuffers::Offset<flatbuffers::Vector<int32_t>> size = 0) {
1062 SliceAttributeBuilder builder_(_fbb);
1063 builder_.add_size(size);
1064 builder_.add_begin(begin);
1065 return builder_.Finish();
1066}
1067
1068inline flatbuffers::Offset<SliceAttribute> CreateSliceAttributeDirect(
1069 flatbuffers::FlatBufferBuilder &_fbb,
1070 const std::vector<int32_t> *begin = nullptr,
1071 const std::vector<int32_t> *size = nullptr) {
1072 auto begin__ = begin ? _fbb.CreateVector<int32_t>(*begin) : 0;
1073 auto size__ = size ? _fbb.CreateVector<int32_t>(*size) : 0;
1074 return tosa::CreateSliceAttribute(
1075 _fbb,
1076 begin__,
1077 size__);
1078}
1079
1080struct TileAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1081 typedef TileAttributeBuilder Builder;
1082 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1083 VT_MULTIPLES = 4
1084 };
1085 const flatbuffers::Vector<int32_t> *multiples() const {
1086 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_MULTIPLES);
1087 }
1088 bool Verify(flatbuffers::Verifier &verifier) const {
1089 return VerifyTableStart(verifier) &&
1090 VerifyOffset(verifier, VT_MULTIPLES) &&
1091 verifier.VerifyVector(multiples()) &&
1092 verifier.EndTable();
1093 }
1094};
1095
1096struct TileAttributeBuilder {
1097 typedef TileAttribute Table;
1098 flatbuffers::FlatBufferBuilder &fbb_;
1099 flatbuffers::uoffset_t start_;
1100 void add_multiples(flatbuffers::Offset<flatbuffers::Vector<int32_t>> multiples) {
1101 fbb_.AddOffset(TileAttribute::VT_MULTIPLES, multiples);
1102 }
1103 explicit TileAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1104 : fbb_(_fbb) {
1105 start_ = fbb_.StartTable();
1106 }
1107 TileAttributeBuilder &operator=(const TileAttributeBuilder &);
1108 flatbuffers::Offset<TileAttribute> Finish() {
1109 const auto end = fbb_.EndTable(start_);
1110 auto o = flatbuffers::Offset<TileAttribute>(end);
1111 return o;
1112 }
1113};
1114
1115inline flatbuffers::Offset<TileAttribute> CreateTileAttribute(
1116 flatbuffers::FlatBufferBuilder &_fbb,
1117 flatbuffers::Offset<flatbuffers::Vector<int32_t>> multiples = 0) {
1118 TileAttributeBuilder builder_(_fbb);
1119 builder_.add_multiples(multiples);
1120 return builder_.Finish();
1121}
1122
1123inline flatbuffers::Offset<TileAttribute> CreateTileAttributeDirect(
1124 flatbuffers::FlatBufferBuilder &_fbb,
1125 const std::vector<int32_t> *multiples = nullptr) {
1126 auto multiples__ = multiples ? _fbb.CreateVector<int32_t>(*multiples) : 0;
1127 return tosa::CreateTileAttribute(
1128 _fbb,
1129 multiples__);
1130}
1131
1132struct ResizeAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1133 typedef ResizeAttributeBuilder Builder;
1134 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1135 VT_OUTPUT_SIZE = 4,
1136 VT_STRIDE = 6,
1137 VT_OFFSET = 8,
1138 VT_SHIFT = 10,
1139 VT_STRIDE_FP = 12,
1140 VT_OFFSET_FP = 14,
1141 VT_MODE = 16
1142 };
1143 const flatbuffers::Vector<int32_t> *output_size() const {
1144 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUT_SIZE);
1145 }
1146 const flatbuffers::Vector<int32_t> *stride() const {
1147 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_STRIDE);
1148 }
1149 const flatbuffers::Vector<int32_t> *offset() const {
1150 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OFFSET);
1151 }
1152 int32_t shift() const {
1153 return GetField<int32_t>(VT_SHIFT, 0);
1154 }
1155 const flatbuffers::Vector<float> *stride_fp() const {
1156 return GetPointer<const flatbuffers::Vector<float> *>(VT_STRIDE_FP);
1157 }
1158 const flatbuffers::Vector<float> *offset_fp() const {
1159 return GetPointer<const flatbuffers::Vector<float> *>(VT_OFFSET_FP);
1160 }
1161 tosa::ResizeMode mode() const {
1162 return static_cast<tosa::ResizeMode>(GetField<uint32_t>(VT_MODE, 0));
1163 }
1164 bool Verify(flatbuffers::Verifier &verifier) const {
1165 return VerifyTableStart(verifier) &&
1166 VerifyOffset(verifier, VT_OUTPUT_SIZE) &&
1167 verifier.VerifyVector(output_size()) &&
1168 VerifyOffset(verifier, VT_STRIDE) &&
1169 verifier.VerifyVector(stride()) &&
1170 VerifyOffset(verifier, VT_OFFSET) &&
1171 verifier.VerifyVector(offset()) &&
1172 VerifyField<int32_t>(verifier, VT_SHIFT) &&
1173 VerifyOffset(verifier, VT_STRIDE_FP) &&
1174 verifier.VerifyVector(stride_fp()) &&
1175 VerifyOffset(verifier, VT_OFFSET_FP) &&
1176 verifier.VerifyVector(offset_fp()) &&
1177 VerifyField<uint32_t>(verifier, VT_MODE) &&
1178 verifier.EndTable();
1179 }
1180};
1181
1182struct ResizeAttributeBuilder {
1183 typedef ResizeAttribute Table;
1184 flatbuffers::FlatBufferBuilder &fbb_;
1185 flatbuffers::uoffset_t start_;
1186 void add_output_size(flatbuffers::Offset<flatbuffers::Vector<int32_t>> output_size) {
1187 fbb_.AddOffset(ResizeAttribute::VT_OUTPUT_SIZE, output_size);
1188 }
1189 void add_stride(flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride) {
1190 fbb_.AddOffset(ResizeAttribute::VT_STRIDE, stride);
1191 }
1192 void add_offset(flatbuffers::Offset<flatbuffers::Vector<int32_t>> offset) {
1193 fbb_.AddOffset(ResizeAttribute::VT_OFFSET, offset);
1194 }
1195 void add_shift(int32_t shift) {
1196 fbb_.AddElement<int32_t>(ResizeAttribute::VT_SHIFT, shift, 0);
1197 }
1198 void add_stride_fp(flatbuffers::Offset<flatbuffers::Vector<float>> stride_fp) {
1199 fbb_.AddOffset(ResizeAttribute::VT_STRIDE_FP, stride_fp);
1200 }
1201 void add_offset_fp(flatbuffers::Offset<flatbuffers::Vector<float>> offset_fp) {
1202 fbb_.AddOffset(ResizeAttribute::VT_OFFSET_FP, offset_fp);
1203 }
1204 void add_mode(tosa::ResizeMode mode) {
1205 fbb_.AddElement<uint32_t>(ResizeAttribute::VT_MODE, static_cast<uint32_t>(mode), 0);
1206 }
1207 explicit ResizeAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1208 : fbb_(_fbb) {
1209 start_ = fbb_.StartTable();
1210 }
1211 ResizeAttributeBuilder &operator=(const ResizeAttributeBuilder &);
1212 flatbuffers::Offset<ResizeAttribute> Finish() {
1213 const auto end = fbb_.EndTable(start_);
1214 auto o = flatbuffers::Offset<ResizeAttribute>(end);
1215 return o;
1216 }
1217};
1218
1219inline flatbuffers::Offset<ResizeAttribute> CreateResizeAttribute(
1220 flatbuffers::FlatBufferBuilder &_fbb,
1221 flatbuffers::Offset<flatbuffers::Vector<int32_t>> output_size = 0,
1222 flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride = 0,
1223 flatbuffers::Offset<flatbuffers::Vector<int32_t>> offset = 0,
1224 int32_t shift = 0,
1225 flatbuffers::Offset<flatbuffers::Vector<float>> stride_fp = 0,
1226 flatbuffers::Offset<flatbuffers::Vector<float>> offset_fp = 0,
1227 tosa::ResizeMode mode = tosa::ResizeMode_UNKNOWN) {
1228 ResizeAttributeBuilder builder_(_fbb);
1229 builder_.add_mode(mode);
1230 builder_.add_offset_fp(offset_fp);
1231 builder_.add_stride_fp(stride_fp);
1232 builder_.add_shift(shift);
1233 builder_.add_offset(offset);
1234 builder_.add_stride(stride);
1235 builder_.add_output_size(output_size);
1236 return builder_.Finish();
1237}
1238
1239inline flatbuffers::Offset<ResizeAttribute> CreateResizeAttributeDirect(
1240 flatbuffers::FlatBufferBuilder &_fbb,
1241 const std::vector<int32_t> *output_size = nullptr,
1242 const std::vector<int32_t> *stride = nullptr,
1243 const std::vector<int32_t> *offset = nullptr,
1244 int32_t shift = 0,
1245 const std::vector<float> *stride_fp = nullptr,
1246 const std::vector<float> *offset_fp = nullptr,
1247 tosa::ResizeMode mode = tosa::ResizeMode_UNKNOWN) {
1248 auto output_size__ = output_size ? _fbb.CreateVector<int32_t>(*output_size) : 0;
1249 auto stride__ = stride ? _fbb.CreateVector<int32_t>(*stride) : 0;
1250 auto offset__ = offset ? _fbb.CreateVector<int32_t>(*offset) : 0;
1251 auto stride_fp__ = stride_fp ? _fbb.CreateVector<float>(*stride_fp) : 0;
1252 auto offset_fp__ = offset_fp ? _fbb.CreateVector<float>(*offset_fp) : 0;
1253 return tosa::CreateResizeAttribute(
1254 _fbb,
1255 output_size__,
1256 stride__,
1257 offset__,
1258 shift,
1259 stride_fp__,
1260 offset_fp__,
1261 mode);
1262}
1263
1264struct ClampAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1265 typedef ClampAttributeBuilder Builder;
1266 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1267 VT_MIN_INT = 4,
1268 VT_MAX_INT = 6,
1269 VT_MIN_FP = 8,
1270 VT_MAX_FP = 10
1271 };
1272 int32_t min_int() const {
1273 return GetField<int32_t>(VT_MIN_INT, 0);
1274 }
1275 int32_t max_int() const {
1276 return GetField<int32_t>(VT_MAX_INT, 0);
1277 }
1278 float min_fp() const {
1279 return GetField<float>(VT_MIN_FP, 0.0f);
1280 }
1281 float max_fp() const {
1282 return GetField<float>(VT_MAX_FP, 0.0f);
1283 }
1284 bool Verify(flatbuffers::Verifier &verifier) const {
1285 return VerifyTableStart(verifier) &&
1286 VerifyField<int32_t>(verifier, VT_MIN_INT) &&
1287 VerifyField<int32_t>(verifier, VT_MAX_INT) &&
1288 VerifyField<float>(verifier, VT_MIN_FP) &&
1289 VerifyField<float>(verifier, VT_MAX_FP) &&
1290 verifier.EndTable();
1291 }
1292};
1293
1294struct ClampAttributeBuilder {
1295 typedef ClampAttribute Table;
1296 flatbuffers::FlatBufferBuilder &fbb_;
1297 flatbuffers::uoffset_t start_;
1298 void add_min_int(int32_t min_int) {
1299 fbb_.AddElement<int32_t>(ClampAttribute::VT_MIN_INT, min_int, 0);
1300 }
1301 void add_max_int(int32_t max_int) {
1302 fbb_.AddElement<int32_t>(ClampAttribute::VT_MAX_INT, max_int, 0);
1303 }
1304 void add_min_fp(float min_fp) {
1305 fbb_.AddElement<float>(ClampAttribute::VT_MIN_FP, min_fp, 0.0f);
1306 }
1307 void add_max_fp(float max_fp) {
1308 fbb_.AddElement<float>(ClampAttribute::VT_MAX_FP, max_fp, 0.0f);
1309 }
1310 explicit ClampAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1311 : fbb_(_fbb) {
1312 start_ = fbb_.StartTable();
1313 }
1314 ClampAttributeBuilder &operator=(const ClampAttributeBuilder &);
1315 flatbuffers::Offset<ClampAttribute> Finish() {
1316 const auto end = fbb_.EndTable(start_);
1317 auto o = flatbuffers::Offset<ClampAttribute>(end);
1318 return o;
1319 }
1320};
1321
1322inline flatbuffers::Offset<ClampAttribute> CreateClampAttribute(
1323 flatbuffers::FlatBufferBuilder &_fbb,
1324 int32_t min_int = 0,
1325 int32_t max_int = 0,
1326 float min_fp = 0.0f,
1327 float max_fp = 0.0f) {
1328 ClampAttributeBuilder builder_(_fbb);
1329 builder_.add_max_fp(max_fp);
1330 builder_.add_min_fp(min_fp);
1331 builder_.add_max_int(max_int);
1332 builder_.add_min_int(min_int);
1333 return builder_.Finish();
1334}
1335
1336struct RescaleAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1337 typedef RescaleAttributeBuilder Builder;
1338 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1339 VT_INPUT_ZP = 4,
1340 VT_OUTPUT_ZP = 6,
1341 VT_MULTIPLIER = 8,
1342 VT_SHIFT = 10,
1343 VT_SCALE32 = 12,
1344 VT_DOUBLE_ROUND = 14,
1345 VT_PER_CHANNEL = 16
1346 };
1347 int32_t input_zp() const {
1348 return GetField<int32_t>(VT_INPUT_ZP, 0);
1349 }
1350 int32_t output_zp() const {
1351 return GetField<int32_t>(VT_OUTPUT_ZP, 0);
1352 }
1353 const flatbuffers::Vector<int32_t> *multiplier() const {
1354 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_MULTIPLIER);
1355 }
1356 const flatbuffers::Vector<int32_t> *shift() const {
1357 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHIFT);
1358 }
1359 bool scale32() const {
1360 return GetField<uint8_t>(VT_SCALE32, 0) != 0;
1361 }
1362 bool double_round() const {
1363 return GetField<uint8_t>(VT_DOUBLE_ROUND, 0) != 0;
1364 }
1365 bool per_channel() const {
1366 return GetField<uint8_t>(VT_PER_CHANNEL, 0) != 0;
1367 }
1368 bool Verify(flatbuffers::Verifier &verifier) const {
1369 return VerifyTableStart(verifier) &&
1370 VerifyField<int32_t>(verifier, VT_INPUT_ZP) &&
1371 VerifyField<int32_t>(verifier, VT_OUTPUT_ZP) &&
1372 VerifyOffset(verifier, VT_MULTIPLIER) &&
1373 verifier.VerifyVector(multiplier()) &&
1374 VerifyOffset(verifier, VT_SHIFT) &&
1375 verifier.VerifyVector(shift()) &&
1376 VerifyField<uint8_t>(verifier, VT_SCALE32) &&
1377 VerifyField<uint8_t>(verifier, VT_DOUBLE_ROUND) &&
1378 VerifyField<uint8_t>(verifier, VT_PER_CHANNEL) &&
1379 verifier.EndTable();
1380 }
1381};
1382
1383struct RescaleAttributeBuilder {
1384 typedef RescaleAttribute Table;
1385 flatbuffers::FlatBufferBuilder &fbb_;
1386 flatbuffers::uoffset_t start_;
1387 void add_input_zp(int32_t input_zp) {
1388 fbb_.AddElement<int32_t>(RescaleAttribute::VT_INPUT_ZP, input_zp, 0);
1389 }
1390 void add_output_zp(int32_t output_zp) {
1391 fbb_.AddElement<int32_t>(RescaleAttribute::VT_OUTPUT_ZP, output_zp, 0);
1392 }
1393 void add_multiplier(flatbuffers::Offset<flatbuffers::Vector<int32_t>> multiplier) {
1394 fbb_.AddOffset(RescaleAttribute::VT_MULTIPLIER, multiplier);
1395 }
1396 void add_shift(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shift) {
1397 fbb_.AddOffset(RescaleAttribute::VT_SHIFT, shift);
1398 }
1399 void add_scale32(bool scale32) {
1400 fbb_.AddElement<uint8_t>(RescaleAttribute::VT_SCALE32, static_cast<uint8_t>(scale32), 0);
1401 }
1402 void add_double_round(bool double_round) {
1403 fbb_.AddElement<uint8_t>(RescaleAttribute::VT_DOUBLE_ROUND, static_cast<uint8_t>(double_round), 0);
1404 }
1405 void add_per_channel(bool per_channel) {
1406 fbb_.AddElement<uint8_t>(RescaleAttribute::VT_PER_CHANNEL, static_cast<uint8_t>(per_channel), 0);
1407 }
1408 explicit RescaleAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1409 : fbb_(_fbb) {
1410 start_ = fbb_.StartTable();
1411 }
1412 RescaleAttributeBuilder &operator=(const RescaleAttributeBuilder &);
1413 flatbuffers::Offset<RescaleAttribute> Finish() {
1414 const auto end = fbb_.EndTable(start_);
1415 auto o = flatbuffers::Offset<RescaleAttribute>(end);
1416 return o;
1417 }
1418};
1419
1420inline flatbuffers::Offset<RescaleAttribute> CreateRescaleAttribute(
1421 flatbuffers::FlatBufferBuilder &_fbb,
1422 int32_t input_zp = 0,
1423 int32_t output_zp = 0,
1424 flatbuffers::Offset<flatbuffers::Vector<int32_t>> multiplier = 0,
1425 flatbuffers::Offset<flatbuffers::Vector<int32_t>> shift = 0,
1426 bool scale32 = false,
1427 bool double_round = false,
1428 bool per_channel = false) {
1429 RescaleAttributeBuilder builder_(_fbb);
1430 builder_.add_shift(shift);
1431 builder_.add_multiplier(multiplier);
1432 builder_.add_output_zp(output_zp);
1433 builder_.add_input_zp(input_zp);
1434 builder_.add_per_channel(per_channel);
1435 builder_.add_double_round(double_round);
1436 builder_.add_scale32(scale32);
1437 return builder_.Finish();
1438}
1439
1440inline flatbuffers::Offset<RescaleAttribute> CreateRescaleAttributeDirect(
1441 flatbuffers::FlatBufferBuilder &_fbb,
1442 int32_t input_zp = 0,
1443 int32_t output_zp = 0,
1444 const std::vector<int32_t> *multiplier = nullptr,
1445 const std::vector<int32_t> *shift = nullptr,
1446 bool scale32 = false,
1447 bool double_round = false,
1448 bool per_channel = false) {
1449 auto multiplier__ = multiplier ? _fbb.CreateVector<int32_t>(*multiplier) : 0;
1450 auto shift__ = shift ? _fbb.CreateVector<int32_t>(*shift) : 0;
1451 return tosa::CreateRescaleAttribute(
1452 _fbb,
1453 input_zp,
1454 output_zp,
1455 multiplier__,
1456 shift__,
1457 scale32,
1458 double_round,
1459 per_channel);
1460}
1461
1462struct MulAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1463 typedef MulAttributeBuilder Builder;
1464 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1465 VT_SHIFT = 4
1466 };
1467 int32_t shift() const {
1468 return GetField<int32_t>(VT_SHIFT, 0);
1469 }
1470 bool Verify(flatbuffers::Verifier &verifier) const {
1471 return VerifyTableStart(verifier) &&
1472 VerifyField<int32_t>(verifier, VT_SHIFT) &&
1473 verifier.EndTable();
1474 }
1475};
1476
1477struct MulAttributeBuilder {
1478 typedef MulAttribute Table;
1479 flatbuffers::FlatBufferBuilder &fbb_;
1480 flatbuffers::uoffset_t start_;
1481 void add_shift(int32_t shift) {
1482 fbb_.AddElement<int32_t>(MulAttribute::VT_SHIFT, shift, 0);
1483 }
1484 explicit MulAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1485 : fbb_(_fbb) {
1486 start_ = fbb_.StartTable();
1487 }
1488 MulAttributeBuilder &operator=(const MulAttributeBuilder &);
1489 flatbuffers::Offset<MulAttribute> Finish() {
1490 const auto end = fbb_.EndTable(start_);
1491 auto o = flatbuffers::Offset<MulAttribute>(end);
1492 return o;
1493 }
1494};
1495
1496inline flatbuffers::Offset<MulAttribute> CreateMulAttribute(
1497 flatbuffers::FlatBufferBuilder &_fbb,
1498 int32_t shift = 0) {
1499 MulAttributeBuilder builder_(_fbb);
1500 builder_.add_shift(shift);
1501 return builder_.Finish();
1502}
1503
1504struct ArithmeticRightShiftAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1505 typedef ArithmeticRightShiftAttributeBuilder Builder;
1506 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1507 VT_ROUND = 4
1508 };
1509 bool round() const {
1510 return GetField<uint8_t>(VT_ROUND, 0) != 0;
1511 }
1512 bool Verify(flatbuffers::Verifier &verifier) const {
1513 return VerifyTableStart(verifier) &&
1514 VerifyField<uint8_t>(verifier, VT_ROUND) &&
1515 verifier.EndTable();
1516 }
1517};
1518
1519struct ArithmeticRightShiftAttributeBuilder {
1520 typedef ArithmeticRightShiftAttribute Table;
1521 flatbuffers::FlatBufferBuilder &fbb_;
1522 flatbuffers::uoffset_t start_;
1523 void add_round(bool round) {
1524 fbb_.AddElement<uint8_t>(ArithmeticRightShiftAttribute::VT_ROUND, static_cast<uint8_t>(round), 0);
1525 }
1526 explicit ArithmeticRightShiftAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1527 : fbb_(_fbb) {
1528 start_ = fbb_.StartTable();
1529 }
1530 ArithmeticRightShiftAttributeBuilder &operator=(const ArithmeticRightShiftAttributeBuilder &);
1531 flatbuffers::Offset<ArithmeticRightShiftAttribute> Finish() {
1532 const auto end = fbb_.EndTable(start_);
1533 auto o = flatbuffers::Offset<ArithmeticRightShiftAttribute>(end);
1534 return o;
1535 }
1536};
1537
1538inline flatbuffers::Offset<ArithmeticRightShiftAttribute> CreateArithmeticRightShiftAttribute(
1539 flatbuffers::FlatBufferBuilder &_fbb,
1540 bool round = false) {
1541 ArithmeticRightShiftAttributeBuilder builder_(_fbb);
1542 builder_.add_round(round);
1543 return builder_.Finish();
1544}
1545
1546struct CondIfAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1547 typedef CondIfAttributeBuilder Builder;
1548 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1549 VT_THEN_BRANCH = 4,
1550 VT_ELSE_BRANCH = 6
1551 };
1552 const flatbuffers::String *then_branch() const {
1553 return GetPointer<const flatbuffers::String *>(VT_THEN_BRANCH);
1554 }
1555 const flatbuffers::String *else_branch() const {
1556 return GetPointer<const flatbuffers::String *>(VT_ELSE_BRANCH);
1557 }
1558 bool Verify(flatbuffers::Verifier &verifier) const {
1559 return VerifyTableStart(verifier) &&
1560 VerifyOffset(verifier, VT_THEN_BRANCH) &&
1561 verifier.VerifyString(then_branch()) &&
1562 VerifyOffset(verifier, VT_ELSE_BRANCH) &&
1563 verifier.VerifyString(else_branch()) &&
1564 verifier.EndTable();
1565 }
1566};
1567
1568struct CondIfAttributeBuilder {
1569 typedef CondIfAttribute Table;
1570 flatbuffers::FlatBufferBuilder &fbb_;
1571 flatbuffers::uoffset_t start_;
1572 void add_then_branch(flatbuffers::Offset<flatbuffers::String> then_branch) {
1573 fbb_.AddOffset(CondIfAttribute::VT_THEN_BRANCH, then_branch);
1574 }
1575 void add_else_branch(flatbuffers::Offset<flatbuffers::String> else_branch) {
1576 fbb_.AddOffset(CondIfAttribute::VT_ELSE_BRANCH, else_branch);
1577 }
1578 explicit CondIfAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1579 : fbb_(_fbb) {
1580 start_ = fbb_.StartTable();
1581 }
1582 CondIfAttributeBuilder &operator=(const CondIfAttributeBuilder &);
1583 flatbuffers::Offset<CondIfAttribute> Finish() {
1584 const auto end = fbb_.EndTable(start_);
1585 auto o = flatbuffers::Offset<CondIfAttribute>(end);
1586 return o;
1587 }
1588};
1589
1590inline flatbuffers::Offset<CondIfAttribute> CreateCondIfAttribute(
1591 flatbuffers::FlatBufferBuilder &_fbb,
1592 flatbuffers::Offset<flatbuffers::String> then_branch = 0,
1593 flatbuffers::Offset<flatbuffers::String> else_branch = 0) {
1594 CondIfAttributeBuilder builder_(_fbb);
1595 builder_.add_else_branch(else_branch);
1596 builder_.add_then_branch(then_branch);
1597 return builder_.Finish();
1598}
1599
1600inline flatbuffers::Offset<CondIfAttribute> CreateCondIfAttributeDirect(
1601 flatbuffers::FlatBufferBuilder &_fbb,
1602 const char *then_branch = nullptr,
1603 const char *else_branch = nullptr) {
1604 auto then_branch__ = then_branch ? _fbb.CreateString(then_branch) : 0;
1605 auto else_branch__ = else_branch ? _fbb.CreateString(else_branch) : 0;
1606 return tosa::CreateCondIfAttribute(
1607 _fbb,
1608 then_branch__,
1609 else_branch__);
1610}
1611
1612struct WhileLoopAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1613 typedef WhileLoopAttributeBuilder Builder;
1614 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1615 VT_COND_BRANCH = 4,
1616 VT_BODY_BRANCH = 6
1617 };
1618 const flatbuffers::String *cond_branch() const {
1619 return GetPointer<const flatbuffers::String *>(VT_COND_BRANCH);
1620 }
1621 const flatbuffers::String *body_branch() const {
1622 return GetPointer<const flatbuffers::String *>(VT_BODY_BRANCH);
1623 }
1624 bool Verify(flatbuffers::Verifier &verifier) const {
1625 return VerifyTableStart(verifier) &&
1626 VerifyOffset(verifier, VT_COND_BRANCH) &&
1627 verifier.VerifyString(cond_branch()) &&
1628 VerifyOffset(verifier, VT_BODY_BRANCH) &&
1629 verifier.VerifyString(body_branch()) &&
1630 verifier.EndTable();
1631 }
1632};
1633
1634struct WhileLoopAttributeBuilder {
1635 typedef WhileLoopAttribute Table;
1636 flatbuffers::FlatBufferBuilder &fbb_;
1637 flatbuffers::uoffset_t start_;
1638 void add_cond_branch(flatbuffers::Offset<flatbuffers::String> cond_branch) {
1639 fbb_.AddOffset(WhileLoopAttribute::VT_COND_BRANCH, cond_branch);
1640 }
1641 void add_body_branch(flatbuffers::Offset<flatbuffers::String> body_branch) {
1642 fbb_.AddOffset(WhileLoopAttribute::VT_BODY_BRANCH, body_branch);
1643 }
1644 explicit WhileLoopAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1645 : fbb_(_fbb) {
1646 start_ = fbb_.StartTable();
1647 }
1648 WhileLoopAttributeBuilder &operator=(const WhileLoopAttributeBuilder &);
1649 flatbuffers::Offset<WhileLoopAttribute> Finish() {
1650 const auto end = fbb_.EndTable(start_);
1651 auto o = flatbuffers::Offset<WhileLoopAttribute>(end);
1652 return o;
1653 }
1654};
1655
1656inline flatbuffers::Offset<WhileLoopAttribute> CreateWhileLoopAttribute(
1657 flatbuffers::FlatBufferBuilder &_fbb,
1658 flatbuffers::Offset<flatbuffers::String> cond_branch = 0,
1659 flatbuffers::Offset<flatbuffers::String> body_branch = 0) {
1660 WhileLoopAttributeBuilder builder_(_fbb);
1661 builder_.add_body_branch(body_branch);
1662 builder_.add_cond_branch(cond_branch);
1663 return builder_.Finish();
1664}
1665
1666inline flatbuffers::Offset<WhileLoopAttribute> CreateWhileLoopAttributeDirect(
1667 flatbuffers::FlatBufferBuilder &_fbb,
1668 const char *cond_branch = nullptr,
1669 const char *body_branch = nullptr) {
1670 auto cond_branch__ = cond_branch ? _fbb.CreateString(cond_branch) : 0;
1671 auto body_branch__ = body_branch ? _fbb.CreateString(body_branch) : 0;
1672 return tosa::CreateWhileLoopAttribute(
1673 _fbb,
1674 cond_branch__,
1675 body_branch__);
1676}
1677
1678struct UnaryQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1679 typedef UnaryQuantInfoBuilder Builder;
1680 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1681 VT_INPUT_ZP = 4,
1682 VT_OUTPUT_ZP = 6
1683 };
1684 int32_t input_zp() const {
1685 return GetField<int32_t>(VT_INPUT_ZP, 0);
1686 }
1687 int32_t output_zp() const {
1688 return GetField<int32_t>(VT_OUTPUT_ZP, 0);
1689 }
1690 bool Verify(flatbuffers::Verifier &verifier) const {
1691 return VerifyTableStart(verifier) &&
1692 VerifyField<int32_t>(verifier, VT_INPUT_ZP) &&
1693 VerifyField<int32_t>(verifier, VT_OUTPUT_ZP) &&
1694 verifier.EndTable();
1695 }
1696};
1697
1698struct UnaryQuantInfoBuilder {
1699 typedef UnaryQuantInfo Table;
1700 flatbuffers::FlatBufferBuilder &fbb_;
1701 flatbuffers::uoffset_t start_;
1702 void add_input_zp(int32_t input_zp) {
1703 fbb_.AddElement<int32_t>(UnaryQuantInfo::VT_INPUT_ZP, input_zp, 0);
1704 }
1705 void add_output_zp(int32_t output_zp) {
1706 fbb_.AddElement<int32_t>(UnaryQuantInfo::VT_OUTPUT_ZP, output_zp, 0);
1707 }
1708 explicit UnaryQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1709 : fbb_(_fbb) {
1710 start_ = fbb_.StartTable();
1711 }
1712 UnaryQuantInfoBuilder &operator=(const UnaryQuantInfoBuilder &);
1713 flatbuffers::Offset<UnaryQuantInfo> Finish() {
1714 const auto end = fbb_.EndTable(start_);
1715 auto o = flatbuffers::Offset<UnaryQuantInfo>(end);
1716 return o;
1717 }
1718};
1719
1720inline flatbuffers::Offset<UnaryQuantInfo> CreateUnaryQuantInfo(
1721 flatbuffers::FlatBufferBuilder &_fbb,
1722 int32_t input_zp = 0,
1723 int32_t output_zp = 0) {
1724 UnaryQuantInfoBuilder builder_(_fbb);
1725 builder_.add_output_zp(output_zp);
1726 builder_.add_input_zp(input_zp);
1727 return builder_.Finish();
1728}
1729
1730struct ConvQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1731 typedef ConvQuantInfoBuilder Builder;
1732 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1733 VT_INPUT_ZP = 4,
1734 VT_WEIGHT_ZP = 6
1735 };
1736 int32_t input_zp() const {
1737 return GetField<int32_t>(VT_INPUT_ZP, 0);
1738 }
1739 int32_t weight_zp() const {
1740 return GetField<int32_t>(VT_WEIGHT_ZP, 0);
1741 }
1742 bool Verify(flatbuffers::Verifier &verifier) const {
1743 return VerifyTableStart(verifier) &&
1744 VerifyField<int32_t>(verifier, VT_INPUT_ZP) &&
1745 VerifyField<int32_t>(verifier, VT_WEIGHT_ZP) &&
1746 verifier.EndTable();
1747 }
1748};
1749
1750struct ConvQuantInfoBuilder {
1751 typedef ConvQuantInfo Table;
1752 flatbuffers::FlatBufferBuilder &fbb_;
1753 flatbuffers::uoffset_t start_;
1754 void add_input_zp(int32_t input_zp) {
1755 fbb_.AddElement<int32_t>(ConvQuantInfo::VT_INPUT_ZP, input_zp, 0);
1756 }
1757 void add_weight_zp(int32_t weight_zp) {
1758 fbb_.AddElement<int32_t>(ConvQuantInfo::VT_WEIGHT_ZP, weight_zp, 0);
1759 }
1760 explicit ConvQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1761 : fbb_(_fbb) {
1762 start_ = fbb_.StartTable();
1763 }
1764 ConvQuantInfoBuilder &operator=(const ConvQuantInfoBuilder &);
1765 flatbuffers::Offset<ConvQuantInfo> Finish() {
1766 const auto end = fbb_.EndTable(start_);
1767 auto o = flatbuffers::Offset<ConvQuantInfo>(end);
1768 return o;
1769 }
1770};
1771
1772inline flatbuffers::Offset<ConvQuantInfo> CreateConvQuantInfo(
1773 flatbuffers::FlatBufferBuilder &_fbb,
1774 int32_t input_zp = 0,
1775 int32_t weight_zp = 0) {
1776 ConvQuantInfoBuilder builder_(_fbb);
1777 builder_.add_weight_zp(weight_zp);
1778 builder_.add_input_zp(input_zp);
1779 return builder_.Finish();
1780}
1781
1782struct MatMulQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1783 typedef MatMulQuantInfoBuilder Builder;
1784 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1785 VT_A_ZP = 4,
1786 VT_B_ZP = 6
1787 };
1788 int32_t a_zp() const {
1789 return GetField<int32_t>(VT_A_ZP, 0);
1790 }
1791 int32_t b_zp() const {
1792 return GetField<int32_t>(VT_B_ZP, 0);
1793 }
1794 bool Verify(flatbuffers::Verifier &verifier) const {
1795 return VerifyTableStart(verifier) &&
1796 VerifyField<int32_t>(verifier, VT_A_ZP) &&
1797 VerifyField<int32_t>(verifier, VT_B_ZP) &&
1798 verifier.EndTable();
1799 }
1800};
1801
1802struct MatMulQuantInfoBuilder {
1803 typedef MatMulQuantInfo Table;
1804 flatbuffers::FlatBufferBuilder &fbb_;
1805 flatbuffers::uoffset_t start_;
1806 void add_a_zp(int32_t a_zp) {
1807 fbb_.AddElement<int32_t>(MatMulQuantInfo::VT_A_ZP, a_zp, 0);
1808 }
1809 void add_b_zp(int32_t b_zp) {
1810 fbb_.AddElement<int32_t>(MatMulQuantInfo::VT_B_ZP, b_zp, 0);
1811 }
1812 explicit MatMulQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1813 : fbb_(_fbb) {
1814 start_ = fbb_.StartTable();
1815 }
1816 MatMulQuantInfoBuilder &operator=(const MatMulQuantInfoBuilder &);
1817 flatbuffers::Offset<MatMulQuantInfo> Finish() {
1818 const auto end = fbb_.EndTable(start_);
1819 auto o = flatbuffers::Offset<MatMulQuantInfo>(end);
1820 return o;
1821 }
1822};
1823
1824inline flatbuffers::Offset<MatMulQuantInfo> CreateMatMulQuantInfo(
1825 flatbuffers::FlatBufferBuilder &_fbb,
1826 int32_t a_zp = 0,
1827 int32_t b_zp = 0) {
1828 MatMulQuantInfoBuilder builder_(_fbb);
1829 builder_.add_b_zp(b_zp);
1830 builder_.add_a_zp(a_zp);
1831 return builder_.Finish();
1832}
1833
1834struct PadQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1835 typedef PadQuantInfoBuilder Builder;
1836 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1837 VT_INPUT_ZP = 4
1838 };
1839 int32_t input_zp() const {
1840 return GetField<int32_t>(VT_INPUT_ZP, 0);
1841 }
1842 bool Verify(flatbuffers::Verifier &verifier) const {
1843 return VerifyTableStart(verifier) &&
1844 VerifyField<int32_t>(verifier, VT_INPUT_ZP) &&
1845 verifier.EndTable();
1846 }
1847};
1848
1849struct PadQuantInfoBuilder {
1850 typedef PadQuantInfo Table;
1851 flatbuffers::FlatBufferBuilder &fbb_;
1852 flatbuffers::uoffset_t start_;
1853 void add_input_zp(int32_t input_zp) {
1854 fbb_.AddElement<int32_t>(PadQuantInfo::VT_INPUT_ZP, input_zp, 0);
1855 }
1856 explicit PadQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1857 : fbb_(_fbb) {
1858 start_ = fbb_.StartTable();
1859 }
1860 PadQuantInfoBuilder &operator=(const PadQuantInfoBuilder &);
1861 flatbuffers::Offset<PadQuantInfo> Finish() {
1862 const auto end = fbb_.EndTable(start_);
1863 auto o = flatbuffers::Offset<PadQuantInfo>(end);
1864 return o;
1865 }
1866};
1867
1868inline flatbuffers::Offset<PadQuantInfo> CreatePadQuantInfo(
1869 flatbuffers::FlatBufferBuilder &_fbb,
1870 int32_t input_zp = 0) {
1871 PadQuantInfoBuilder builder_(_fbb);
1872 builder_.add_input_zp(input_zp);
1873 return builder_.Finish();
1874}
1875
1876struct Version FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1877 typedef VersionBuilder Builder;
1878 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1879 VT__MAJOR = 4,
1880 VT__MINOR = 6,
1881 VT__PATCH = 8,
1882 VT__EXPERIMENTAL = 10
1883 };
1884 int32_t _major() const {
1885 return GetField<int32_t>(VT__MAJOR, 0);
1886 }
1887 int32_t _minor() const {
Kevin Chenga8b4eaf2021-05-10 13:14:00 -07001888 return GetField<int32_t>(VT__MINOR, 22);
Eric Kunze2364dcd2021-04-26 11:06:57 -07001889 }
1890 int32_t _patch() const {
1891 return GetField<int32_t>(VT__PATCH, 0);
1892 }
1893 bool _experimental() const {
1894 return GetField<uint8_t>(VT__EXPERIMENTAL, 0) != 0;
1895 }
1896 bool Verify(flatbuffers::Verifier &verifier) const {
1897 return VerifyTableStart(verifier) &&
1898 VerifyField<int32_t>(verifier, VT__MAJOR) &&
1899 VerifyField<int32_t>(verifier, VT__MINOR) &&
1900 VerifyField<int32_t>(verifier, VT__PATCH) &&
1901 VerifyField<uint8_t>(verifier, VT__EXPERIMENTAL) &&
1902 verifier.EndTable();
1903 }
1904};
1905
1906struct VersionBuilder {
1907 typedef Version Table;
1908 flatbuffers::FlatBufferBuilder &fbb_;
1909 flatbuffers::uoffset_t start_;
1910 void add__major(int32_t _major) {
1911 fbb_.AddElement<int32_t>(Version::VT__MAJOR, _major, 0);
1912 }
1913 void add__minor(int32_t _minor) {
Kevin Chenga8b4eaf2021-05-10 13:14:00 -07001914 fbb_.AddElement<int32_t>(Version::VT__MINOR, _minor, 22);
Eric Kunze2364dcd2021-04-26 11:06:57 -07001915 }
1916 void add__patch(int32_t _patch) {
1917 fbb_.AddElement<int32_t>(Version::VT__PATCH, _patch, 0);
1918 }
1919 void add__experimental(bool _experimental) {
1920 fbb_.AddElement<uint8_t>(Version::VT__EXPERIMENTAL, static_cast<uint8_t>(_experimental), 0);
1921 }
1922 explicit VersionBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1923 : fbb_(_fbb) {
1924 start_ = fbb_.StartTable();
1925 }
1926 VersionBuilder &operator=(const VersionBuilder &);
1927 flatbuffers::Offset<Version> Finish() {
1928 const auto end = fbb_.EndTable(start_);
1929 auto o = flatbuffers::Offset<Version>(end);
1930 return o;
1931 }
1932};
1933
1934inline flatbuffers::Offset<Version> CreateVersion(
1935 flatbuffers::FlatBufferBuilder &_fbb,
1936 int32_t _major = 0,
Kevin Chenga8b4eaf2021-05-10 13:14:00 -07001937 int32_t _minor = 22,
Eric Kunze2364dcd2021-04-26 11:06:57 -07001938 int32_t _patch = 0,
1939 bool _experimental = false) {
1940 VersionBuilder builder_(_fbb);
1941 builder_.add__patch(_patch);
1942 builder_.add__minor(_minor);
1943 builder_.add__major(_major);
1944 builder_.add__experimental(_experimental);
1945 return builder_.Finish();
1946}
1947
1948struct TosaTensor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1949 typedef TosaTensorBuilder Builder;
1950 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1951 VT_NAME = 4,
1952 VT_SHAPE = 6,
1953 VT_TYPE = 8,
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07001954 VT_DATA = 10
Eric Kunze2364dcd2021-04-26 11:06:57 -07001955 };
1956 const flatbuffers::String *name() const {
1957 return GetPointer<const flatbuffers::String *>(VT_NAME);
1958 }
1959 const flatbuffers::Vector<int32_t> *shape() const {
1960 return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE);
1961 }
1962 tosa::DType type() const {
1963 return static_cast<tosa::DType>(GetField<uint32_t>(VT_TYPE, 0));
1964 }
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07001965 const flatbuffers::Vector<uint8_t> *data() const {
1966 return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_DATA);
Eric Kunze2364dcd2021-04-26 11:06:57 -07001967 }
1968 bool Verify(flatbuffers::Verifier &verifier) const {
1969 return VerifyTableStart(verifier) &&
1970 VerifyOffset(verifier, VT_NAME) &&
1971 verifier.VerifyString(name()) &&
1972 VerifyOffset(verifier, VT_SHAPE) &&
1973 verifier.VerifyVector(shape()) &&
1974 VerifyField<uint32_t>(verifier, VT_TYPE) &&
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07001975 VerifyOffset(verifier, VT_DATA) &&
1976 verifier.VerifyVector(data()) &&
Eric Kunze2364dcd2021-04-26 11:06:57 -07001977 verifier.EndTable();
1978 }
1979};
1980
1981struct TosaTensorBuilder {
1982 typedef TosaTensor Table;
1983 flatbuffers::FlatBufferBuilder &fbb_;
1984 flatbuffers::uoffset_t start_;
1985 void add_name(flatbuffers::Offset<flatbuffers::String> name) {
1986 fbb_.AddOffset(TosaTensor::VT_NAME, name);
1987 }
1988 void add_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape) {
1989 fbb_.AddOffset(TosaTensor::VT_SHAPE, shape);
1990 }
1991 void add_type(tosa::DType type) {
1992 fbb_.AddElement<uint32_t>(TosaTensor::VT_TYPE, static_cast<uint32_t>(type), 0);
1993 }
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07001994 void add_data(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data) {
1995 fbb_.AddOffset(TosaTensor::VT_DATA, data);
Eric Kunze2364dcd2021-04-26 11:06:57 -07001996 }
1997 explicit TosaTensorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1998 : fbb_(_fbb) {
1999 start_ = fbb_.StartTable();
2000 }
2001 TosaTensorBuilder &operator=(const TosaTensorBuilder &);
2002 flatbuffers::Offset<TosaTensor> Finish() {
2003 const auto end = fbb_.EndTable(start_);
2004 auto o = flatbuffers::Offset<TosaTensor>(end);
2005 return o;
2006 }
2007};
2008
2009inline flatbuffers::Offset<TosaTensor> CreateTosaTensor(
2010 flatbuffers::FlatBufferBuilder &_fbb,
2011 flatbuffers::Offset<flatbuffers::String> name = 0,
2012 flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape = 0,
2013 tosa::DType type = tosa::DType_UNKNOWN,
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07002014 flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data = 0) {
Eric Kunze2364dcd2021-04-26 11:06:57 -07002015 TosaTensorBuilder builder_(_fbb);
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07002016 builder_.add_data(data);
Eric Kunze2364dcd2021-04-26 11:06:57 -07002017 builder_.add_type(type);
2018 builder_.add_shape(shape);
2019 builder_.add_name(name);
2020 return builder_.Finish();
2021}
2022
2023inline flatbuffers::Offset<TosaTensor> CreateTosaTensorDirect(
2024 flatbuffers::FlatBufferBuilder &_fbb,
2025 const char *name = nullptr,
2026 const std::vector<int32_t> *shape = nullptr,
2027 tosa::DType type = tosa::DType_UNKNOWN,
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07002028 const std::vector<uint8_t> *data = nullptr) {
Eric Kunze2364dcd2021-04-26 11:06:57 -07002029 auto name__ = name ? _fbb.CreateString(name) : 0;
2030 auto shape__ = shape ? _fbb.CreateVector<int32_t>(*shape) : 0;
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07002031 if (data) { _fbb.ForceVectorAlignment(data->size(), sizeof(uint8_t), 8); }
2032 auto data__ = data ? _fbb.CreateVector<uint8_t>(*data) : 0;
Eric Kunze2364dcd2021-04-26 11:06:57 -07002033 return tosa::CreateTosaTensor(
2034 _fbb,
2035 name__,
2036 shape__,
2037 type,
Kevin Cheng3bb1bc12021-06-17 15:57:08 -07002038 data__);
Eric Kunze2364dcd2021-04-26 11:06:57 -07002039}
2040
2041struct TosaOperator FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2042 typedef TosaOperatorBuilder Builder;
2043 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2044 VT_OP = 4,
2045 VT_ATTRIBUTE_TYPE = 6,
2046 VT_ATTRIBUTE = 8,
2047 VT_INPUTS = 10,
2048 VT_OUTPUTS = 12,
2049 VT_QUANT_INFO_TYPE = 14,
2050 VT_QUANT_INFO = 16
2051 };
2052 tosa::Op op() const {
2053 return static_cast<tosa::Op>(GetField<uint32_t>(VT_OP, 0));
2054 }
2055 tosa::Attribute attribute_type() const {
2056 return static_cast<tosa::Attribute>(GetField<uint8_t>(VT_ATTRIBUTE_TYPE, 0));
2057 }
2058 const void *attribute() const {
2059 return GetPointer<const void *>(VT_ATTRIBUTE);
2060 }
2061 template<typename T> const T *attribute_as() const;
2062 const tosa::Pool2dAttribute *attribute_as_Pool2dAttribute() const {
2063 return attribute_type() == tosa::Attribute_Pool2dAttribute ? static_cast<const tosa::Pool2dAttribute *>(attribute()) : nullptr;
2064 }
2065 const tosa::Conv2dAttribute *attribute_as_Conv2dAttribute() const {
2066 return attribute_type() == tosa::Attribute_Conv2dAttribute ? static_cast<const tosa::Conv2dAttribute *>(attribute()) : nullptr;
2067 }
2068 const tosa::TransposeConv2dAttribute *attribute_as_TransposeConv2dAttribute() const {
2069 return attribute_type() == tosa::Attribute_TransposeConv2dAttribute ? static_cast<const tosa::TransposeConv2dAttribute *>(attribute()) : nullptr;
2070 }
2071 const tosa::ReluNAttribute *attribute_as_ReluNAttribute() const {
2072 return attribute_type() == tosa::Attribute_ReluNAttribute ? static_cast<const tosa::ReluNAttribute *>(attribute()) : nullptr;
2073 }
2074 const tosa::AxisAttribute *attribute_as_AxisAttribute() const {
2075 return attribute_type() == tosa::Attribute_AxisAttribute ? static_cast<const tosa::AxisAttribute *>(attribute()) : nullptr;
2076 }
2077 const tosa::ReshapeAttribute *attribute_as_ReshapeAttribute() const {
2078 return attribute_type() == tosa::Attribute_ReshapeAttribute ? static_cast<const tosa::ReshapeAttribute *>(attribute()) : nullptr;
2079 }
2080 const tosa::SliceAttribute *attribute_as_SliceAttribute() const {
2081 return attribute_type() == tosa::Attribute_SliceAttribute ? static_cast<const tosa::SliceAttribute *>(attribute()) : nullptr;
2082 }
2083 const tosa::TileAttribute *attribute_as_TileAttribute() const {
2084 return attribute_type() == tosa::Attribute_TileAttribute ? static_cast<const tosa::TileAttribute *>(attribute()) : nullptr;
2085 }
2086 const tosa::ResizeAttribute *attribute_as_ResizeAttribute() const {
2087 return attribute_type() == tosa::Attribute_ResizeAttribute ? static_cast<const tosa::ResizeAttribute *>(attribute()) : nullptr;
2088 }
2089 const tosa::ClampAttribute *attribute_as_ClampAttribute() const {
2090 return attribute_type() == tosa::Attribute_ClampAttribute ? static_cast<const tosa::ClampAttribute *>(attribute()) : nullptr;
2091 }
2092 const tosa::RescaleAttribute *attribute_as_RescaleAttribute() const {
2093 return attribute_type() == tosa::Attribute_RescaleAttribute ? static_cast<const tosa::RescaleAttribute *>(attribute()) : nullptr;
2094 }
2095 const tosa::MulAttribute *attribute_as_MulAttribute() const {
2096 return attribute_type() == tosa::Attribute_MulAttribute ? static_cast<const tosa::MulAttribute *>(attribute()) : nullptr;
2097 }
2098 const tosa::ArithmeticRightShiftAttribute *attribute_as_ArithmeticRightShiftAttribute() const {
2099 return attribute_type() == tosa::Attribute_ArithmeticRightShiftAttribute ? static_cast<const tosa::ArithmeticRightShiftAttribute *>(attribute()) : nullptr;
2100 }
2101 const tosa::CondIfAttribute *attribute_as_CondIfAttribute() const {
2102 return attribute_type() == tosa::Attribute_CondIfAttribute ? static_cast<const tosa::CondIfAttribute *>(attribute()) : nullptr;
2103 }
2104 const tosa::WhileLoopAttribute *attribute_as_WhileLoopAttribute() const {
2105 return attribute_type() == tosa::Attribute_WhileLoopAttribute ? static_cast<const tosa::WhileLoopAttribute *>(attribute()) : nullptr;
2106 }
2107 const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *inputs() const {
2108 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_INPUTS);
2109 }
2110 const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *outputs() const {
2111 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_OUTPUTS);
2112 }
2113 tosa::QuantInfo quant_info_type() const {
2114 return static_cast<tosa::QuantInfo>(GetField<uint8_t>(VT_QUANT_INFO_TYPE, 0));
2115 }
2116 const void *quant_info() const {
2117 return GetPointer<const void *>(VT_QUANT_INFO);
2118 }
2119 template<typename T> const T *quant_info_as() const;
2120 const tosa::UnaryQuantInfo *quant_info_as_UnaryQuantInfo() const {
2121 return quant_info_type() == tosa::QuantInfo_UnaryQuantInfo ? static_cast<const tosa::UnaryQuantInfo *>(quant_info()) : nullptr;
2122 }
2123 const tosa::ConvQuantInfo *quant_info_as_ConvQuantInfo() const {
2124 return quant_info_type() == tosa::QuantInfo_ConvQuantInfo ? static_cast<const tosa::ConvQuantInfo *>(quant_info()) : nullptr;
2125 }
2126 const tosa::MatMulQuantInfo *quant_info_as_MatMulQuantInfo() const {
2127 return quant_info_type() == tosa::QuantInfo_MatMulQuantInfo ? static_cast<const tosa::MatMulQuantInfo *>(quant_info()) : nullptr;
2128 }
2129 const tosa::PadQuantInfo *quant_info_as_PadQuantInfo() const {
2130 return quant_info_type() == tosa::QuantInfo_PadQuantInfo ? static_cast<const tosa::PadQuantInfo *>(quant_info()) : nullptr;
2131 }
2132 bool Verify(flatbuffers::Verifier &verifier) const {
2133 return VerifyTableStart(verifier) &&
2134 VerifyField<uint32_t>(verifier, VT_OP) &&
2135 VerifyField<uint8_t>(verifier, VT_ATTRIBUTE_TYPE) &&
2136 VerifyOffset(verifier, VT_ATTRIBUTE) &&
2137 VerifyAttribute(verifier, attribute(), attribute_type()) &&
2138 VerifyOffset(verifier, VT_INPUTS) &&
2139 verifier.VerifyVector(inputs()) &&
2140 verifier.VerifyVectorOfStrings(inputs()) &&
2141 VerifyOffset(verifier, VT_OUTPUTS) &&
2142 verifier.VerifyVector(outputs()) &&
2143 verifier.VerifyVectorOfStrings(outputs()) &&
2144 VerifyField<uint8_t>(verifier, VT_QUANT_INFO_TYPE) &&
2145 VerifyOffset(verifier, VT_QUANT_INFO) &&
2146 VerifyQuantInfo(verifier, quant_info(), quant_info_type()) &&
2147 verifier.EndTable();
2148 }
2149};
2150
2151template<> inline const tosa::Pool2dAttribute *TosaOperator::attribute_as<tosa::Pool2dAttribute>() const {
2152 return attribute_as_Pool2dAttribute();
2153}
2154
2155template<> inline const tosa::Conv2dAttribute *TosaOperator::attribute_as<tosa::Conv2dAttribute>() const {
2156 return attribute_as_Conv2dAttribute();
2157}
2158
2159template<> inline const tosa::TransposeConv2dAttribute *TosaOperator::attribute_as<tosa::TransposeConv2dAttribute>() const {
2160 return attribute_as_TransposeConv2dAttribute();
2161}
2162
2163template<> inline const tosa::ReluNAttribute *TosaOperator::attribute_as<tosa::ReluNAttribute>() const {
2164 return attribute_as_ReluNAttribute();
2165}
2166
2167template<> inline const tosa::AxisAttribute *TosaOperator::attribute_as<tosa::AxisAttribute>() const {
2168 return attribute_as_AxisAttribute();
2169}
2170
2171template<> inline const tosa::ReshapeAttribute *TosaOperator::attribute_as<tosa::ReshapeAttribute>() const {
2172 return attribute_as_ReshapeAttribute();
2173}
2174
2175template<> inline const tosa::SliceAttribute *TosaOperator::attribute_as<tosa::SliceAttribute>() const {
2176 return attribute_as_SliceAttribute();
2177}
2178
2179template<> inline const tosa::TileAttribute *TosaOperator::attribute_as<tosa::TileAttribute>() const {
2180 return attribute_as_TileAttribute();
2181}
2182
2183template<> inline const tosa::ResizeAttribute *TosaOperator::attribute_as<tosa::ResizeAttribute>() const {
2184 return attribute_as_ResizeAttribute();
2185}
2186
2187template<> inline const tosa::ClampAttribute *TosaOperator::attribute_as<tosa::ClampAttribute>() const {
2188 return attribute_as_ClampAttribute();
2189}
2190
2191template<> inline const tosa::RescaleAttribute *TosaOperator::attribute_as<tosa::RescaleAttribute>() const {
2192 return attribute_as_RescaleAttribute();
2193}
2194
2195template<> inline const tosa::MulAttribute *TosaOperator::attribute_as<tosa::MulAttribute>() const {
2196 return attribute_as_MulAttribute();
2197}
2198
2199template<> inline const tosa::ArithmeticRightShiftAttribute *TosaOperator::attribute_as<tosa::ArithmeticRightShiftAttribute>() const {
2200 return attribute_as_ArithmeticRightShiftAttribute();
2201}
2202
2203template<> inline const tosa::CondIfAttribute *TosaOperator::attribute_as<tosa::CondIfAttribute>() const {
2204 return attribute_as_CondIfAttribute();
2205}
2206
2207template<> inline const tosa::WhileLoopAttribute *TosaOperator::attribute_as<tosa::WhileLoopAttribute>() const {
2208 return attribute_as_WhileLoopAttribute();
2209}
2210
2211template<> inline const tosa::UnaryQuantInfo *TosaOperator::quant_info_as<tosa::UnaryQuantInfo>() const {
2212 return quant_info_as_UnaryQuantInfo();
2213}
2214
2215template<> inline const tosa::ConvQuantInfo *TosaOperator::quant_info_as<tosa::ConvQuantInfo>() const {
2216 return quant_info_as_ConvQuantInfo();
2217}
2218
2219template<> inline const tosa::MatMulQuantInfo *TosaOperator::quant_info_as<tosa::MatMulQuantInfo>() const {
2220 return quant_info_as_MatMulQuantInfo();
2221}
2222
2223template<> inline const tosa::PadQuantInfo *TosaOperator::quant_info_as<tosa::PadQuantInfo>() const {
2224 return quant_info_as_PadQuantInfo();
2225}
2226
2227struct TosaOperatorBuilder {
2228 typedef TosaOperator Table;
2229 flatbuffers::FlatBufferBuilder &fbb_;
2230 flatbuffers::uoffset_t start_;
2231 void add_op(tosa::Op op) {
2232 fbb_.AddElement<uint32_t>(TosaOperator::VT_OP, static_cast<uint32_t>(op), 0);
2233 }
2234 void add_attribute_type(tosa::Attribute attribute_type) {
2235 fbb_.AddElement<uint8_t>(TosaOperator::VT_ATTRIBUTE_TYPE, static_cast<uint8_t>(attribute_type), 0);
2236 }
2237 void add_attribute(flatbuffers::Offset<void> attribute) {
2238 fbb_.AddOffset(TosaOperator::VT_ATTRIBUTE, attribute);
2239 }
2240 void add_inputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> inputs) {
2241 fbb_.AddOffset(TosaOperator::VT_INPUTS, inputs);
2242 }
2243 void add_outputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> outputs) {
2244 fbb_.AddOffset(TosaOperator::VT_OUTPUTS, outputs);
2245 }
2246 void add_quant_info_type(tosa::QuantInfo quant_info_type) {
2247 fbb_.AddElement<uint8_t>(TosaOperator::VT_QUANT_INFO_TYPE, static_cast<uint8_t>(quant_info_type), 0);
2248 }
2249 void add_quant_info(flatbuffers::Offset<void> quant_info) {
2250 fbb_.AddOffset(TosaOperator::VT_QUANT_INFO, quant_info);
2251 }
2252 explicit TosaOperatorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2253 : fbb_(_fbb) {
2254 start_ = fbb_.StartTable();
2255 }
2256 TosaOperatorBuilder &operator=(const TosaOperatorBuilder &);
2257 flatbuffers::Offset<TosaOperator> Finish() {
2258 const auto end = fbb_.EndTable(start_);
2259 auto o = flatbuffers::Offset<TosaOperator>(end);
2260 return o;
2261 }
2262};
2263
2264inline flatbuffers::Offset<TosaOperator> CreateTosaOperator(
2265 flatbuffers::FlatBufferBuilder &_fbb,
2266 tosa::Op op = tosa::Op_UNKNOWN,
2267 tosa::Attribute attribute_type = tosa::Attribute_NONE,
2268 flatbuffers::Offset<void> attribute = 0,
2269 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> inputs = 0,
2270 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> outputs = 0,
2271 tosa::QuantInfo quant_info_type = tosa::QuantInfo_NONE,
2272 flatbuffers::Offset<void> quant_info = 0) {
2273 TosaOperatorBuilder builder_(_fbb);
2274 builder_.add_quant_info(quant_info);
2275 builder_.add_outputs(outputs);
2276 builder_.add_inputs(inputs);
2277 builder_.add_attribute(attribute);
2278 builder_.add_op(op);
2279 builder_.add_quant_info_type(quant_info_type);
2280 builder_.add_attribute_type(attribute_type);
2281 return builder_.Finish();
2282}
2283
2284inline flatbuffers::Offset<TosaOperator> CreateTosaOperatorDirect(
2285 flatbuffers::FlatBufferBuilder &_fbb,
2286 tosa::Op op = tosa::Op_UNKNOWN,
2287 tosa::Attribute attribute_type = tosa::Attribute_NONE,
2288 flatbuffers::Offset<void> attribute = 0,
2289 const std::vector<flatbuffers::Offset<flatbuffers::String>> *inputs = nullptr,
2290 const std::vector<flatbuffers::Offset<flatbuffers::String>> *outputs = nullptr,
2291 tosa::QuantInfo quant_info_type = tosa::QuantInfo_NONE,
2292 flatbuffers::Offset<void> quant_info = 0) {
2293 auto inputs__ = inputs ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*inputs) : 0;
2294 auto outputs__ = outputs ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*outputs) : 0;
2295 return tosa::CreateTosaOperator(
2296 _fbb,
2297 op,
2298 attribute_type,
2299 attribute,
2300 inputs__,
2301 outputs__,
2302 quant_info_type,
2303 quant_info);
2304}
2305
2306struct TosaBasicBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2307 typedef TosaBasicBlockBuilder Builder;
2308 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2309 VT_NAME = 4,
2310 VT_OPERATORS = 6,
2311 VT_TENSORS = 8,
2312 VT_INPUTS = 10,
2313 VT_OUTPUTS = 12
2314 };
2315 const flatbuffers::String *name() const {
2316 return GetPointer<const flatbuffers::String *>(VT_NAME);
2317 }
2318 const flatbuffers::Vector<flatbuffers::Offset<tosa::TosaOperator>> *operators() const {
2319 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tosa::TosaOperator>> *>(VT_OPERATORS);
2320 }
2321 const flatbuffers::Vector<flatbuffers::Offset<tosa::TosaTensor>> *tensors() const {
2322 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tosa::TosaTensor>> *>(VT_TENSORS);
2323 }
2324 const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *inputs() const {
2325 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_INPUTS);
2326 }
2327 const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *outputs() const {
2328 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_OUTPUTS);
2329 }
2330 bool Verify(flatbuffers::Verifier &verifier) const {
2331 return VerifyTableStart(verifier) &&
2332 VerifyOffset(verifier, VT_NAME) &&
2333 verifier.VerifyString(name()) &&
2334 VerifyOffset(verifier, VT_OPERATORS) &&
2335 verifier.VerifyVector(operators()) &&
2336 verifier.VerifyVectorOfTables(operators()) &&
2337 VerifyOffset(verifier, VT_TENSORS) &&
2338 verifier.VerifyVector(tensors()) &&
2339 verifier.VerifyVectorOfTables(tensors()) &&
2340 VerifyOffset(verifier, VT_INPUTS) &&
2341 verifier.VerifyVector(inputs()) &&
2342 verifier.VerifyVectorOfStrings(inputs()) &&
2343 VerifyOffset(verifier, VT_OUTPUTS) &&
2344 verifier.VerifyVector(outputs()) &&
2345 verifier.VerifyVectorOfStrings(outputs()) &&
2346 verifier.EndTable();
2347 }
2348};
2349
2350struct TosaBasicBlockBuilder {
2351 typedef TosaBasicBlock Table;
2352 flatbuffers::FlatBufferBuilder &fbb_;
2353 flatbuffers::uoffset_t start_;
2354 void add_name(flatbuffers::Offset<flatbuffers::String> name) {
2355 fbb_.AddOffset(TosaBasicBlock::VT_NAME, name);
2356 }
2357 void add_operators(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tosa::TosaOperator>>> operators) {
2358 fbb_.AddOffset(TosaBasicBlock::VT_OPERATORS, operators);
2359 }
2360 void add_tensors(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tosa::TosaTensor>>> tensors) {
2361 fbb_.AddOffset(TosaBasicBlock::VT_TENSORS, tensors);
2362 }
2363 void add_inputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> inputs) {
2364 fbb_.AddOffset(TosaBasicBlock::VT_INPUTS, inputs);
2365 }
2366 void add_outputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> outputs) {
2367 fbb_.AddOffset(TosaBasicBlock::VT_OUTPUTS, outputs);
2368 }
2369 explicit TosaBasicBlockBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2370 : fbb_(_fbb) {
2371 start_ = fbb_.StartTable();
2372 }
2373 TosaBasicBlockBuilder &operator=(const TosaBasicBlockBuilder &);
2374 flatbuffers::Offset<TosaBasicBlock> Finish() {
2375 const auto end = fbb_.EndTable(start_);
2376 auto o = flatbuffers::Offset<TosaBasicBlock>(end);
2377 return o;
2378 }
2379};
2380
2381inline flatbuffers::Offset<TosaBasicBlock> CreateTosaBasicBlock(
2382 flatbuffers::FlatBufferBuilder &_fbb,
2383 flatbuffers::Offset<flatbuffers::String> name = 0,
2384 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tosa::TosaOperator>>> operators = 0,
2385 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tosa::TosaTensor>>> tensors = 0,
2386 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> inputs = 0,
2387 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> outputs = 0) {
2388 TosaBasicBlockBuilder builder_(_fbb);
2389 builder_.add_outputs(outputs);
2390 builder_.add_inputs(inputs);
2391 builder_.add_tensors(tensors);
2392 builder_.add_operators(operators);
2393 builder_.add_name(name);
2394 return builder_.Finish();
2395}
2396
2397inline flatbuffers::Offset<TosaBasicBlock> CreateTosaBasicBlockDirect(
2398 flatbuffers::FlatBufferBuilder &_fbb,
2399 const char *name = nullptr,
2400 const std::vector<flatbuffers::Offset<tosa::TosaOperator>> *operators = nullptr,
2401 const std::vector<flatbuffers::Offset<tosa::TosaTensor>> *tensors = nullptr,
2402 const std::vector<flatbuffers::Offset<flatbuffers::String>> *inputs = nullptr,
2403 const std::vector<flatbuffers::Offset<flatbuffers::String>> *outputs = nullptr) {
2404 auto name__ = name ? _fbb.CreateString(name) : 0;
2405 auto operators__ = operators ? _fbb.CreateVector<flatbuffers::Offset<tosa::TosaOperator>>(*operators) : 0;
2406 auto tensors__ = tensors ? _fbb.CreateVector<flatbuffers::Offset<tosa::TosaTensor>>(*tensors) : 0;
2407 auto inputs__ = inputs ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*inputs) : 0;
2408 auto outputs__ = outputs ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*outputs) : 0;
2409 return tosa::CreateTosaBasicBlock(
2410 _fbb,
2411 name__,
2412 operators__,
2413 tensors__,
2414 inputs__,
2415 outputs__);
2416}
2417
2418struct TosaGraph FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2419 typedef TosaGraphBuilder Builder;
2420 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2421 VT_VERSION = 4,
2422 VT_BLOCKS = 6
2423 };
2424 const tosa::Version *version() const {
2425 return GetPointer<const tosa::Version *>(VT_VERSION);
2426 }
2427 const flatbuffers::Vector<flatbuffers::Offset<tosa::TosaBasicBlock>> *blocks() const {
2428 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tosa::TosaBasicBlock>> *>(VT_BLOCKS);
2429 }
2430 bool Verify(flatbuffers::Verifier &verifier) const {
2431 return VerifyTableStart(verifier) &&
2432 VerifyOffset(verifier, VT_VERSION) &&
2433 verifier.VerifyTable(version()) &&
2434 VerifyOffset(verifier, VT_BLOCKS) &&
2435 verifier.VerifyVector(blocks()) &&
2436 verifier.VerifyVectorOfTables(blocks()) &&
2437 verifier.EndTable();
2438 }
2439};
2440
2441struct TosaGraphBuilder {
2442 typedef TosaGraph Table;
2443 flatbuffers::FlatBufferBuilder &fbb_;
2444 flatbuffers::uoffset_t start_;
2445 void add_version(flatbuffers::Offset<tosa::Version> version) {
2446 fbb_.AddOffset(TosaGraph::VT_VERSION, version);
2447 }
2448 void add_blocks(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tosa::TosaBasicBlock>>> blocks) {
2449 fbb_.AddOffset(TosaGraph::VT_BLOCKS, blocks);
2450 }
2451 explicit TosaGraphBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2452 : fbb_(_fbb) {
2453 start_ = fbb_.StartTable();
2454 }
2455 TosaGraphBuilder &operator=(const TosaGraphBuilder &);
2456 flatbuffers::Offset<TosaGraph> Finish() {
2457 const auto end = fbb_.EndTable(start_);
2458 auto o = flatbuffers::Offset<TosaGraph>(end);
2459 return o;
2460 }
2461};
2462
2463inline flatbuffers::Offset<TosaGraph> CreateTosaGraph(
2464 flatbuffers::FlatBufferBuilder &_fbb,
2465 flatbuffers::Offset<tosa::Version> version = 0,
2466 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tosa::TosaBasicBlock>>> blocks = 0) {
2467 TosaGraphBuilder builder_(_fbb);
2468 builder_.add_blocks(blocks);
2469 builder_.add_version(version);
2470 return builder_.Finish();
2471}
2472
2473inline flatbuffers::Offset<TosaGraph> CreateTosaGraphDirect(
2474 flatbuffers::FlatBufferBuilder &_fbb,
2475 flatbuffers::Offset<tosa::Version> version = 0,
2476 const std::vector<flatbuffers::Offset<tosa::TosaBasicBlock>> *blocks = nullptr) {
2477 auto blocks__ = blocks ? _fbb.CreateVector<flatbuffers::Offset<tosa::TosaBasicBlock>>(*blocks) : 0;
2478 return tosa::CreateTosaGraph(
2479 _fbb,
2480 version,
2481 blocks__);
2482}
2483
2484inline bool VerifyAttribute(flatbuffers::Verifier &verifier, const void *obj, Attribute type) {
2485 switch (type) {
2486 case Attribute_NONE: {
2487 return true;
2488 }
2489 case Attribute_Pool2dAttribute: {
2490 auto ptr = reinterpret_cast<const tosa::Pool2dAttribute *>(obj);
2491 return verifier.VerifyTable(ptr);
2492 }
2493 case Attribute_Conv2dAttribute: {
2494 auto ptr = reinterpret_cast<const tosa::Conv2dAttribute *>(obj);
2495 return verifier.VerifyTable(ptr);
2496 }
2497 case Attribute_TransposeConv2dAttribute: {
2498 auto ptr = reinterpret_cast<const tosa::TransposeConv2dAttribute *>(obj);
2499 return verifier.VerifyTable(ptr);
2500 }
2501 case Attribute_ReluNAttribute: {
2502 auto ptr = reinterpret_cast<const tosa::ReluNAttribute *>(obj);
2503 return verifier.VerifyTable(ptr);
2504 }
2505 case Attribute_AxisAttribute: {
2506 auto ptr = reinterpret_cast<const tosa::AxisAttribute *>(obj);
2507 return verifier.VerifyTable(ptr);
2508 }
2509 case Attribute_ReshapeAttribute: {
2510 auto ptr = reinterpret_cast<const tosa::ReshapeAttribute *>(obj);
2511 return verifier.VerifyTable(ptr);
2512 }
2513 case Attribute_SliceAttribute: {
2514 auto ptr = reinterpret_cast<const tosa::SliceAttribute *>(obj);
2515 return verifier.VerifyTable(ptr);
2516 }
2517 case Attribute_TileAttribute: {
2518 auto ptr = reinterpret_cast<const tosa::TileAttribute *>(obj);
2519 return verifier.VerifyTable(ptr);
2520 }
2521 case Attribute_ResizeAttribute: {
2522 auto ptr = reinterpret_cast<const tosa::ResizeAttribute *>(obj);
2523 return verifier.VerifyTable(ptr);
2524 }
2525 case Attribute_ClampAttribute: {
2526 auto ptr = reinterpret_cast<const tosa::ClampAttribute *>(obj);
2527 return verifier.VerifyTable(ptr);
2528 }
2529 case Attribute_RescaleAttribute: {
2530 auto ptr = reinterpret_cast<const tosa::RescaleAttribute *>(obj);
2531 return verifier.VerifyTable(ptr);
2532 }
2533 case Attribute_MulAttribute: {
2534 auto ptr = reinterpret_cast<const tosa::MulAttribute *>(obj);
2535 return verifier.VerifyTable(ptr);
2536 }
2537 case Attribute_ArithmeticRightShiftAttribute: {
2538 auto ptr = reinterpret_cast<const tosa::ArithmeticRightShiftAttribute *>(obj);
2539 return verifier.VerifyTable(ptr);
2540 }
2541 case Attribute_CondIfAttribute: {
2542 auto ptr = reinterpret_cast<const tosa::CondIfAttribute *>(obj);
2543 return verifier.VerifyTable(ptr);
2544 }
2545 case Attribute_WhileLoopAttribute: {
2546 auto ptr = reinterpret_cast<const tosa::WhileLoopAttribute *>(obj);
2547 return verifier.VerifyTable(ptr);
2548 }
2549 default: return true;
2550 }
2551}
2552
2553inline bool VerifyAttributeVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
2554 if (!values || !types) return !values && !types;
2555 if (values->size() != types->size()) return false;
2556 for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
2557 if (!VerifyAttribute(
2558 verifier, values->Get(i), types->GetEnum<Attribute>(i))) {
2559 return false;
2560 }
2561 }
2562 return true;
2563}
2564
2565inline bool VerifyQuantInfo(flatbuffers::Verifier &verifier, const void *obj, QuantInfo type) {
2566 switch (type) {
2567 case QuantInfo_NONE: {
2568 return true;
2569 }
2570 case QuantInfo_UnaryQuantInfo: {
2571 auto ptr = reinterpret_cast<const tosa::UnaryQuantInfo *>(obj);
2572 return verifier.VerifyTable(ptr);
2573 }
2574 case QuantInfo_ConvQuantInfo: {
2575 auto ptr = reinterpret_cast<const tosa::ConvQuantInfo *>(obj);
2576 return verifier.VerifyTable(ptr);
2577 }
2578 case QuantInfo_MatMulQuantInfo: {
2579 auto ptr = reinterpret_cast<const tosa::MatMulQuantInfo *>(obj);
2580 return verifier.VerifyTable(ptr);
2581 }
2582 case QuantInfo_PadQuantInfo: {
2583 auto ptr = reinterpret_cast<const tosa::PadQuantInfo *>(obj);
2584 return verifier.VerifyTable(ptr);
2585 }
2586 default: return true;
2587 }
2588}
2589
2590inline bool VerifyQuantInfoVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
2591 if (!values || !types) return !values && !types;
2592 if (values->size() != types->size()) return false;
2593 for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
2594 if (!VerifyQuantInfo(
2595 verifier, values->Get(i), types->GetEnum<QuantInfo>(i))) {
2596 return false;
2597 }
2598 }
2599 return true;
2600}
2601
2602inline const tosa::TosaGraph *GetTosaGraph(const void *buf) {
2603 return flatbuffers::GetRoot<tosa::TosaGraph>(buf);
2604}
2605
2606inline const tosa::TosaGraph *GetSizePrefixedTosaGraph(const void *buf) {
2607 return flatbuffers::GetSizePrefixedRoot<tosa::TosaGraph>(buf);
2608}
2609
2610inline const char *TosaGraphIdentifier() {
2611 return "TOSA";
2612}
2613
2614inline bool TosaGraphBufferHasIdentifier(const void *buf) {
2615 return flatbuffers::BufferHasIdentifier(
2616 buf, TosaGraphIdentifier());
2617}
2618
2619inline bool VerifyTosaGraphBuffer(
2620 flatbuffers::Verifier &verifier) {
2621 return verifier.VerifyBuffer<tosa::TosaGraph>(TosaGraphIdentifier());
2622}
2623
2624inline bool VerifySizePrefixedTosaGraphBuffer(
2625 flatbuffers::Verifier &verifier) {
2626 return verifier.VerifySizePrefixedBuffer<tosa::TosaGraph>(TosaGraphIdentifier());
2627}
2628
2629inline const char *TosaGraphExtension() {
2630 return "tosa";
2631}
2632
2633inline void FinishTosaGraphBuffer(
2634 flatbuffers::FlatBufferBuilder &fbb,
2635 flatbuffers::Offset<tosa::TosaGraph> root) {
2636 fbb.Finish(root, TosaGraphIdentifier());
2637}
2638
2639inline void FinishSizePrefixedTosaGraphBuffer(
2640 flatbuffers::FlatBufferBuilder &fbb,
2641 flatbuffers::Offset<tosa::TosaGraph> root) {
2642 fbb.FinishSizePrefixed(root, TosaGraphIdentifier());
2643}
2644
2645} // namespace tosa
2646
2647#endif // FLATBUFFERS_GENERATED_TOSA_TOSA_H_