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