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