aboutsummaryrefslogtreecommitdiff
path: root/serialization
diff options
context:
space:
mode:
Diffstat (limited to 'serialization')
-rw-r--r--serialization/CMakeLists.txt32
-rw-r--r--serialization/attribute.def98
-rw-r--r--serialization/attribute.h181
-rw-r--r--serialization/operator.def124
-rw-r--r--serialization/quant_info.def43
-rw-r--r--serialization/quant_info.h164
-rw-r--r--serialization/tosa.fbs325
-rw-r--r--serialization/tosa_generated.h2683
-rw-r--r--serialization/tosa_serialization_handler.cpp1532
-rw-r--r--serialization/tosa_serialization_handler.h423
10 files changed, 0 insertions, 5605 deletions
diff --git a/serialization/CMakeLists.txt b/serialization/CMakeLists.txt
deleted file mode 100644
index 7bca824..0000000
--- a/serialization/CMakeLists.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-cmake_minimum_required (VERSION 3.4)
-
-# Copyright (c) 2020, ARM Limited.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-project (tosa)
-
-set (CMAKE_CXX_STANDARD 11)
-set (CMAKE_CXX_FLAGS "-g -Wall")
-set (FLATBUFFERS_SRC_DIR "../thirdparty/flatbuffers")
-
-set (SOURCE
- tosa_serialization_handler.cpp
-)
-
-add_library(tosa_serialization STATIC ${SOURCE})
-
-include_directories("./")
-
-target_link_libraries(tosa_serialization PRIVATE flatbuffers)
diff --git a/serialization/attribute.def b/serialization/attribute.def
deleted file mode 100644
index a146f47..0000000
--- a/serialization/attribute.def
+++ /dev/null
@@ -1,98 +0,0 @@
-
-// Copyright (c) 2020, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/*
- Syntax:
- DEF_ATTRIBUTE(ATTRIBUTE_NAME, NUM_ARGS_IN_ATTRIBUTES, ARG0_TYPE, ARG0_SCALAR_OR_VECTOR, ARGS0_NAME, ...)
-
- Description:
- ATTRIBUTE_NAME: corresponding attribute name, must match corresponding "table XXXAttribute" in tosa.fbs
- NUM_ARGS_IN_ATTRIBUTES: number of arguments in this attribute
- ARG0_TYPE: data type of arg0 in attribute
- ARG0_SCALAR_OR_VECTOR: is arg0 a scalar(S) or a vector(V)
- ARG0_NAME: name of arg0
- ...: variadic variables for more arguments, depending on NUM_ARGS_IN_ATTRIBUTES
-*/
-
-DEF_ATTRIBUTE(Pool2d, 3,
- int32_t, V, padding,
- int32_t, V, kernel,
- int32_t, V, stride)
-
-DEF_ATTRIBUTE(Conv2d, 3,
- int32_t, V, padding,
- int32_t, V, stride,
- int32_t, V, dilation)
-
-DEF_ATTRIBUTE(TransposeConv2d, 4,
- int32_t, V, outpad,
- int32_t, V, stride,
- int32_t, V, dilation,
- int32_t, V, output_shape)
-
-DEF_ATTRIBUTE(ReluN, 2,
- int32_t, S, max_int,
- float, S, max_fp)
-
-DEF_ATTRIBUTE(Axis, 1,
- int32_t, S, axis)
-
-DEF_ATTRIBUTE(Reshape, 1,
- int32_t, V, shape)
-
-DEF_ATTRIBUTE(Slice, 2,
- int32_t, V, begin,
- int32_t, V, size)
-
-DEF_ATTRIBUTE(Tile, 1,
- int32_t, V, multiples)
-
-DEF_ATTRIBUTE(Resize, 7,
- int32_t, V, output_size,
- int32_t, V, stride,
- int32_t, V, offset,
- int32_t, S, shift,
- float, V, stride_fp,
- float, V, offset_fp,
- ResizeMode, S, mode)
-
-DEF_ATTRIBUTE(Clamp, 4,
- int32_t, S, min_int,
- int32_t, S, max_int,
- float, S, min_fp,
- float, S, max_fp)
-
-DEF_ATTRIBUTE(Rescale, 7,
- int32_t, S, input_zp,
- int32_t, S, output_zp,
- int32_t, V, multiplier,
- int32_t, V, shift,
- bool, S, scale32,
- bool, S, double_round,
- bool, S, per_channel)
-
-DEF_ATTRIBUTE(Mul, 1,
- int32_t, S, shift)
-
-DEF_ATTRIBUTE(ArithmeticRightShift, 1,
- bool, S, round)
-
-DEF_ATTRIBUTE(CondIf, 2,
- string, S, then_branch,
- string, S, else_branch)
-
-DEF_ATTRIBUTE(WhileLoop, 2,
- string, S, cond_branch,
- string, S, body_branch)
diff --git a/serialization/attribute.h b/serialization/attribute.h
deleted file mode 100644
index 2a33a8f..0000000
--- a/serialization/attribute.h
+++ /dev/null
@@ -1,181 +0,0 @@
-
-// Copyright (c) 2020, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef _TOSA_SERIALIZATION_ATTRIBUTE_H
-#define _TOSA_SERIALIZATION_ATTRIBUTE_H
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "tosa_generated.h"
-
-using std::string;
-
-namespace tosa
-{
-
-class TosaAttributeBase
-{
-public:
- virtual ~TosaAttributeBase()
- {}
-};
-
-class TosaNoneAttribute : public TosaAttributeBase
-{
-public:
- TosaNoneAttribute()
- {}
- TosaNoneAttribute(TosaNoneAttribute* p)
- {}
-};
-
-#define DEF_ARGS_VER0_S_STR(V) _##V = p->V()->str();
-#define DEF_ARGS_VER0_S_DEFAULT(V) _##V = p->V();
-
-#define DEF_ARGS_VER0_S_int32_t(V) DEF_ARGS_VER0_S_DEFAULT(V)
-#define DEF_ARGS_VER0_S_float(V) DEF_ARGS_VER0_S_DEFAULT(V)
-#define DEF_ARGS_VER0_S_bool(V) DEF_ARGS_VER0_S_DEFAULT(V)
-#define DEF_ARGS_VER0_S_ResizeMode(V) DEF_ARGS_VER0_S_DEFAULT(V)
-#define DEF_ARGS_VER0_S_string(V) DEF_ARGS_VER0_S_STR(V)
-
-#define DEF_ARGS_VER0_S(T, V) DEF_ARGS_VER0_S_##T(V)
-#define DEF_ARGS_VER0_V(T, V) _##V = std::vector<T>(p->V()->begin(), p->V()->end());
-
-#define DEF_ARGS_VER1_S(T, V) const T& V
-#define DEF_ARGS_VER1_V(T, V) const std::vector<T>& V
-#define DEF_ARGS_VER2_S(T, V) _##V = V;
-#define DEF_ARGS_VER2_V(T, V) _##V = V;
-#define DEF_ARGS_VER3_S(T, V) \
- T V() const \
- { \
- return _##V; \
- }
-#define DEF_ARGS_VER3_V(T, V) \
- std::vector<T> V() const \
- { \
- return _##V; \
- }
-#define DEF_ARGS_VER4_S(T, V) T _##V;
-#define DEF_ARGS_VER4_V(T, V) std::vector<T> _##V;
-
-// another level of preprocessor indirection to handle ", " as function's input argument
-#define DEF_ARGS_VER1_TRUE(T, F, V) DEF_ARGS_VER1_##F(T, V)
-#define DEF_ARGS_VER1_FALSE(T, F, V) , DEF_ARGS_VER1_##F(T, V)
-
-#define DEF_ARGS_VER0(FIRST, T, F, V) DEF_ARGS_VER0_##F(T, V)
-#define DEF_ARGS_VER1(FIRST, T, F, V) DEF_ARGS_VER1_##FIRST(T, F, V)
-#define DEF_ARGS_VER2(FIRST, T, F, V) DEF_ARGS_VER2_##F(T, V)
-#define DEF_ARGS_VER3(FIRST, T, F, V) DEF_ARGS_VER3_##F(T, V)
-#define DEF_ARGS_VER4(FIRST, T, F, V) DEF_ARGS_VER4_##F(T, V)
-
-#define DEF_ARGS_0(VER, ...)
-#define DEF_ARGS_1(VER, T0, F0, V0) DEF_ARGS_##VER(TRUE, T0, F0, V0)
-#define DEF_ARGS_2(VER, T0, F0, V0, T1, F1, V1) DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1)
-#define DEF_ARGS_3(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2)
-#define DEF_ARGS_4(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3)
-#define DEF_ARGS_5(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4)
-
-#define DEF_ARGS_6(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4) DEF_ARGS_##VER(FALSE, T5, F5, V5)
-
-#define DEF_ARGS_7(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4) DEF_ARGS_##VER(FALSE, T5, F5, V5) \
- DEF_ARGS_##VER(FALSE, T6, F6, V6)
-
-#define DEF_VER0_VAR_DECL_PTR(NAME) const NAME* p = static_cast<const NAME*>(options);
-#define DEF_VER0_VAR_0(NAME)
-#define DEF_VER0_VAR_1(NAME) DEF_VER0_VAR_DECL_PTR(NAME)
-#define DEF_VER0_VAR_2(NAME) DEF_VER0_VAR_DECL_PTR(NAME)
-#define DEF_VER0_VAR_3(NAME) DEF_VER0_VAR_DECL_PTR(NAME)
-#define DEF_VER0_VAR_4(NAME) DEF_VER0_VAR_DECL_PTR(NAME)
-#define DEF_VER0_VAR_5(NAME) DEF_VER0_VAR_DECL_PTR(NAME)
-#define DEF_VER0_VAR_6(NAME) DEF_VER0_VAR_DECL_PTR(NAME)
-#define DEF_VER0_VAR_7(NAME) DEF_VER0_VAR_DECL_PTR(NAME)
-
-#define DEF_ATTRIBUTE(NAME, NUM_ARGS, ...) \
- class Tosa##NAME##Attribute : public TosaAttributeBase \
- { \
- public: \
- Tosa##NAME##Attribute(const TosaAttributeBase* options) \
- { \
- const Tosa##NAME##Attribute* p = reinterpret_cast<const Tosa##NAME##Attribute*>(options); \
- *this = *p; \
- } \
- Tosa##NAME##Attribute(const Tosa##NAME##Attribute* p) \
- { \
- *this = *p; \
- } \
- Tosa##NAME##Attribute(const void* options){ DEF_VER0_VAR_##NUM_ARGS(NAME##Attribute) \
- DEF_ARGS_##NUM_ARGS(VER0, __VA_ARGS__) } Tosa##NAME \
- ##Attribute(DEF_ARGS_##NUM_ARGS(VER1, __VA_ARGS__)) \
- { \
- DEF_ARGS_##NUM_ARGS(VER2, __VA_ARGS__) \
- } \
- virtual ~Tosa##NAME##Attribute() \
- {} \
- DEF_ARGS_##NUM_ARGS(VER3, __VA_ARGS__) private : DEF_ARGS_##NUM_ARGS(VER4, __VA_ARGS__) \
- };
-
-#include "attribute.def"
-#undef DEF_ATTRIBUTE
-#undef DEF_ARGS_0
-#undef DEF_ARGS_1
-#undef DEF_ARGS_2
-#undef DEF_ARGS_3
-#undef DEF_ARGS_4
-#undef DEF_ARGS_5
-#undef DEF_ARGS_6
-#undef DEF_ARGS_7
-#undef DEF_ARGS_VER0
-#undef DEF_ARGS_VER1
-#undef DEF_ARGS_VER2
-#undef DEF_ARGS_VER3
-#undef DEF_ARGS_VER4
-#undef DEF_ARGS_VER0_S_int32_t
-#undef DEF_ARGS_VER0_S_float
-#undef DEF_ARGS_VER0_S_bool
-#undef DEF_ARGS_VER0_S_ResizeMode
-#undef DEF_ARGS_VER0_S_string
-#undef DEF_ARGS_VER0_S_STR
-#undef DEF_ARGS_VER0_S_DEFAULT
-#undef DEF_ARGS_VER1_TRUE
-#undef DEF_ARGS_VER1_FALSE
-#undef DEF_ARGS_VER0_S
-#undef DEF_ARGS_VER0_V
-#undef DEF_ARGS_VER1_S
-#undef DEF_ARGS_VER1_V
-#undef DEF_ARGS_VER2_S
-#undef DEF_ARGS_VER2_V
-#undef DEF_ARGS_VER3_S
-#undef DEF_ARGS_VER3_V
-#undef DEF_ARGS_VER4_S
-#undef DEF_ARGS_VER4_V
-#undef DEF_VER0_VAR_0
-#undef DEF_VER0_VAR_1
-#undef DEF_VER0_VAR_2
-#undef DEF_VER0_VAR_3
-#undef DEF_VER0_VAR_4
-#undef DEF_VER0_VAR_5
-#undef DEF_VER0_VAR_DECL_PTR
-
-} // namespace tosa
-
-#endif // _TOSA_SERIALIZATION_ATTRIBUTE_H
diff --git a/serialization/operator.def b/serialization/operator.def
deleted file mode 100644
index 9a93b70..0000000
--- a/serialization/operator.def
+++ /dev/null
@@ -1,124 +0,0 @@
-
-// Copyright (c) 2020, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/*
- Syntax:
- DEF_OPERATOR(MLIR_NAME, SCHEMA_NAME, REF_IMPL_NAME, OPTIONS, QUANT_INFO)
-
- Description:
- MLIR_NAME: the symbolic string of this op, must match tosa_ops.td
- SCHEMA_NAME: corresponding operator name, must match "enum Op" in serialization/tosa.fbs
- REF_IMPL_NAME: name used internally in tosa reference implementation
- OPTIONS: compile time constant options of this op, corresponding to operator_option.def
- QUANT_INFO: quantization infomation of this op, corresponding to quant_info.def
-*/
-
-
-/* tensor operators */
-DEF_OPERATOR(argmax, ARGMAX, ArgMax, Axis, None)
-DEF_OPERATOR(avg_pool2d, AVG_POOL2D, AvgPool2d, Pool2d, Unary)
-DEF_OPERATOR(conv2d, CONV2D, Conv2d, Conv2d, Conv)
-DEF_OPERATOR(conv3d, CONV3D, Conv3d, None, None)
-DEF_OPERATOR(depthwise_conv2d, DEPTHWISE_CONV2D, DepthwiseConv2d, Conv2d, Conv)
-DEF_OPERATOR(fully_connected, FULLY_CONNECTED, FullyConnected, None, Conv)
-DEF_OPERATOR(matmul, MATMUL, MatMul, None, MatMul)
-DEF_OPERATOR(max_pool2d, MAX_POOL2D, MaxPool2d, Pool2d, None)
-DEF_OPERATOR(transpose_conv2d, TRANSPOSE_CONV2D, TransposeConv2d, TransposeConv2d, Conv)
-
-/* activation */
-DEF_OPERATOR(clamp, CLAMP, Clamp, Clamp, None)
-DEF_OPERATOR(reluN, RELUN, ReluN, ReluN, None)
-DEF_OPERATOR(sigmoid, SIGMOID, Sigmoid, None, None)
-DEF_OPERATOR(tanh, TANH, Tanh, None, None)
-
-/* elementwise - binary */
-DEF_OPERATOR(add, ADD, Add, None, None)
-DEF_OPERATOR(arithmetic_right_shift, ARITHMETIC_RIGHT_SHIFT, ArithmeticRightShift, ArithmeticRightShift, None)
-DEF_OPERATOR(bitwise_and, BITWISE_AND, BitwiseAnd, None, None)
-DEF_OPERATOR(bitwise_or, BITWISE_OR, BitwiseOr, None, None)
-DEF_OPERATOR(bitwise_xor, BITWISE_XOR, BitwiseXor, None, None)
-DEF_OPERATOR(logical_and, LOGICAL_AND, LogicalAnd, None, None)
-DEF_OPERATOR(logical_left_shift, LOGICAL_LEFT_SHIFT, LogicalLeftShift, None, None)
-DEF_OPERATOR(logical_right_shift, LOGICAL_RIGHT_SHIFT, LogicalRightShift, None, None)
-DEF_OPERATOR(logical_or, LOGICAL_OR, LogicalOr, None, None)
-DEF_OPERATOR(logical_xor, LOGICAL_XOR, LogicalXor, None, None)
-DEF_OPERATOR(maximum, MAXIMUM, Maximum, None, None)
-DEF_OPERATOR(minimum, MINIMUM, Minimum, None, None)
-DEF_OPERATOR(mul, MUL, Mul, Mul, None)
-DEF_OPERATOR(pow, POW, Pow, None, None)
-DEF_OPERATOR(sub, SUB, Sub, None, None)
-DEF_OPERATOR(table, TABLE, Table, None, None)
-
-/* elementwise - unary */
-DEF_OPERATOR(abs, ABS, Abs, None, None)
-DEF_OPERATOR(bitwise_not, BITWISE_NOT, BitwiseNot, None, None)
-DEF_OPERATOR(ceil, CEIL, Ceil, None, None)
-DEF_OPERATOR(clz, CLZ, Clz, None, None)
-DEF_OPERATOR(exp, EXP, Exp, None, None)
-DEF_OPERATOR(floor, FLOOR, Floor, None, None)
-DEF_OPERATOR(log, LOG, Log, None, None)
-DEF_OPERATOR(logical_not, LOGICAL_NOT, LogicalNot, None, None)
-DEF_OPERATOR(negate, NEGATE, Negate, None, Unary)
-DEF_OPERATOR(reciprocal, RECIPROCAL, Reciprocal, None, None)
-DEF_OPERATOR(rsqrt, RSQRT, Rsqrt, None, None)
-
-/* elementwise - ternary */
-DEF_OPERATOR(select, SELECT, Select, None, None)
-
-/* logical */
-DEF_OPERATOR(equal, EQUAL, Equal, None, None)
-DEF_OPERATOR(greater, GREATER, Greater, None, None)
-DEF_OPERATOR(greater_equal, GREATER_EQUAL, GreaterEqual, None, None)
-
-/* reduction */
-DEF_OPERATOR(reduce_any, REDUCE_ANY, ReduceAny, Reduce, None)
-DEF_OPERATOR(reduce_all, REDUCE_ALL, ReduceAll, Reduce, None)
-DEF_OPERATOR(reduce_max, REDUCE_MAX, ReduceMax, Reduce, None)
-DEF_OPERATOR(reduce_min, REDUCE_MIN, ReduceMin, Reduce, None)
-DEF_OPERATOR(reduce_prod, REDUCE_PRODUCT, ReduceProduct, Reduce, None)
-DEF_OPERATOR(reduce_sum, REDUCE_SUM, ReduceSum, Reduce, None)
-
-/* memory operation */
-DEF_OPERATOR(concat, CONCAT, Concat, Axis, None)
-DEF_OPERATOR(pad, PAD, Pad, None, Pad)
-DEF_OPERATOR(reshape, RESHAPE, Reshape, Reshape, None)
-DEF_OPERATOR(reverse, REVERSE, Reverse, Reverse, None)
-DEF_OPERATOR(slice, SLICE, Slice, Slice, None)
-DEF_OPERATOR(tile, TILE, Tile, Tile, None)
-DEF_OPERATOR(transpose, TRANSPOSE, Transpose, None, None)
-
-/* gather/scatter */
-DEF_OPERATOR(gather, GATHER, Gather, None, None)
-DEF_OPERATOR(scatter, SCATTER, Scatter, None, None)
-
-/* image */
-DEF_OPERATOR(resize, RESIZE, Resize, Resize, None)
-
-/* quantization */
-DEF_OPERATOR(cast, CAST, Cast, None, None)
-DEF_OPERATOR(rescale, RESCALE, Rescale, Rescale, None)
-
-/* data nodes */
-DEF_OPERATOR(const, CONST, Const, None, None)
-DEF_OPERATOR(placeholder, PLACEHOLDER, Placeholder, None, None)
-DEF_OPERATOR(identity, IDENTITY, Identity, None, None)
-DEF_OPERATOR(identityn, IDENTITYN, IdentityN, None, None)
-
-/* custom operations */
-DEF_OPERATOR(custom, CUSTOM, Custom, None, None)
-
-/* control flow operators */
-DEF_OPERATOR(cond_if, COND_IF, CondIf, CondIf, None)
-DEF_OPERATOR(while_loop, WHILE_LOOP, WhileLoop, WhileLoop, None)
diff --git a/serialization/quant_info.def b/serialization/quant_info.def
deleted file mode 100644
index 39dc101..0000000
--- a/serialization/quant_info.def
+++ /dev/null
@@ -1,43 +0,0 @@
-
-// Copyright (c) 2020, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/*
- Syntax:
- DEF_QUANTIZATION_INFO(NAME, NUM_ARGS_IN_OPTIONS, ARG0_TYPE, ARG0_SCALAR_OR_VECTOR, ARGS0_NAME, ...)
-
- Description:
- NAME: corresponding quantization info name, must match corresponding "table XXXQuantInfo" in tosa.fbs
- NUM_ARGS_IN_QINFO: number of arguments in this quantization info
- ARG0_TYPE: data type of arg0
- ARG0_SCALAR_OR_VECTOR: is arg0 a scalar (S) or a vector (V)
- ARG0_NAME: name of arg0
- ...: variadic variables for more arguments, depending on NUM_ARGS_IN_QINFO
-*/
-
-
-DEF_QUANTIZATION_INFO(Unary, 2,
- int32_t, S, input_zp,
- int32_t, S, output_zp)
-
-DEF_QUANTIZATION_INFO(Conv, 2,
- int32_t, S, input_zp,
- int32_t, S, weight_zp)
-
-DEF_QUANTIZATION_INFO(MatMul, 2,
- int32_t, S, a_zp,
- int32_t, S, b_zp)
-
-DEF_QUANTIZATION_INFO(Pad, 1,
- int32_t, S, input_zp)
diff --git a/serialization/quant_info.h b/serialization/quant_info.h
deleted file mode 100644
index 03dcab9..0000000
--- a/serialization/quant_info.h
+++ /dev/null
@@ -1,164 +0,0 @@
-
-// Copyright (c) 2020, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef _TOSA_SERIALIZATION_QUANT_INFO_H
-#define _TOSA_SERIALIZATION_QUANT_INFO_H
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "tosa_generated.h"
-
-namespace tosa
-{
-
-class TosaQuantInfoBase
-{
-public:
- virtual ~TosaQuantInfoBase()
- {}
-};
-
-class TosaNoneQuantInfo : public TosaQuantInfoBase
-{
-public:
- TosaNoneQuantInfo()
- {}
- TosaNoneQuantInfo(TosaNoneQuantInfo* p)
- {}
-};
-
-#define DEF_ARGS_VER0_S(T, V) _##V = p->V();
-#define DEF_ARGS_VER0_V(T, V) _##V = std::vector<T>(p->V()->begin(), p->V()->end());
-#define DEF_ARGS_VER1_S(T, V) const T& V
-#define DEF_ARGS_VER1_V(T, V) const std::vector<T>& V
-#define DEF_ARGS_VER2_S(T, V) _##V = V;
-#define DEF_ARGS_VER2_V(T, V) _##V = V;
-#define DEF_ARGS_VER3_S(T, V) \
- T V() const \
- { \
- return _##V; \
- }
-#define DEF_ARGS_VER3_V(T, V) \
- std::vector<T> V() const \
- { \
- return _##V; \
- }
-#define DEF_ARGS_VER4_S(T, V) T _##V;
-#define DEF_ARGS_VER4_V(T, V) std::vector<T> _##V;
-
-// another level of preprocessor indirection to handle ", " as function's input argument
-#define DEF_ARGS_VER1_TRUE(T, F, V) DEF_ARGS_VER1_##F(T, V)
-#define DEF_ARGS_VER1_FALSE(T, F, V) , DEF_ARGS_VER1_##F(T, V)
-
-#define DEF_ARGS_VER0(FIRST, T, F, V) DEF_ARGS_VER0_##F(T, V)
-#define DEF_ARGS_VER1(FIRST, T, F, V) DEF_ARGS_VER1_##FIRST(T, F, V)
-#define DEF_ARGS_VER2(FIRST, T, F, V) DEF_ARGS_VER2_##F(T, V)
-#define DEF_ARGS_VER3(FIRST, T, F, V) DEF_ARGS_VER3_##F(T, V)
-#define DEF_ARGS_VER4(FIRST, T, F, V) DEF_ARGS_VER4_##F(T, V)
-
-#define DEF_ARGS_1(VER, T0, F0, V0) DEF_ARGS_##VER(TRUE, T0, F0, V0)
-#define DEF_ARGS_2(VER, T0, F0, V0, T1, F1, V1) DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1)
-#define DEF_ARGS_3(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2)
-#define DEF_ARGS_4(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3)
-#define DEF_ARGS_5(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4)
-#define DEF_ARGS_6(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4) DEF_ARGS_##VER(FALSE, T5, F5, V5)
-#define DEF_ARGS_7(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4) DEF_ARGS_##VER(FALSE, T5, F5, V5) \
- DEF_ARGS_##VER(FALSE, T6, F6, V6)
-#define DEF_ARGS_8(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4) DEF_ARGS_##VER(FALSE, T5, F5, V5) \
- DEF_ARGS_##VER(FALSE, T6, F6, V6) DEF_ARGS_##VER(FALSE, T7, F7, V7)
-#define DEF_ARGS_9(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7, T8, F8, V8) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4) DEF_ARGS_##VER(FALSE, T5, F5, V5) \
- DEF_ARGS_##VER(FALSE, T6, F6, V6) DEF_ARGS_##VER(FALSE, T7, F7, V7) DEF_ARGS_##VER(FALSE, T8, F8, V8)
-#define DEF_ARGS_10(VER, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7, T8, F8, V8, T9, F9, V9) \
- DEF_ARGS_##VER(TRUE, T0, F0, V0) DEF_ARGS_##VER(FALSE, T1, F1, V1) DEF_ARGS_##VER(FALSE, T2, F2, V2) \
- DEF_ARGS_##VER(FALSE, T3, F3, V3) DEF_ARGS_##VER(FALSE, T4, F4, V4) DEF_ARGS_##VER(FALSE, T5, F5, V5) \
- DEF_ARGS_##VER(FALSE, T6, F6, V6) DEF_ARGS_##VER(FALSE, T7, F7, V7) DEF_ARGS_##VER(FALSE, T8, F8, V8) \
- DEF_ARGS_##VER(FALSE, T9, F9, V9)
-
-#define DEF_QUANTIZATION_INFO(NAME, NUM_ARGS, ...) \
- class Tosa##NAME##QuantInfo : public TosaQuantInfoBase \
- { \
- public: \
- Tosa##NAME##QuantInfo(const TosaQuantInfoBase* qinfo) \
- { \
- const Tosa##NAME##QuantInfo* p = dynamic_cast<const Tosa##NAME##QuantInfo*>(qinfo); \
- assert(p); \
- *this = *p; \
- } \
- Tosa##NAME##QuantInfo(const Tosa##NAME##QuantInfo* p) \
- { \
- *this = *p; \
- } \
- Tosa##NAME##QuantInfo(const void* qinfo) \
- { \
- const NAME##QuantInfo* p = static_cast<const NAME##QuantInfo*>(qinfo); \
- DEF_ARGS_##NUM_ARGS(VER0, __VA_ARGS__) \
- } \
- Tosa##NAME##QuantInfo(DEF_ARGS_##NUM_ARGS(VER1, __VA_ARGS__)) \
- { \
- DEF_ARGS_##NUM_ARGS(VER2, __VA_ARGS__) \
- } \
- virtual ~Tosa##NAME##QuantInfo() \
- {} \
- DEF_ARGS_##NUM_ARGS(VER3, __VA_ARGS__) private : DEF_ARGS_##NUM_ARGS(VER4, __VA_ARGS__) \
- };
-
-#include "quant_info.def"
-#undef DEF_QUANTIZATION_INFO
-#undef DEF_ARGS_1
-#undef DEF_ARGS_2
-#undef DEF_ARGS_3
-#undef DEF_ARGS_4
-#undef DEF_ARGS_5
-#undef DEF_ARGS_6
-#undef DEF_ARGS_7
-#undef DEF_ARGS_8
-#undef DEF_ARGS_9
-#undef DEF_ARGS_10
-#undef DEF_ARGS_VER0
-#undef DEF_ARGS_VER1
-#undef DEF_ARGS_VER2
-#undef DEF_ARGS_VER3
-#undef DEF_ARGS_VER4
-#undef DEF_ARGS_VER1_TRUE
-#undef DEF_ARGS_VER1_FALSE
-#undef DEF_ARGS_VER0_S
-#undef DEF_ARGS_VER0_V
-#undef DEF_ARGS_VER1_S
-#undef DEF_ARGS_VER1_V
-#undef DEF_ARGS_VER2_S
-#undef DEF_ARGS_VER2_V
-#undef DEF_ARGS_VER3_S
-#undef DEF_ARGS_VER3_V
-#undef DEF_ARGS_VER4_S
-#undef DEF_ARGS_VER4_V
-
-} // namespace tosa
-
-#endif
diff --git a/serialization/tosa.fbs b/serialization/tosa.fbs
deleted file mode 100644
index e30c3cf..0000000
--- a/serialization/tosa.fbs
+++ /dev/null
@@ -1,325 +0,0 @@
-
-// Copyright (c) 2020-2021, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-namespace tosa;
-
-// This corresponds to the version.
-file_identifier "TOSA";
-// File extension of any written files.
-file_extension "tosa";
-
-enum DType:uint32 {
- UNKNOWN = 0,
- BOOL,
- UINT8,
- INT4,
- INT8,
- INT16,
- INT32,
- INT48,
- FLOAT,
-}
-
-enum Format:uint32 {
- UNKNOWN = 0,
- NHWC,
- NDHWC,
- OHWI,
- HWIM,
- DOHWI,
-}
-
-enum Usage:uint32 {
- UNKNOWN = 0,
- ACTIVATION,
- WEIGHT,
- INDEX,
-}
-
-enum ResizeMode:uint32 {
- UNKNOWN = 0,
- NEAREST,
- BILINEAR,
-}
-
-enum Op:uint32 {
- UNKNOWN = 0,
-
- // Tensor Operator
- ARGMAX,
- AVG_POOL2D,
- CONV2D,
- CONV3D,
- DEPTHWISE_CONV2D,
- FULLY_CONNECTED,
- MATMUL,
- MAX_POOL2D,
- TRANSPOSE_CONV2D,
-
- // Activation
- CLAMP,
- RELUN,
- SIGMOID,
- TANH,
-
- // Elementwise-Binary
- ADD,
- ARITHMETIC_RIGHT_SHIFT,
- BITWISE_AND,
- BITWISE_OR,
- BITWISE_XOR,
- LOGICAL_AND,
- LOGICAL_LEFT_SHIFT,
- LOGICAL_RIGHT_SHIFT,
- LOGICAL_OR,
- LOGICAL_XOR,
- MAXIMUM,
- MINIMUM,
- MUL,
- POW,
- SUB,
- TABLE,
-
- // Elementwise-Unary
- ABS,
- BITWISE_NOT,
- CEIL,
- CLZ,
- EXP,
- FLOOR,
- LOG,
- LOGICAL_NOT,
- NEGATE,
- RECIPROCAL,
- RSQRT,
-
- // Elementwise-Ternary
- SELECT,
-
- // Logical
- EQUAL,
- GREATER,
- GREATER_EQUAL,
-
- // Reduction
- REDUCE_ANY,
- REDUCE_ALL,
- REDUCE_MAX,
- REDUCE_MIN,
- REDUCE_PRODUCT,
- REDUCE_SUM,
-
- // Data layout operation
- CONCAT,
- PAD,
- RESHAPE,
- REVERSE,
- SLICE,
- TILE,
- TRANSPOSE,
-
- // Gather/scatter operation
- GATHER,
- SCATTER,
-
- // Image
- RESIZE,
-
- // Type conversion
- CAST,
- RESCALE,
-
- // Data Nodes
- CONST,
- PLACEHOLDER,
- IDENTITY,
- IDENTITYN,
-
- // Custom operations
- CUSTOM,
-
- // Control flow operators
- COND_IF,
- WHILE_LOOP,
-}
-
-union Attribute {
- Pool2dAttribute,
- Conv2dAttribute,
- TransposeConv2dAttribute,
- ReluNAttribute,
- AxisAttribute,
- ReshapeAttribute,
- SliceAttribute,
- TileAttribute,
- ResizeAttribute,
- ClampAttribute,
- RescaleAttribute,
- MulAttribute,
- ArithmeticRightShiftAttribute,
- CondIfAttribute,
- WhileLoopAttribute,
-}
-
-table Pool2dAttribute {
- padding: [int32];
- kernel: [int32];
- stride: [int32];
-}
-
-table Conv2dAttribute {
- padding: [int32];
- stride: [int32];
- dilation: [int32];
-}
-
-table TransposeConv2dAttribute {
- outpad: [int32];
- stride: [int32];
- dilation: [int32];
- output_shape: [int32];
-}
-
-table ReluNAttribute {
- max_int: int32;
- max_fp: float;
-}
-
-table AxisAttribute {
- axis: int32;
-}
-
-table ReshapeAttribute {
- shape: [int32];
-}
-
-table SliceAttribute {
- begin: [int32];
- size: [int32];
-}
-
-table TileAttribute {
- multiples: [int32];
-}
-
-table ResizeAttribute {
- output_size: [int32];
- stride: [int32];
- offset: [int32];
- shift: int32;
- stride_fp: [float];
- offset_fp: [float];
- mode: ResizeMode;
-}
-
-table ClampAttribute {
- min_int: int32;
- max_int: int32;
- min_fp: float;
- max_fp: float;
-}
-
-table RescaleAttribute {
- input_zp: int32;
- output_zp: int32;
- multiplier: [int32];
- shift: [int32];
- scale32: bool;
- double_round: bool;
- per_channel: bool;
-}
-
-table MulAttribute {
- shift: int32;
-}
-
-table ArithmeticRightShiftAttribute {
- round: bool;
-}
-
-table CondIfAttribute {
- then_branch: string;
- else_branch: string;
-}
-
-table WhileLoopAttribute {
- cond_branch: string;
- body_branch: string;
-}
-
-union QuantInfo {
- UnaryQuantInfo,
- ConvQuantInfo,
- MatMulQuantInfo,
- PadQuantInfo,
-}
-
-table UnaryQuantInfo {
- input_zp: int32;
- output_zp: int32;
-}
-
-table ConvQuantInfo {
- input_zp: int32;
- weight_zp: int32;
-}
-
-table MatMulQuantInfo {
- a_zp: int32;
- b_zp: int32;
-}
-
-table PadQuantInfo {
- input_zp: int32;
-}
-
-table Version {
- _major: int32 = 0;
- _minor: int32 = 21;
- _patch: int32 = 0;
- _experimental: bool = false;
-}
-
-table TosaTensor {
- name:string; // name of the tensor, used for solving dependency
- shape:[int32]; // shape of the tensor
- type:DType; // data type of the tensor
- usage:[Usage]; // vector of possible usages. for the convenience of debugging only.
- format:[Format]; // vector of possible formats. for the convenience of debugging only.
- npy_filename: string; // numpy array filename
-}
-
-table TosaOperator {
- op:Op; // operator enum
- attribute: Attribute; // union structure. operator attribute
- inputs:[string]; // list of input tensor names
- outputs:[string]; // list of output tensor names
- quant_info: QuantInfo; // op-based quantization information
-}
-
-table TosaBasicBlock {
- name:string; // basic block name
- operators:[TosaOperator]; // operators array
- tensors:[TosaTensor]; // tensors array
- inputs:[string]; // name of graph inputs
- outputs:[string]; // name of graph outputs
-}
-
-table TosaGraph {
- version: Version;
- blocks:[TosaBasicBlock]; // basic blocks array
-}
-
-root_type TosaGraph;
diff --git a/serialization/tosa_generated.h b/serialization/tosa_generated.h
deleted file mode 100644
index f2796af..0000000
--- a/serialization/tosa_generated.h
+++ /dev/null
@@ -1,2683 +0,0 @@
-
-// Copyright (c) 2020-2021, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// automatically generated by the FlatBuffers compiler, do not modify
-
-
-#ifndef FLATBUFFERS_GENERATED_TOSA_TOSA_H_
-#define FLATBUFFERS_GENERATED_TOSA_TOSA_H_
-
-#include "flatbuffers/flatbuffers.h"
-
-namespace tosa {
-
-struct Pool2dAttribute;
-
-struct Conv2dAttribute;
-
-struct TransposeConv2dAttribute;
-
-struct ReluNAttribute;
-
-struct AxisAttribute;
-
-struct ReshapeAttribute;
-
-struct SliceAttribute;
-
-struct TileAttribute;
-
-struct ResizeAttribute;
-
-struct ClampAttribute;
-
-struct RescaleAttribute;
-
-struct MulAttribute;
-
-struct ArithmeticRightShiftAttribute;
-
-struct CondIfAttribute;
-
-struct WhileLoopAttribute;
-
-struct UnaryQuantInfo;
-
-struct ConvQuantInfo;
-
-struct MatMulQuantInfo;
-
-struct PadQuantInfo;
-
-struct Version;
-
-struct TosaTensor;
-
-struct TosaOperator;
-
-struct TosaBasicBlock;
-
-struct TosaGraph;
-
-enum DType {
- DType_UNKNOWN = 0,
- DType_BOOL = 1,
- DType_UINT8 = 2,
- DType_INT4 = 3,
- DType_INT8 = 4,
- DType_INT16 = 5,
- DType_INT32 = 6,
- DType_INT48 = 7,
- DType_FLOAT = 8,
- DType_MIN = DType_UNKNOWN,
- DType_MAX = DType_FLOAT
-};
-
-inline const DType (&EnumValuesDType())[9] {
- static const DType values[] = {
- DType_UNKNOWN,
- DType_BOOL,
- DType_UINT8,
- DType_INT4,
- DType_INT8,
- DType_INT16,
- DType_INT32,
- DType_INT48,
- DType_FLOAT
- };
- return values;
-}
-
-inline const char * const *EnumNamesDType() {
- static const char * const names[] = {
- "UNKNOWN",
- "BOOL",
- "UINT8",
- "INT4",
- "INT8",
- "INT16",
- "INT32",
- "INT48",
- "FLOAT",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameDType(DType e) {
- if (e < DType_UNKNOWN || e > DType_FLOAT) return "";
- const size_t index = static_cast<size_t>(e);
- return EnumNamesDType()[index];
-}
-
-enum Format {
- Format_UNKNOWN = 0,
- Format_NHWC = 1,
- Format_NDHWC = 2,
- Format_OHWI = 3,
- Format_HWIM = 4,
- Format_DOHWI = 5,
- Format_MIN = Format_UNKNOWN,
- Format_MAX = Format_DOHWI
-};
-
-inline const Format (&EnumValuesFormat())[6] {
- static const Format values[] = {
- Format_UNKNOWN,
- Format_NHWC,
- Format_NDHWC,
- Format_OHWI,
- Format_HWIM,
- Format_DOHWI
- };
- return values;
-}
-
-inline const char * const *EnumNamesFormat() {
- static const char * const names[] = {
- "UNKNOWN",
- "NHWC",
- "NDHWC",
- "OHWI",
- "HWIM",
- "DOHWI",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameFormat(Format e) {
- if (e < Format_UNKNOWN || e > Format_DOHWI) return "";
- const size_t index = static_cast<size_t>(e);
- return EnumNamesFormat()[index];
-}
-
-enum Usage {
- Usage_UNKNOWN = 0,
- Usage_ACTIVATION = 1,
- Usage_WEIGHT = 2,
- Usage_INDEX = 3,
- Usage_MIN = Usage_UNKNOWN,
- Usage_MAX = Usage_INDEX
-};
-
-inline const Usage (&EnumValuesUsage())[4] {
- static const Usage values[] = {
- Usage_UNKNOWN,
- Usage_ACTIVATION,
- Usage_WEIGHT,
- Usage_INDEX
- };
- return values;
-}
-
-inline const char * const *EnumNamesUsage() {
- static const char * const names[] = {
- "UNKNOWN",
- "ACTIVATION",
- "WEIGHT",
- "INDEX",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameUsage(Usage e) {
- if (e < Usage_UNKNOWN || e > Usage_INDEX) return "";
- const size_t index = static_cast<size_t>(e);
- return EnumNamesUsage()[index];
-}
-
-enum ResizeMode {
- ResizeMode_UNKNOWN = 0,
- ResizeMode_NEAREST = 1,
- ResizeMode_BILINEAR = 2,
- ResizeMode_MIN = ResizeMode_UNKNOWN,
- ResizeMode_MAX = ResizeMode_BILINEAR
-};
-
-inline const ResizeMode (&EnumValuesResizeMode())[3] {
- static const ResizeMode values[] = {
- ResizeMode_UNKNOWN,
- ResizeMode_NEAREST,
- ResizeMode_BILINEAR
- };
- return values;
-}
-
-inline const char * const *EnumNamesResizeMode() {
- static const char * const names[] = {
- "UNKNOWN",
- "NEAREST",
- "BILINEAR",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameResizeMode(ResizeMode e) {
- if (e < ResizeMode_UNKNOWN || e > ResizeMode_BILINEAR) return "";
- const size_t index = static_cast<size_t>(e);
- return EnumNamesResizeMode()[index];
-}
-
-enum Op {
- Op_UNKNOWN = 0,
- Op_ARGMAX = 1,
- Op_AVG_POOL2D = 2,
- Op_CONV2D = 3,
- Op_CONV3D = 4,
- Op_DEPTHWISE_CONV2D = 5,
- Op_FULLY_CONNECTED = 6,
- Op_MATMUL = 7,
- Op_MAX_POOL2D = 8,
- Op_TRANSPOSE_CONV2D = 9,
- Op_CLAMP = 10,
- Op_RELUN = 11,
- Op_SIGMOID = 12,
- Op_TANH = 13,
- Op_ADD = 14,
- Op_ARITHMETIC_RIGHT_SHIFT = 15,
- Op_BITWISE_AND = 16,
- Op_BITWISE_OR = 17,
- Op_BITWISE_XOR = 18,
- Op_LOGICAL_AND = 19,
- Op_LOGICAL_LEFT_SHIFT = 20,
- Op_LOGICAL_RIGHT_SHIFT = 21,
- Op_LOGICAL_OR = 22,
- Op_LOGICAL_XOR = 23,
- Op_MAXIMUM = 24,
- Op_MINIMUM = 25,
- Op_MUL = 26,
- Op_POW = 27,
- Op_SUB = 28,
- Op_TABLE = 29,
- Op_ABS = 30,
- Op_BITWISE_NOT = 31,
- Op_CEIL = 32,
- Op_CLZ = 33,
- Op_EXP = 34,
- Op_FLOOR = 35,
- Op_LOG = 36,
- Op_LOGICAL_NOT = 37,
- Op_NEGATE = 38,
- Op_RECIPROCAL = 39,
- Op_RSQRT = 40,
- Op_SELECT = 41,
- Op_EQUAL = 42,
- Op_GREATER = 43,
- Op_GREATER_EQUAL = 44,
- Op_REDUCE_ANY = 45,
- Op_REDUCE_ALL = 46,
- Op_REDUCE_MAX = 47,
- Op_REDUCE_MIN = 48,
- Op_REDUCE_PRODUCT = 49,
- Op_REDUCE_SUM = 50,
- Op_CONCAT = 51,
- Op_PAD = 52,
- Op_RESHAPE = 53,
- Op_REVERSE = 54,
- Op_SLICE = 55,
- Op_TILE = 56,
- Op_TRANSPOSE = 57,
- Op_GATHER = 58,
- Op_SCATTER = 59,
- Op_RESIZE = 60,
- Op_CAST = 61,
- Op_RESCALE = 62,
- Op_CONST = 63,
- Op_PLACEHOLDER = 64,
- Op_IDENTITY = 65,
- Op_IDENTITYN = 66,
- Op_CUSTOM = 67,
- Op_COND_IF = 68,
- Op_WHILE_LOOP = 69,
- Op_MIN = Op_UNKNOWN,
- Op_MAX = Op_WHILE_LOOP
-};
-
-inline const Op (&EnumValuesOp())[70] {
- static const Op values[] = {
- Op_UNKNOWN,
- Op_ARGMAX,
- Op_AVG_POOL2D,
- Op_CONV2D,
- Op_CONV3D,
- Op_DEPTHWISE_CONV2D,
- Op_FULLY_CONNECTED,
- Op_MATMUL,
- Op_MAX_POOL2D,
- Op_TRANSPOSE_CONV2D,
- Op_CLAMP,
- Op_RELUN,
- Op_SIGMOID,
- Op_TANH,
- Op_ADD,
- Op_ARITHMETIC_RIGHT_SHIFT,
- Op_BITWISE_AND,
- Op_BITWISE_OR,
- Op_BITWISE_XOR,
- Op_LOGICAL_AND,
- Op_LOGICAL_LEFT_SHIFT,
- Op_LOGICAL_RIGHT_SHIFT,
- Op_LOGICAL_OR,
- Op_LOGICAL_XOR,
- Op_MAXIMUM,
- Op_MINIMUM,
- Op_MUL,
- Op_POW,
- Op_SUB,
- Op_TABLE,
- Op_ABS,
- Op_BITWISE_NOT,
- Op_CEIL,
- Op_CLZ,
- Op_EXP,
- Op_FLOOR,
- Op_LOG,
- Op_LOGICAL_NOT,
- Op_NEGATE,
- Op_RECIPROCAL,
- Op_RSQRT,
- Op_SELECT,
- Op_EQUAL,
- Op_GREATER,
- Op_GREATER_EQUAL,
- Op_REDUCE_ANY,
- Op_REDUCE_ALL,
- Op_REDUCE_MAX,
- Op_REDUCE_MIN,
- Op_REDUCE_PRODUCT,
- Op_REDUCE_SUM,
- Op_CONCAT,
- Op_PAD,
- Op_RESHAPE,
- Op_REVERSE,
- Op_SLICE,
- Op_TILE,
- Op_TRANSPOSE,
- Op_GATHER,
- Op_SCATTER,
- Op_RESIZE,
- Op_CAST,
- Op_RESCALE,
- Op_CONST,
- Op_PLACEHOLDER,
- Op_IDENTITY,
- Op_IDENTITYN,
- Op_CUSTOM,
- Op_COND_IF,
- Op_WHILE_LOOP
- };
- return values;
-}
-
-inline const char * const *EnumNamesOp() {
- static const char * const names[] = {
- "UNKNOWN",
- "ARGMAX",
- "AVG_POOL2D",
- "CONV2D",
- "CONV3D",
- "DEPTHWISE_CONV2D",
- "FULLY_CONNECTED",
- "MATMUL",
- "MAX_POOL2D",
- "TRANSPOSE_CONV2D",
- "CLAMP",
- "RELUN",
- "SIGMOID",
- "TANH",
- "ADD",
- "ARITHMETIC_RIGHT_SHIFT",
- "BITWISE_AND",
- "BITWISE_OR",
- "BITWISE_XOR",
- "LOGICAL_AND",
- "LOGICAL_LEFT_SHIFT",
- "LOGICAL_RIGHT_SHIFT",
- "LOGICAL_OR",
- "LOGICAL_XOR",
- "MAXIMUM",
- "MINIMUM",
- "MUL",
- "POW",
- "SUB",
- "TABLE",
- "ABS",
- "BITWISE_NOT",
- "CEIL",
- "CLZ",
- "EXP",
- "FLOOR",
- "LOG",
- "LOGICAL_NOT",
- "NEGATE",
- "RECIPROCAL",
- "RSQRT",
- "SELECT",
- "EQUAL",
- "GREATER",
- "GREATER_EQUAL",
- "REDUCE_ANY",
- "REDUCE_ALL",
- "REDUCE_MAX",
- "REDUCE_MIN",
- "REDUCE_PRODUCT",
- "REDUCE_SUM",
- "CONCAT",
- "PAD",
- "RESHAPE",
- "REVERSE",
- "SLICE",
- "TILE",
- "TRANSPOSE",
- "GATHER",
- "SCATTER",
- "RESIZE",
- "CAST",
- "RESCALE",
- "CONST",
- "PLACEHOLDER",
- "IDENTITY",
- "IDENTITYN",
- "CUSTOM",
- "COND_IF",
- "WHILE_LOOP",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameOp(Op e) {
- if (e < Op_UNKNOWN || e > Op_WHILE_LOOP) return "";
- const size_t index = static_cast<size_t>(e);
- return EnumNamesOp()[index];
-}
-
-enum Attribute {
- Attribute_NONE = 0,
- Attribute_Pool2dAttribute = 1,
- Attribute_Conv2dAttribute = 2,
- Attribute_TransposeConv2dAttribute = 3,
- Attribute_ReluNAttribute = 4,
- Attribute_AxisAttribute = 5,
- Attribute_ReshapeAttribute = 6,
- Attribute_SliceAttribute = 7,
- Attribute_TileAttribute = 8,
- Attribute_ResizeAttribute = 9,
- Attribute_ClampAttribute = 10,
- Attribute_RescaleAttribute = 11,
- Attribute_MulAttribute = 12,
- Attribute_ArithmeticRightShiftAttribute = 13,
- Attribute_CondIfAttribute = 14,
- Attribute_WhileLoopAttribute = 15,
- Attribute_MIN = Attribute_NONE,
- Attribute_MAX = Attribute_WhileLoopAttribute
-};
-
-inline const Attribute (&EnumValuesAttribute())[16] {
- static const Attribute values[] = {
- Attribute_NONE,
- Attribute_Pool2dAttribute,
- Attribute_Conv2dAttribute,
- Attribute_TransposeConv2dAttribute,
- Attribute_ReluNAttribute,
- Attribute_AxisAttribute,
- Attribute_ReshapeAttribute,
- Attribute_SliceAttribute,
- Attribute_TileAttribute,
- Attribute_ResizeAttribute,
- Attribute_ClampAttribute,
- Attribute_RescaleAttribute,
- Attribute_MulAttribute,
- Attribute_ArithmeticRightShiftAttribute,
- Attribute_CondIfAttribute,
- Attribute_WhileLoopAttribute
- };
- return values;
-}
-
-inline const char * const *EnumNamesAttribute() {
- static const char * const names[] = {
- "NONE",
- "Pool2dAttribute",
- "Conv2dAttribute",
- "TransposeConv2dAttribute",
- "ReluNAttribute",
- "AxisAttribute",
- "ReshapeAttribute",
- "SliceAttribute",
- "TileAttribute",
- "ResizeAttribute",
- "ClampAttribute",
- "RescaleAttribute",
- "MulAttribute",
- "ArithmeticRightShiftAttribute",
- "CondIfAttribute",
- "WhileLoopAttribute",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameAttribute(Attribute e) {
- if (e < Attribute_NONE || e > Attribute_WhileLoopAttribute) return "";
- const size_t index = static_cast<size_t>(e);
- return EnumNamesAttribute()[index];
-}
-
-template<typename T> struct AttributeTraits {
- static const Attribute enum_value = Attribute_NONE;
-};
-
-template<> struct AttributeTraits<Pool2dAttribute> {
- static const Attribute enum_value = Attribute_Pool2dAttribute;
-};
-
-template<> struct AttributeTraits<Conv2dAttribute> {
- static const Attribute enum_value = Attribute_Conv2dAttribute;
-};
-
-template<> struct AttributeTraits<TransposeConv2dAttribute> {
- static const Attribute enum_value = Attribute_TransposeConv2dAttribute;
-};
-
-template<> struct AttributeTraits<ReluNAttribute> {
- static const Attribute enum_value = Attribute_ReluNAttribute;
-};
-
-template<> struct AttributeTraits<AxisAttribute> {
- static const Attribute enum_value = Attribute_AxisAttribute;
-};
-
-template<> struct AttributeTraits<ReshapeAttribute> {
- static const Attribute enum_value = Attribute_ReshapeAttribute;
-};
-
-template<> struct AttributeTraits<SliceAttribute> {
- static const Attribute enum_value = Attribute_SliceAttribute;
-};
-
-template<> struct AttributeTraits<TileAttribute> {
- static const Attribute enum_value = Attribute_TileAttribute;
-};
-
-template<> struct AttributeTraits<ResizeAttribute> {
- static const Attribute enum_value = Attribute_ResizeAttribute;
-};
-
-template<> struct AttributeTraits<ClampAttribute> {
- static const Attribute enum_value = Attribute_ClampAttribute;
-};
-
-template<> struct AttributeTraits<RescaleAttribute> {
- static const Attribute enum_value = Attribute_RescaleAttribute;
-};
-
-template<> struct AttributeTraits<MulAttribute> {
- static const Attribute enum_value = Attribute_MulAttribute;
-};
-
-template<> struct AttributeTraits<ArithmeticRightShiftAttribute> {
- static const Attribute enum_value = Attribute_ArithmeticRightShiftAttribute;
-};
-
-template<> struct AttributeTraits<CondIfAttribute> {
- static const Attribute enum_value = Attribute_CondIfAttribute;
-};
-
-template<> struct AttributeTraits<WhileLoopAttribute> {
- static const Attribute enum_value = Attribute_WhileLoopAttribute;
-};
-
-bool VerifyAttribute(flatbuffers::Verifier &verifier, const void *obj, Attribute type);
-bool VerifyAttributeVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
-
-enum QuantInfo {
- QuantInfo_NONE = 0,
- QuantInfo_UnaryQuantInfo = 1,
- QuantInfo_ConvQuantInfo = 2,
- QuantInfo_MatMulQuantInfo = 3,
- QuantInfo_PadQuantInfo = 4,
- QuantInfo_MIN = QuantInfo_NONE,
- QuantInfo_MAX = QuantInfo_PadQuantInfo
-};
-
-inline const QuantInfo (&EnumValuesQuantInfo())[5] {
- static const QuantInfo values[] = {
- QuantInfo_NONE,
- QuantInfo_UnaryQuantInfo,
- QuantInfo_ConvQuantInfo,
- QuantInfo_MatMulQuantInfo,
- QuantInfo_PadQuantInfo
- };
- return values;
-}
-
-inline const char * const *EnumNamesQuantInfo() {
- static const char * const names[] = {
- "NONE",
- "UnaryQuantInfo",
- "ConvQuantInfo",
- "MatMulQuantInfo",
- "PadQuantInfo",
- nullptr
- };
- return names;
-}
-
-inline const char *EnumNameQuantInfo(QuantInfo e) {
- if (e < QuantInfo_NONE || e > QuantInfo_PadQuantInfo) return "";
- const size_t index = static_cast<size_t>(e);
- return EnumNamesQuantInfo()[index];
-}
-
-template<typename T> struct QuantInfoTraits {
- static const QuantInfo enum_value = QuantInfo_NONE;
-};
-
-template<> struct QuantInfoTraits<UnaryQuantInfo> {
- static const QuantInfo enum_value = QuantInfo_UnaryQuantInfo;
-};
-
-template<> struct QuantInfoTraits<ConvQuantInfo> {
- static const QuantInfo enum_value = QuantInfo_ConvQuantInfo;
-};
-
-template<> struct QuantInfoTraits<MatMulQuantInfo> {
- static const QuantInfo enum_value = QuantInfo_MatMulQuantInfo;
-};
-
-template<> struct QuantInfoTraits<PadQuantInfo> {
- static const QuantInfo enum_value = QuantInfo_PadQuantInfo;
-};
-
-bool VerifyQuantInfo(flatbuffers::Verifier &verifier, const void *obj, QuantInfo type);
-bool VerifyQuantInfoVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
-
-struct Pool2dAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_PADDING = 4,
- VT_KERNEL = 6,
- VT_STRIDE = 8
- };
- const flatbuffers::Vector<int32_t> *padding() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_PADDING);
- }
- const flatbuffers::Vector<int32_t> *kernel() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_KERNEL);
- }
- const flatbuffers::Vector<int32_t> *stride() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_STRIDE);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_PADDING) &&
- verifier.VerifyVector(padding()) &&
- VerifyOffset(verifier, VT_KERNEL) &&
- verifier.VerifyVector(kernel()) &&
- VerifyOffset(verifier, VT_STRIDE) &&
- verifier.VerifyVector(stride()) &&
- verifier.EndTable();
- }
-};
-
-struct Pool2dAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_padding(flatbuffers::Offset<flatbuffers::Vector<int32_t>> padding) {
- fbb_.AddOffset(Pool2dAttribute::VT_PADDING, padding);
- }
- void add_kernel(flatbuffers::Offset<flatbuffers::Vector<int32_t>> kernel) {
- fbb_.AddOffset(Pool2dAttribute::VT_KERNEL, kernel);
- }
- void add_stride(flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride) {
- fbb_.AddOffset(Pool2dAttribute::VT_STRIDE, stride);
- }
- explicit Pool2dAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- Pool2dAttributeBuilder &operator=(const Pool2dAttributeBuilder &);
- flatbuffers::Offset<Pool2dAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<Pool2dAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Pool2dAttribute> CreatePool2dAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> padding = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> kernel = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride = 0) {
- Pool2dAttributeBuilder builder_(_fbb);
- builder_.add_stride(stride);
- builder_.add_kernel(kernel);
- builder_.add_padding(padding);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<Pool2dAttribute> CreatePool2dAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<int32_t> *padding = nullptr,
- const std::vector<int32_t> *kernel = nullptr,
- const std::vector<int32_t> *stride = nullptr) {
- auto padding__ = padding ? _fbb.CreateVector<int32_t>(*padding) : 0;
- auto kernel__ = kernel ? _fbb.CreateVector<int32_t>(*kernel) : 0;
- auto stride__ = stride ? _fbb.CreateVector<int32_t>(*stride) : 0;
- return tosa::CreatePool2dAttribute(
- _fbb,
- padding__,
- kernel__,
- stride__);
-}
-
-struct Conv2dAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_PADDING = 4,
- VT_STRIDE = 6,
- VT_DILATION = 8
- };
- const flatbuffers::Vector<int32_t> *padding() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_PADDING);
- }
- const flatbuffers::Vector<int32_t> *stride() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_STRIDE);
- }
- const flatbuffers::Vector<int32_t> *dilation() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_DILATION);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_PADDING) &&
- verifier.VerifyVector(padding()) &&
- VerifyOffset(verifier, VT_STRIDE) &&
- verifier.VerifyVector(stride()) &&
- VerifyOffset(verifier, VT_DILATION) &&
- verifier.VerifyVector(dilation()) &&
- verifier.EndTable();
- }
-};
-
-struct Conv2dAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_padding(flatbuffers::Offset<flatbuffers::Vector<int32_t>> padding) {
- fbb_.AddOffset(Conv2dAttribute::VT_PADDING, padding);
- }
- void add_stride(flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride) {
- fbb_.AddOffset(Conv2dAttribute::VT_STRIDE, stride);
- }
- void add_dilation(flatbuffers::Offset<flatbuffers::Vector<int32_t>> dilation) {
- fbb_.AddOffset(Conv2dAttribute::VT_DILATION, dilation);
- }
- explicit Conv2dAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- Conv2dAttributeBuilder &operator=(const Conv2dAttributeBuilder &);
- flatbuffers::Offset<Conv2dAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<Conv2dAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Conv2dAttribute> CreateConv2dAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> padding = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> dilation = 0) {
- Conv2dAttributeBuilder builder_(_fbb);
- builder_.add_dilation(dilation);
- builder_.add_stride(stride);
- builder_.add_padding(padding);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<Conv2dAttribute> CreateConv2dAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<int32_t> *padding = nullptr,
- const std::vector<int32_t> *stride = nullptr,
- const std::vector<int32_t> *dilation = nullptr) {
- auto padding__ = padding ? _fbb.CreateVector<int32_t>(*padding) : 0;
- auto stride__ = stride ? _fbb.CreateVector<int32_t>(*stride) : 0;
- auto dilation__ = dilation ? _fbb.CreateVector<int32_t>(*dilation) : 0;
- return tosa::CreateConv2dAttribute(
- _fbb,
- padding__,
- stride__,
- dilation__);
-}
-
-struct TransposeConv2dAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_OUTPAD = 4,
- VT_STRIDE = 6,
- VT_DILATION = 8,
- VT_OUTPUT_SHAPE = 10
- };
- const flatbuffers::Vector<int32_t> *outpad() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPAD);
- }
- const flatbuffers::Vector<int32_t> *stride() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_STRIDE);
- }
- const flatbuffers::Vector<int32_t> *dilation() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_DILATION);
- }
- const flatbuffers::Vector<int32_t> *output_shape() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUT_SHAPE);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_OUTPAD) &&
- verifier.VerifyVector(outpad()) &&
- VerifyOffset(verifier, VT_STRIDE) &&
- verifier.VerifyVector(stride()) &&
- VerifyOffset(verifier, VT_DILATION) &&
- verifier.VerifyVector(dilation()) &&
- VerifyOffset(verifier, VT_OUTPUT_SHAPE) &&
- verifier.VerifyVector(output_shape()) &&
- verifier.EndTable();
- }
-};
-
-struct TransposeConv2dAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_outpad(flatbuffers::Offset<flatbuffers::Vector<int32_t>> outpad) {
- fbb_.AddOffset(TransposeConv2dAttribute::VT_OUTPAD, outpad);
- }
- void add_stride(flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride) {
- fbb_.AddOffset(TransposeConv2dAttribute::VT_STRIDE, stride);
- }
- void add_dilation(flatbuffers::Offset<flatbuffers::Vector<int32_t>> dilation) {
- fbb_.AddOffset(TransposeConv2dAttribute::VT_DILATION, dilation);
- }
- void add_output_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> output_shape) {
- fbb_.AddOffset(TransposeConv2dAttribute::VT_OUTPUT_SHAPE, output_shape);
- }
- explicit TransposeConv2dAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TransposeConv2dAttributeBuilder &operator=(const TransposeConv2dAttributeBuilder &);
- flatbuffers::Offset<TransposeConv2dAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<TransposeConv2dAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TransposeConv2dAttribute> CreateTransposeConv2dAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> outpad = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> dilation = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> output_shape = 0) {
- TransposeConv2dAttributeBuilder builder_(_fbb);
- builder_.add_output_shape(output_shape);
- builder_.add_dilation(dilation);
- builder_.add_stride(stride);
- builder_.add_outpad(outpad);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<TransposeConv2dAttribute> CreateTransposeConv2dAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<int32_t> *outpad = nullptr,
- const std::vector<int32_t> *stride = nullptr,
- const std::vector<int32_t> *dilation = nullptr,
- const std::vector<int32_t> *output_shape = nullptr) {
- auto outpad__ = outpad ? _fbb.CreateVector<int32_t>(*outpad) : 0;
- auto stride__ = stride ? _fbb.CreateVector<int32_t>(*stride) : 0;
- auto dilation__ = dilation ? _fbb.CreateVector<int32_t>(*dilation) : 0;
- auto output_shape__ = output_shape ? _fbb.CreateVector<int32_t>(*output_shape) : 0;
- return tosa::CreateTransposeConv2dAttribute(
- _fbb,
- outpad__,
- stride__,
- dilation__,
- output_shape__);
-}
-
-struct ReluNAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_MAX_INT = 4,
- VT_MAX_FP = 6
- };
- int32_t max_int() const {
- return GetField<int32_t>(VT_MAX_INT, 0);
- }
- float max_fp() const {
- return GetField<float>(VT_MAX_FP, 0.0f);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_MAX_INT) &&
- VerifyField<float>(verifier, VT_MAX_FP) &&
- verifier.EndTable();
- }
-};
-
-struct ReluNAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_max_int(int32_t max_int) {
- fbb_.AddElement<int32_t>(ReluNAttribute::VT_MAX_INT, max_int, 0);
- }
- void add_max_fp(float max_fp) {
- fbb_.AddElement<float>(ReluNAttribute::VT_MAX_FP, max_fp, 0.0f);
- }
- explicit ReluNAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- ReluNAttributeBuilder &operator=(const ReluNAttributeBuilder &);
- flatbuffers::Offset<ReluNAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<ReluNAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<ReluNAttribute> CreateReluNAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t max_int = 0,
- float max_fp = 0.0f) {
- ReluNAttributeBuilder builder_(_fbb);
- builder_.add_max_fp(max_fp);
- builder_.add_max_int(max_int);
- return builder_.Finish();
-}
-
-struct AxisAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_AXIS = 4
- };
- int32_t axis() const {
- return GetField<int32_t>(VT_AXIS, 0);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_AXIS) &&
- verifier.EndTable();
- }
-};
-
-struct AxisAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_axis(int32_t axis) {
- fbb_.AddElement<int32_t>(AxisAttribute::VT_AXIS, axis, 0);
- }
- explicit AxisAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- AxisAttributeBuilder &operator=(const AxisAttributeBuilder &);
- flatbuffers::Offset<AxisAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<AxisAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<AxisAttribute> CreateAxisAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t axis = 0) {
- AxisAttributeBuilder builder_(_fbb);
- builder_.add_axis(axis);
- return builder_.Finish();
-}
-
-struct ReshapeAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_SHAPE = 4
- };
- const flatbuffers::Vector<int32_t> *shape() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_SHAPE) &&
- verifier.VerifyVector(shape()) &&
- verifier.EndTable();
- }
-};
-
-struct ReshapeAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape) {
- fbb_.AddOffset(ReshapeAttribute::VT_SHAPE, shape);
- }
- explicit ReshapeAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- ReshapeAttributeBuilder &operator=(const ReshapeAttributeBuilder &);
- flatbuffers::Offset<ReshapeAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<ReshapeAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<ReshapeAttribute> CreateReshapeAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape = 0) {
- ReshapeAttributeBuilder builder_(_fbb);
- builder_.add_shape(shape);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<ReshapeAttribute> CreateReshapeAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<int32_t> *shape = nullptr) {
- auto shape__ = shape ? _fbb.CreateVector<int32_t>(*shape) : 0;
- return tosa::CreateReshapeAttribute(
- _fbb,
- shape__);
-}
-
-struct SliceAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_BEGIN = 4,
- VT_SIZE = 6
- };
- const flatbuffers::Vector<int32_t> *begin() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_BEGIN);
- }
- const flatbuffers::Vector<int32_t> *size() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SIZE);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_BEGIN) &&
- verifier.VerifyVector(begin()) &&
- VerifyOffset(verifier, VT_SIZE) &&
- verifier.VerifyVector(size()) &&
- verifier.EndTable();
- }
-};
-
-struct SliceAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_begin(flatbuffers::Offset<flatbuffers::Vector<int32_t>> begin) {
- fbb_.AddOffset(SliceAttribute::VT_BEGIN, begin);
- }
- void add_size(flatbuffers::Offset<flatbuffers::Vector<int32_t>> size) {
- fbb_.AddOffset(SliceAttribute::VT_SIZE, size);
- }
- explicit SliceAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- SliceAttributeBuilder &operator=(const SliceAttributeBuilder &);
- flatbuffers::Offset<SliceAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<SliceAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<SliceAttribute> CreateSliceAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> begin = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> size = 0) {
- SliceAttributeBuilder builder_(_fbb);
- builder_.add_size(size);
- builder_.add_begin(begin);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<SliceAttribute> CreateSliceAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<int32_t> *begin = nullptr,
- const std::vector<int32_t> *size = nullptr) {
- auto begin__ = begin ? _fbb.CreateVector<int32_t>(*begin) : 0;
- auto size__ = size ? _fbb.CreateVector<int32_t>(*size) : 0;
- return tosa::CreateSliceAttribute(
- _fbb,
- begin__,
- size__);
-}
-
-struct TileAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_MULTIPLES = 4
- };
- const flatbuffers::Vector<int32_t> *multiples() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_MULTIPLES);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_MULTIPLES) &&
- verifier.VerifyVector(multiples()) &&
- verifier.EndTable();
- }
-};
-
-struct TileAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_multiples(flatbuffers::Offset<flatbuffers::Vector<int32_t>> multiples) {
- fbb_.AddOffset(TileAttribute::VT_MULTIPLES, multiples);
- }
- explicit TileAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TileAttributeBuilder &operator=(const TileAttributeBuilder &);
- flatbuffers::Offset<TileAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<TileAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TileAttribute> CreateTileAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> multiples = 0) {
- TileAttributeBuilder builder_(_fbb);
- builder_.add_multiples(multiples);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<TileAttribute> CreateTileAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<int32_t> *multiples = nullptr) {
- auto multiples__ = multiples ? _fbb.CreateVector<int32_t>(*multiples) : 0;
- return tosa::CreateTileAttribute(
- _fbb,
- multiples__);
-}
-
-struct ResizeAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_OUTPUT_SIZE = 4,
- VT_STRIDE = 6,
- VT_OFFSET = 8,
- VT_SHIFT = 10,
- VT_STRIDE_FP = 12,
- VT_OFFSET_FP = 14,
- VT_MODE = 16
- };
- const flatbuffers::Vector<int32_t> *output_size() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OUTPUT_SIZE);
- }
- const flatbuffers::Vector<int32_t> *stride() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_STRIDE);
- }
- const flatbuffers::Vector<int32_t> *offset() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_OFFSET);
- }
- int32_t shift() const {
- return GetField<int32_t>(VT_SHIFT, 0);
- }
- const flatbuffers::Vector<float> *stride_fp() const {
- return GetPointer<const flatbuffers::Vector<float> *>(VT_STRIDE_FP);
- }
- const flatbuffers::Vector<float> *offset_fp() const {
- return GetPointer<const flatbuffers::Vector<float> *>(VT_OFFSET_FP);
- }
- ResizeMode mode() const {
- return static_cast<ResizeMode>(GetField<uint32_t>(VT_MODE, 0));
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_OUTPUT_SIZE) &&
- verifier.VerifyVector(output_size()) &&
- VerifyOffset(verifier, VT_STRIDE) &&
- verifier.VerifyVector(stride()) &&
- VerifyOffset(verifier, VT_OFFSET) &&
- verifier.VerifyVector(offset()) &&
- VerifyField<int32_t>(verifier, VT_SHIFT) &&
- VerifyOffset(verifier, VT_STRIDE_FP) &&
- verifier.VerifyVector(stride_fp()) &&
- VerifyOffset(verifier, VT_OFFSET_FP) &&
- verifier.VerifyVector(offset_fp()) &&
- VerifyField<uint32_t>(verifier, VT_MODE) &&
- verifier.EndTable();
- }
-};
-
-struct ResizeAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_output_size(flatbuffers::Offset<flatbuffers::Vector<int32_t>> output_size) {
- fbb_.AddOffset(ResizeAttribute::VT_OUTPUT_SIZE, output_size);
- }
- void add_stride(flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride) {
- fbb_.AddOffset(ResizeAttribute::VT_STRIDE, stride);
- }
- void add_offset(flatbuffers::Offset<flatbuffers::Vector<int32_t>> offset) {
- fbb_.AddOffset(ResizeAttribute::VT_OFFSET, offset);
- }
- void add_shift(int32_t shift) {
- fbb_.AddElement<int32_t>(ResizeAttribute::VT_SHIFT, shift, 0);
- }
- void add_stride_fp(flatbuffers::Offset<flatbuffers::Vector<float>> stride_fp) {
- fbb_.AddOffset(ResizeAttribute::VT_STRIDE_FP, stride_fp);
- }
- void add_offset_fp(flatbuffers::Offset<flatbuffers::Vector<float>> offset_fp) {
- fbb_.AddOffset(ResizeAttribute::VT_OFFSET_FP, offset_fp);
- }
- void add_mode(ResizeMode mode) {
- fbb_.AddElement<uint32_t>(ResizeAttribute::VT_MODE, static_cast<uint32_t>(mode), 0);
- }
- explicit ResizeAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- ResizeAttributeBuilder &operator=(const ResizeAttributeBuilder &);
- flatbuffers::Offset<ResizeAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<ResizeAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<ResizeAttribute> CreateResizeAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> output_size = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> stride = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> offset = 0,
- int32_t shift = 0,
- flatbuffers::Offset<flatbuffers::Vector<float>> stride_fp = 0,
- flatbuffers::Offset<flatbuffers::Vector<float>> offset_fp = 0,
- ResizeMode mode = ResizeMode_UNKNOWN) {
- ResizeAttributeBuilder builder_(_fbb);
- builder_.add_mode(mode);
- builder_.add_offset_fp(offset_fp);
- builder_.add_stride_fp(stride_fp);
- builder_.add_shift(shift);
- builder_.add_offset(offset);
- builder_.add_stride(stride);
- builder_.add_output_size(output_size);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<ResizeAttribute> CreateResizeAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const std::vector<int32_t> *output_size = nullptr,
- const std::vector<int32_t> *stride = nullptr,
- const std::vector<int32_t> *offset = nullptr,
- int32_t shift = 0,
- const std::vector<float> *stride_fp = nullptr,
- const std::vector<float> *offset_fp = nullptr,
- ResizeMode mode = ResizeMode_UNKNOWN) {
- auto output_size__ = output_size ? _fbb.CreateVector<int32_t>(*output_size) : 0;
- auto stride__ = stride ? _fbb.CreateVector<int32_t>(*stride) : 0;
- auto offset__ = offset ? _fbb.CreateVector<int32_t>(*offset) : 0;
- auto stride_fp__ = stride_fp ? _fbb.CreateVector<float>(*stride_fp) : 0;
- auto offset_fp__ = offset_fp ? _fbb.CreateVector<float>(*offset_fp) : 0;
- return tosa::CreateResizeAttribute(
- _fbb,
- output_size__,
- stride__,
- offset__,
- shift,
- stride_fp__,
- offset_fp__,
- mode);
-}
-
-struct ClampAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_MIN_INT = 4,
- VT_MAX_INT = 6,
- VT_MIN_FP = 8,
- VT_MAX_FP = 10
- };
- int32_t min_int() const {
- return GetField<int32_t>(VT_MIN_INT, 0);
- }
- int32_t max_int() const {
- return GetField<int32_t>(VT_MAX_INT, 0);
- }
- float min_fp() const {
- return GetField<float>(VT_MIN_FP, 0.0f);
- }
- float max_fp() const {
- return GetField<float>(VT_MAX_FP, 0.0f);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_MIN_INT) &&
- VerifyField<int32_t>(verifier, VT_MAX_INT) &&
- VerifyField<float>(verifier, VT_MIN_FP) &&
- VerifyField<float>(verifier, VT_MAX_FP) &&
- verifier.EndTable();
- }
-};
-
-struct ClampAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_min_int(int32_t min_int) {
- fbb_.AddElement<int32_t>(ClampAttribute::VT_MIN_INT, min_int, 0);
- }
- void add_max_int(int32_t max_int) {
- fbb_.AddElement<int32_t>(ClampAttribute::VT_MAX_INT, max_int, 0);
- }
- void add_min_fp(float min_fp) {
- fbb_.AddElement<float>(ClampAttribute::VT_MIN_FP, min_fp, 0.0f);
- }
- void add_max_fp(float max_fp) {
- fbb_.AddElement<float>(ClampAttribute::VT_MAX_FP, max_fp, 0.0f);
- }
- explicit ClampAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- ClampAttributeBuilder &operator=(const ClampAttributeBuilder &);
- flatbuffers::Offset<ClampAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<ClampAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<ClampAttribute> CreateClampAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t min_int = 0,
- int32_t max_int = 0,
- float min_fp = 0.0f,
- float max_fp = 0.0f) {
- ClampAttributeBuilder builder_(_fbb);
- builder_.add_max_fp(max_fp);
- builder_.add_min_fp(min_fp);
- builder_.add_max_int(max_int);
- builder_.add_min_int(min_int);
- return builder_.Finish();
-}
-
-struct RescaleAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_INPUT_ZP = 4,
- VT_OUTPUT_ZP = 6,
- VT_MULTIPLIER = 8,
- VT_SHIFT = 10,
- VT_SCALE32 = 12,
- VT_DOUBLE_ROUND = 14,
- VT_PER_CHANNEL = 16
- };
- int32_t input_zp() const {
- return GetField<int32_t>(VT_INPUT_ZP, 0);
- }
- int32_t output_zp() const {
- return GetField<int32_t>(VT_OUTPUT_ZP, 0);
- }
- const flatbuffers::Vector<int32_t> *multiplier() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_MULTIPLIER);
- }
- const flatbuffers::Vector<int32_t> *shift() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHIFT);
- }
- bool scale32() const {
- return GetField<uint8_t>(VT_SCALE32, 0) != 0;
- }
- bool double_round() const {
- return GetField<uint8_t>(VT_DOUBLE_ROUND, 0) != 0;
- }
- bool per_channel() const {
- return GetField<uint8_t>(VT_PER_CHANNEL, 0) != 0;
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_INPUT_ZP) &&
- VerifyField<int32_t>(verifier, VT_OUTPUT_ZP) &&
- VerifyOffset(verifier, VT_MULTIPLIER) &&
- verifier.VerifyVector(multiplier()) &&
- VerifyOffset(verifier, VT_SHIFT) &&
- verifier.VerifyVector(shift()) &&
- VerifyField<uint8_t>(verifier, VT_SCALE32) &&
- VerifyField<uint8_t>(verifier, VT_DOUBLE_ROUND) &&
- VerifyField<uint8_t>(verifier, VT_PER_CHANNEL) &&
- verifier.EndTable();
- }
-};
-
-struct RescaleAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_input_zp(int32_t input_zp) {
- fbb_.AddElement<int32_t>(RescaleAttribute::VT_INPUT_ZP, input_zp, 0);
- }
- void add_output_zp(int32_t output_zp) {
- fbb_.AddElement<int32_t>(RescaleAttribute::VT_OUTPUT_ZP, output_zp, 0);
- }
- void add_multiplier(flatbuffers::Offset<flatbuffers::Vector<int32_t>> multiplier) {
- fbb_.AddOffset(RescaleAttribute::VT_MULTIPLIER, multiplier);
- }
- void add_shift(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shift) {
- fbb_.AddOffset(RescaleAttribute::VT_SHIFT, shift);
- }
- void add_scale32(bool scale32) {
- fbb_.AddElement<uint8_t>(RescaleAttribute::VT_SCALE32, static_cast<uint8_t>(scale32), 0);
- }
- void add_double_round(bool double_round) {
- fbb_.AddElement<uint8_t>(RescaleAttribute::VT_DOUBLE_ROUND, static_cast<uint8_t>(double_round), 0);
- }
- void add_per_channel(bool per_channel) {
- fbb_.AddElement<uint8_t>(RescaleAttribute::VT_PER_CHANNEL, static_cast<uint8_t>(per_channel), 0);
- }
- explicit RescaleAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- RescaleAttributeBuilder &operator=(const RescaleAttributeBuilder &);
- flatbuffers::Offset<RescaleAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<RescaleAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<RescaleAttribute> CreateRescaleAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t input_zp = 0,
- int32_t output_zp = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> multiplier = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> shift = 0,
- bool scale32 = false,
- bool double_round = false,
- bool per_channel = false) {
- RescaleAttributeBuilder builder_(_fbb);
- builder_.add_shift(shift);
- builder_.add_multiplier(multiplier);
- builder_.add_output_zp(output_zp);
- builder_.add_input_zp(input_zp);
- builder_.add_per_channel(per_channel);
- builder_.add_double_round(double_round);
- builder_.add_scale32(scale32);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<RescaleAttribute> CreateRescaleAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t input_zp = 0,
- int32_t output_zp = 0,
- const std::vector<int32_t> *multiplier = nullptr,
- const std::vector<int32_t> *shift = nullptr,
- bool scale32 = false,
- bool double_round = false,
- bool per_channel = false) {
- auto multiplier__ = multiplier ? _fbb.CreateVector<int32_t>(*multiplier) : 0;
- auto shift__ = shift ? _fbb.CreateVector<int32_t>(*shift) : 0;
- return tosa::CreateRescaleAttribute(
- _fbb,
- input_zp,
- output_zp,
- multiplier__,
- shift__,
- scale32,
- double_round,
- per_channel);
-}
-
-struct MulAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_SHIFT = 4
- };
- int32_t shift() const {
- return GetField<int32_t>(VT_SHIFT, 0);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_SHIFT) &&
- verifier.EndTable();
- }
-};
-
-struct MulAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_shift(int32_t shift) {
- fbb_.AddElement<int32_t>(MulAttribute::VT_SHIFT, shift, 0);
- }
- explicit MulAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- MulAttributeBuilder &operator=(const MulAttributeBuilder &);
- flatbuffers::Offset<MulAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<MulAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<MulAttribute> CreateMulAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t shift = 0) {
- MulAttributeBuilder builder_(_fbb);
- builder_.add_shift(shift);
- return builder_.Finish();
-}
-
-struct ArithmeticRightShiftAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_ROUND = 4
- };
- bool round() const {
- return GetField<uint8_t>(VT_ROUND, 0) != 0;
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<uint8_t>(verifier, VT_ROUND) &&
- verifier.EndTable();
- }
-};
-
-struct ArithmeticRightShiftAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_round(bool round) {
- fbb_.AddElement<uint8_t>(ArithmeticRightShiftAttribute::VT_ROUND, static_cast<uint8_t>(round), 0);
- }
- explicit ArithmeticRightShiftAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- ArithmeticRightShiftAttributeBuilder &operator=(const ArithmeticRightShiftAttributeBuilder &);
- flatbuffers::Offset<ArithmeticRightShiftAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<ArithmeticRightShiftAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<ArithmeticRightShiftAttribute> CreateArithmeticRightShiftAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- bool round = false) {
- ArithmeticRightShiftAttributeBuilder builder_(_fbb);
- builder_.add_round(round);
- return builder_.Finish();
-}
-
-struct CondIfAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_THEN_BRANCH = 4,
- VT_ELSE_BRANCH = 6
- };
- const flatbuffers::String *then_branch() const {
- return GetPointer<const flatbuffers::String *>(VT_THEN_BRANCH);
- }
- const flatbuffers::String *else_branch() const {
- return GetPointer<const flatbuffers::String *>(VT_ELSE_BRANCH);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_THEN_BRANCH) &&
- verifier.VerifyString(then_branch()) &&
- VerifyOffset(verifier, VT_ELSE_BRANCH) &&
- verifier.VerifyString(else_branch()) &&
- verifier.EndTable();
- }
-};
-
-struct CondIfAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_then_branch(flatbuffers::Offset<flatbuffers::String> then_branch) {
- fbb_.AddOffset(CondIfAttribute::VT_THEN_BRANCH, then_branch);
- }
- void add_else_branch(flatbuffers::Offset<flatbuffers::String> else_branch) {
- fbb_.AddOffset(CondIfAttribute::VT_ELSE_BRANCH, else_branch);
- }
- explicit CondIfAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- CondIfAttributeBuilder &operator=(const CondIfAttributeBuilder &);
- flatbuffers::Offset<CondIfAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<CondIfAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<CondIfAttribute> CreateCondIfAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> then_branch = 0,
- flatbuffers::Offset<flatbuffers::String> else_branch = 0) {
- CondIfAttributeBuilder builder_(_fbb);
- builder_.add_else_branch(else_branch);
- builder_.add_then_branch(then_branch);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<CondIfAttribute> CreateCondIfAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *then_branch = nullptr,
- const char *else_branch = nullptr) {
- auto then_branch__ = then_branch ? _fbb.CreateString(then_branch) : 0;
- auto else_branch__ = else_branch ? _fbb.CreateString(else_branch) : 0;
- return tosa::CreateCondIfAttribute(
- _fbb,
- then_branch__,
- else_branch__);
-}
-
-struct WhileLoopAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_COND_BRANCH = 4,
- VT_BODY_BRANCH = 6
- };
- const flatbuffers::String *cond_branch() const {
- return GetPointer<const flatbuffers::String *>(VT_COND_BRANCH);
- }
- const flatbuffers::String *body_branch() const {
- return GetPointer<const flatbuffers::String *>(VT_BODY_BRANCH);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_COND_BRANCH) &&
- verifier.VerifyString(cond_branch()) &&
- VerifyOffset(verifier, VT_BODY_BRANCH) &&
- verifier.VerifyString(body_branch()) &&
- verifier.EndTable();
- }
-};
-
-struct WhileLoopAttributeBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_cond_branch(flatbuffers::Offset<flatbuffers::String> cond_branch) {
- fbb_.AddOffset(WhileLoopAttribute::VT_COND_BRANCH, cond_branch);
- }
- void add_body_branch(flatbuffers::Offset<flatbuffers::String> body_branch) {
- fbb_.AddOffset(WhileLoopAttribute::VT_BODY_BRANCH, body_branch);
- }
- explicit WhileLoopAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- WhileLoopAttributeBuilder &operator=(const WhileLoopAttributeBuilder &);
- flatbuffers::Offset<WhileLoopAttribute> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<WhileLoopAttribute>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<WhileLoopAttribute> CreateWhileLoopAttribute(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> cond_branch = 0,
- flatbuffers::Offset<flatbuffers::String> body_branch = 0) {
- WhileLoopAttributeBuilder builder_(_fbb);
- builder_.add_body_branch(body_branch);
- builder_.add_cond_branch(cond_branch);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<WhileLoopAttribute> CreateWhileLoopAttributeDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *cond_branch = nullptr,
- const char *body_branch = nullptr) {
- auto cond_branch__ = cond_branch ? _fbb.CreateString(cond_branch) : 0;
- auto body_branch__ = body_branch ? _fbb.CreateString(body_branch) : 0;
- return tosa::CreateWhileLoopAttribute(
- _fbb,
- cond_branch__,
- body_branch__);
-}
-
-struct UnaryQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_INPUT_ZP = 4,
- VT_OUTPUT_ZP = 6
- };
- int32_t input_zp() const {
- return GetField<int32_t>(VT_INPUT_ZP, 0);
- }
- int32_t output_zp() const {
- return GetField<int32_t>(VT_OUTPUT_ZP, 0);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_INPUT_ZP) &&
- VerifyField<int32_t>(verifier, VT_OUTPUT_ZP) &&
- verifier.EndTable();
- }
-};
-
-struct UnaryQuantInfoBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_input_zp(int32_t input_zp) {
- fbb_.AddElement<int32_t>(UnaryQuantInfo::VT_INPUT_ZP, input_zp, 0);
- }
- void add_output_zp(int32_t output_zp) {
- fbb_.AddElement<int32_t>(UnaryQuantInfo::VT_OUTPUT_ZP, output_zp, 0);
- }
- explicit UnaryQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- UnaryQuantInfoBuilder &operator=(const UnaryQuantInfoBuilder &);
- flatbuffers::Offset<UnaryQuantInfo> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<UnaryQuantInfo>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<UnaryQuantInfo> CreateUnaryQuantInfo(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t input_zp = 0,
- int32_t output_zp = 0) {
- UnaryQuantInfoBuilder builder_(_fbb);
- builder_.add_output_zp(output_zp);
- builder_.add_input_zp(input_zp);
- return builder_.Finish();
-}
-
-struct ConvQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_INPUT_ZP = 4,
- VT_WEIGHT_ZP = 6
- };
- int32_t input_zp() const {
- return GetField<int32_t>(VT_INPUT_ZP, 0);
- }
- int32_t weight_zp() const {
- return GetField<int32_t>(VT_WEIGHT_ZP, 0);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_INPUT_ZP) &&
- VerifyField<int32_t>(verifier, VT_WEIGHT_ZP) &&
- verifier.EndTable();
- }
-};
-
-struct ConvQuantInfoBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_input_zp(int32_t input_zp) {
- fbb_.AddElement<int32_t>(ConvQuantInfo::VT_INPUT_ZP, input_zp, 0);
- }
- void add_weight_zp(int32_t weight_zp) {
- fbb_.AddElement<int32_t>(ConvQuantInfo::VT_WEIGHT_ZP, weight_zp, 0);
- }
- explicit ConvQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- ConvQuantInfoBuilder &operator=(const ConvQuantInfoBuilder &);
- flatbuffers::Offset<ConvQuantInfo> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<ConvQuantInfo>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<ConvQuantInfo> CreateConvQuantInfo(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t input_zp = 0,
- int32_t weight_zp = 0) {
- ConvQuantInfoBuilder builder_(_fbb);
- builder_.add_weight_zp(weight_zp);
- builder_.add_input_zp(input_zp);
- return builder_.Finish();
-}
-
-struct MatMulQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_A_ZP = 4,
- VT_B_ZP = 6
- };
- int32_t a_zp() const {
- return GetField<int32_t>(VT_A_ZP, 0);
- }
- int32_t b_zp() const {
- return GetField<int32_t>(VT_B_ZP, 0);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_A_ZP) &&
- VerifyField<int32_t>(verifier, VT_B_ZP) &&
- verifier.EndTable();
- }
-};
-
-struct MatMulQuantInfoBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_a_zp(int32_t a_zp) {
- fbb_.AddElement<int32_t>(MatMulQuantInfo::VT_A_ZP, a_zp, 0);
- }
- void add_b_zp(int32_t b_zp) {
- fbb_.AddElement<int32_t>(MatMulQuantInfo::VT_B_ZP, b_zp, 0);
- }
- explicit MatMulQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- MatMulQuantInfoBuilder &operator=(const MatMulQuantInfoBuilder &);
- flatbuffers::Offset<MatMulQuantInfo> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<MatMulQuantInfo>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<MatMulQuantInfo> CreateMatMulQuantInfo(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t a_zp = 0,
- int32_t b_zp = 0) {
- MatMulQuantInfoBuilder builder_(_fbb);
- builder_.add_b_zp(b_zp);
- builder_.add_a_zp(a_zp);
- return builder_.Finish();
-}
-
-struct PadQuantInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_INPUT_ZP = 4
- };
- int32_t input_zp() const {
- return GetField<int32_t>(VT_INPUT_ZP, 0);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT_INPUT_ZP) &&
- verifier.EndTable();
- }
-};
-
-struct PadQuantInfoBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_input_zp(int32_t input_zp) {
- fbb_.AddElement<int32_t>(PadQuantInfo::VT_INPUT_ZP, input_zp, 0);
- }
- explicit PadQuantInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- PadQuantInfoBuilder &operator=(const PadQuantInfoBuilder &);
- flatbuffers::Offset<PadQuantInfo> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<PadQuantInfo>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<PadQuantInfo> CreatePadQuantInfo(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t input_zp = 0) {
- PadQuantInfoBuilder builder_(_fbb);
- builder_.add_input_zp(input_zp);
- return builder_.Finish();
-}
-
-struct Version FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT__MAJOR = 4,
- VT__MINOR = 6,
- VT__PATCH = 8,
- VT__EXPERIMENTAL = 10
- };
- int32_t _major() const {
- return GetField<int32_t>(VT__MAJOR, 0);
- }
- int32_t _minor() const {
- return GetField<int32_t>(VT__MINOR, 21);
- }
- int32_t _patch() const {
- return GetField<int32_t>(VT__PATCH, 0);
- }
- bool _experimental() const {
- return GetField<uint8_t>(VT__EXPERIMENTAL, 0) != 0;
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<int32_t>(verifier, VT__MAJOR) &&
- VerifyField<int32_t>(verifier, VT__MINOR) &&
- VerifyField<int32_t>(verifier, VT__PATCH) &&
- VerifyField<uint8_t>(verifier, VT__EXPERIMENTAL) &&
- verifier.EndTable();
- }
-};
-
-struct VersionBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add__major(int32_t _major) {
- fbb_.AddElement<int32_t>(Version::VT__MAJOR, _major, 0);
- }
- void add__minor(int32_t _minor) {
- fbb_.AddElement<int32_t>(Version::VT__MINOR, _minor, 21);
- }
- void add__patch(int32_t _patch) {
- fbb_.AddElement<int32_t>(Version::VT__PATCH, _patch, 0);
- }
- void add__experimental(bool _experimental) {
- fbb_.AddElement<uint8_t>(Version::VT__EXPERIMENTAL, static_cast<uint8_t>(_experimental), 0);
- }
- explicit VersionBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- VersionBuilder &operator=(const VersionBuilder &);
- flatbuffers::Offset<Version> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<Version>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<Version> CreateVersion(
- flatbuffers::FlatBufferBuilder &_fbb,
- int32_t _major = 0,
- int32_t _minor = 21,
- int32_t _patch = 0,
- bool _experimental = false) {
- VersionBuilder builder_(_fbb);
- builder_.add__patch(_patch);
- builder_.add__minor(_minor);
- builder_.add__major(_major);
- builder_.add__experimental(_experimental);
- return builder_.Finish();
-}
-
-struct TosaTensor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_NAME = 4,
- VT_SHAPE = 6,
- VT_TYPE = 8,
- VT_USAGE = 10,
- VT_FORMAT = 12,
- VT_NPY_FILENAME = 14
- };
- const flatbuffers::String *name() const {
- return GetPointer<const flatbuffers::String *>(VT_NAME);
- }
- const flatbuffers::Vector<int32_t> *shape() const {
- return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_SHAPE);
- }
- DType type() const {
- return static_cast<DType>(GetField<uint32_t>(VT_TYPE, 0));
- }
- const flatbuffers::Vector<uint32_t> *usage() const {
- return GetPointer<const flatbuffers::Vector<uint32_t> *>(VT_USAGE);
- }
- const flatbuffers::Vector<uint32_t> *format() const {
- return GetPointer<const flatbuffers::Vector<uint32_t> *>(VT_FORMAT);
- }
- const flatbuffers::String *npy_filename() const {
- return GetPointer<const flatbuffers::String *>(VT_NPY_FILENAME);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_NAME) &&
- verifier.VerifyString(name()) &&
- VerifyOffset(verifier, VT_SHAPE) &&
- verifier.VerifyVector(shape()) &&
- VerifyField<uint32_t>(verifier, VT_TYPE) &&
- VerifyOffset(verifier, VT_USAGE) &&
- verifier.VerifyVector(usage()) &&
- VerifyOffset(verifier, VT_FORMAT) &&
- verifier.VerifyVector(format()) &&
- VerifyOffset(verifier, VT_NPY_FILENAME) &&
- verifier.VerifyString(npy_filename()) &&
- verifier.EndTable();
- }
-};
-
-struct TosaTensorBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_name(flatbuffers::Offset<flatbuffers::String> name) {
- fbb_.AddOffset(TosaTensor::VT_NAME, name);
- }
- void add_shape(flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape) {
- fbb_.AddOffset(TosaTensor::VT_SHAPE, shape);
- }
- void add_type(DType type) {
- fbb_.AddElement<uint32_t>(TosaTensor::VT_TYPE, static_cast<uint32_t>(type), 0);
- }
- void add_usage(flatbuffers::Offset<flatbuffers::Vector<uint32_t>> usage) {
- fbb_.AddOffset(TosaTensor::VT_USAGE, usage);
- }
- void add_format(flatbuffers::Offset<flatbuffers::Vector<uint32_t>> format) {
- fbb_.AddOffset(TosaTensor::VT_FORMAT, format);
- }
- void add_npy_filename(flatbuffers::Offset<flatbuffers::String> npy_filename) {
- fbb_.AddOffset(TosaTensor::VT_NPY_FILENAME, npy_filename);
- }
- explicit TosaTensorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TosaTensorBuilder &operator=(const TosaTensorBuilder &);
- flatbuffers::Offset<TosaTensor> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<TosaTensor>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TosaTensor> CreateTosaTensor(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> name = 0,
- flatbuffers::Offset<flatbuffers::Vector<int32_t>> shape = 0,
- DType type = DType_UNKNOWN,
- flatbuffers::Offset<flatbuffers::Vector<uint32_t>> usage = 0,
- flatbuffers::Offset<flatbuffers::Vector<uint32_t>> format = 0,
- flatbuffers::Offset<flatbuffers::String> npy_filename = 0) {
- TosaTensorBuilder builder_(_fbb);
- builder_.add_npy_filename(npy_filename);
- builder_.add_format(format);
- builder_.add_usage(usage);
- builder_.add_type(type);
- builder_.add_shape(shape);
- builder_.add_name(name);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<TosaTensor> CreateTosaTensorDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *name = nullptr,
- const std::vector<int32_t> *shape = nullptr,
- DType type = DType_UNKNOWN,
- const std::vector<uint32_t> *usage = nullptr,
- const std::vector<uint32_t> *format = nullptr,
- const char *npy_filename = nullptr) {
- auto name__ = name ? _fbb.CreateString(name) : 0;
- auto shape__ = shape ? _fbb.CreateVector<int32_t>(*shape) : 0;
- auto usage__ = usage ? _fbb.CreateVector<uint32_t>(*usage) : 0;
- auto format__ = format ? _fbb.CreateVector<uint32_t>(*format) : 0;
- auto npy_filename__ = npy_filename ? _fbb.CreateString(npy_filename) : 0;
- return tosa::CreateTosaTensor(
- _fbb,
- name__,
- shape__,
- type,
- usage__,
- format__,
- npy_filename__);
-}
-
-struct TosaOperator FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_OP = 4,
- VT_ATTRIBUTE_TYPE = 6,
- VT_ATTRIBUTE = 8,
- VT_INPUTS = 10,
- VT_OUTPUTS = 12,
- VT_QUANT_INFO_TYPE = 14,
- VT_QUANT_INFO = 16
- };
- Op op() const {
- return static_cast<Op>(GetField<uint32_t>(VT_OP, 0));
- }
- Attribute attribute_type() const {
- return static_cast<Attribute>(GetField<uint8_t>(VT_ATTRIBUTE_TYPE, 0));
- }
- const void *attribute() const {
- return GetPointer<const void *>(VT_ATTRIBUTE);
- }
- template<typename T> const T *attribute_as() const;
- const Pool2dAttribute *attribute_as_Pool2dAttribute() const {
- return attribute_type() == Attribute_Pool2dAttribute ? static_cast<const Pool2dAttribute *>(attribute()) : nullptr;
- }
- const Conv2dAttribute *attribute_as_Conv2dAttribute() const {
- return attribute_type() == Attribute_Conv2dAttribute ? static_cast<const Conv2dAttribute *>(attribute()) : nullptr;
- }
- const TransposeConv2dAttribute *attribute_as_TransposeConv2dAttribute() const {
- return attribute_type() == Attribute_TransposeConv2dAttribute ? static_cast<const TransposeConv2dAttribute *>(attribute()) : nullptr;
- }
- const ReluNAttribute *attribute_as_ReluNAttribute() const {
- return attribute_type() == Attribute_ReluNAttribute ? static_cast<const ReluNAttribute *>(attribute()) : nullptr;
- }
- const AxisAttribute *attribute_as_AxisAttribute() const {
- return attribute_type() == Attribute_AxisAttribute ? static_cast<const AxisAttribute *>(attribute()) : nullptr;
- }
- const ReshapeAttribute *attribute_as_ReshapeAttribute() const {
- return attribute_type() == Attribute_ReshapeAttribute ? static_cast<const ReshapeAttribute *>(attribute()) : nullptr;
- }
- const SliceAttribute *attribute_as_SliceAttribute() const {
- return attribute_type() == Attribute_SliceAttribute ? static_cast<const SliceAttribute *>(attribute()) : nullptr;
- }
- const TileAttribute *attribute_as_TileAttribute() const {
- return attribute_type() == Attribute_TileAttribute ? static_cast<const TileAttribute *>(attribute()) : nullptr;
- }
- const ResizeAttribute *attribute_as_ResizeAttribute() const {
- return attribute_type() == Attribute_ResizeAttribute ? static_cast<const ResizeAttribute *>(attribute()) : nullptr;
- }
- const ClampAttribute *attribute_as_ClampAttribute() const {
- return attribute_type() == Attribute_ClampAttribute ? static_cast<const ClampAttribute *>(attribute()) : nullptr;
- }
- const RescaleAttribute *attribute_as_RescaleAttribute() const {
- return attribute_type() == Attribute_RescaleAttribute ? static_cast<const RescaleAttribute *>(attribute()) : nullptr;
- }
- const MulAttribute *attribute_as_MulAttribute() const {
- return attribute_type() == Attribute_MulAttribute ? static_cast<const MulAttribute *>(attribute()) : nullptr;
- }
- const ArithmeticRightShiftAttribute *attribute_as_ArithmeticRightShiftAttribute() const {
- return attribute_type() == Attribute_ArithmeticRightShiftAttribute ? static_cast<const ArithmeticRightShiftAttribute *>(attribute()) : nullptr;
- }
- const CondIfAttribute *attribute_as_CondIfAttribute() const {
- return attribute_type() == Attribute_CondIfAttribute ? static_cast<const CondIfAttribute *>(attribute()) : nullptr;
- }
- const WhileLoopAttribute *attribute_as_WhileLoopAttribute() const {
- return attribute_type() == Attribute_WhileLoopAttribute ? static_cast<const WhileLoopAttribute *>(attribute()) : nullptr;
- }
- const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *inputs() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_INPUTS);
- }
- const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *outputs() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_OUTPUTS);
- }
- QuantInfo quant_info_type() const {
- return static_cast<QuantInfo>(GetField<uint8_t>(VT_QUANT_INFO_TYPE, 0));
- }
- const void *quant_info() const {
- return GetPointer<const void *>(VT_QUANT_INFO);
- }
- template<typename T> const T *quant_info_as() const;
- const UnaryQuantInfo *quant_info_as_UnaryQuantInfo() const {
- return quant_info_type() == QuantInfo_UnaryQuantInfo ? static_cast<const UnaryQuantInfo *>(quant_info()) : nullptr;
- }
- const ConvQuantInfo *quant_info_as_ConvQuantInfo() const {
- return quant_info_type() == QuantInfo_ConvQuantInfo ? static_cast<const ConvQuantInfo *>(quant_info()) : nullptr;
- }
- const MatMulQuantInfo *quant_info_as_MatMulQuantInfo() const {
- return quant_info_type() == QuantInfo_MatMulQuantInfo ? static_cast<const MatMulQuantInfo *>(quant_info()) : nullptr;
- }
- const PadQuantInfo *quant_info_as_PadQuantInfo() const {
- return quant_info_type() == QuantInfo_PadQuantInfo ? static_cast<const PadQuantInfo *>(quant_info()) : nullptr;
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyField<uint32_t>(verifier, VT_OP) &&
- VerifyField<uint8_t>(verifier, VT_ATTRIBUTE_TYPE) &&
- VerifyOffset(verifier, VT_ATTRIBUTE) &&
- VerifyAttribute(verifier, attribute(), attribute_type()) &&
- VerifyOffset(verifier, VT_INPUTS) &&
- verifier.VerifyVector(inputs()) &&
- verifier.VerifyVectorOfStrings(inputs()) &&
- VerifyOffset(verifier, VT_OUTPUTS) &&
- verifier.VerifyVector(outputs()) &&
- verifier.VerifyVectorOfStrings(outputs()) &&
- VerifyField<uint8_t>(verifier, VT_QUANT_INFO_TYPE) &&
- VerifyOffset(verifier, VT_QUANT_INFO) &&
- VerifyQuantInfo(verifier, quant_info(), quant_info_type()) &&
- verifier.EndTable();
- }
-};
-
-template<> inline const Pool2dAttribute *TosaOperator::attribute_as<Pool2dAttribute>() const {
- return attribute_as_Pool2dAttribute();
-}
-
-template<> inline const Conv2dAttribute *TosaOperator::attribute_as<Conv2dAttribute>() const {
- return attribute_as_Conv2dAttribute();
-}
-
-template<> inline const TransposeConv2dAttribute *TosaOperator::attribute_as<TransposeConv2dAttribute>() const {
- return attribute_as_TransposeConv2dAttribute();
-}
-
-template<> inline const ReluNAttribute *TosaOperator::attribute_as<ReluNAttribute>() const {
- return attribute_as_ReluNAttribute();
-}
-
-template<> inline const AxisAttribute *TosaOperator::attribute_as<AxisAttribute>() const {
- return attribute_as_AxisAttribute();
-}
-
-template<> inline const ReshapeAttribute *TosaOperator::attribute_as<ReshapeAttribute>() const {
- return attribute_as_ReshapeAttribute();
-}
-
-template<> inline const SliceAttribute *TosaOperator::attribute_as<SliceAttribute>() const {
- return attribute_as_SliceAttribute();
-}
-
-template<> inline const TileAttribute *TosaOperator::attribute_as<TileAttribute>() const {
- return attribute_as_TileAttribute();
-}
-
-template<> inline const ResizeAttribute *TosaOperator::attribute_as<ResizeAttribute>() const {
- return attribute_as_ResizeAttribute();
-}
-
-template<> inline const ClampAttribute *TosaOperator::attribute_as<ClampAttribute>() const {
- return attribute_as_ClampAttribute();
-}
-
-template<> inline const RescaleAttribute *TosaOperator::attribute_as<RescaleAttribute>() const {
- return attribute_as_RescaleAttribute();
-}
-
-template<> inline const MulAttribute *TosaOperator::attribute_as<MulAttribute>() const {
- return attribute_as_MulAttribute();
-}
-
-template<> inline const ArithmeticRightShiftAttribute *TosaOperator::attribute_as<ArithmeticRightShiftAttribute>() const {
- return attribute_as_ArithmeticRightShiftAttribute();
-}
-
-template<> inline const CondIfAttribute *TosaOperator::attribute_as<CondIfAttribute>() const {
- return attribute_as_CondIfAttribute();
-}
-
-template<> inline const WhileLoopAttribute *TosaOperator::attribute_as<WhileLoopAttribute>() const {
- return attribute_as_WhileLoopAttribute();
-}
-
-template<> inline const UnaryQuantInfo *TosaOperator::quant_info_as<UnaryQuantInfo>() const {
- return quant_info_as_UnaryQuantInfo();
-}
-
-template<> inline const ConvQuantInfo *TosaOperator::quant_info_as<ConvQuantInfo>() const {
- return quant_info_as_ConvQuantInfo();
-}
-
-template<> inline const MatMulQuantInfo *TosaOperator::quant_info_as<MatMulQuantInfo>() const {
- return quant_info_as_MatMulQuantInfo();
-}
-
-template<> inline const PadQuantInfo *TosaOperator::quant_info_as<PadQuantInfo>() const {
- return quant_info_as_PadQuantInfo();
-}
-
-struct TosaOperatorBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_op(Op op) {
- fbb_.AddElement<uint32_t>(TosaOperator::VT_OP, static_cast<uint32_t>(op), 0);
- }
- void add_attribute_type(Attribute attribute_type) {
- fbb_.AddElement<uint8_t>(TosaOperator::VT_ATTRIBUTE_TYPE, static_cast<uint8_t>(attribute_type), 0);
- }
- void add_attribute(flatbuffers::Offset<void> attribute) {
- fbb_.AddOffset(TosaOperator::VT_ATTRIBUTE, attribute);
- }
- void add_inputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> inputs) {
- fbb_.AddOffset(TosaOperator::VT_INPUTS, inputs);
- }
- void add_outputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> outputs) {
- fbb_.AddOffset(TosaOperator::VT_OUTPUTS, outputs);
- }
- void add_quant_info_type(QuantInfo quant_info_type) {
- fbb_.AddElement<uint8_t>(TosaOperator::VT_QUANT_INFO_TYPE, static_cast<uint8_t>(quant_info_type), 0);
- }
- void add_quant_info(flatbuffers::Offset<void> quant_info) {
- fbb_.AddOffset(TosaOperator::VT_QUANT_INFO, quant_info);
- }
- explicit TosaOperatorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TosaOperatorBuilder &operator=(const TosaOperatorBuilder &);
- flatbuffers::Offset<TosaOperator> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<TosaOperator>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TosaOperator> CreateTosaOperator(
- flatbuffers::FlatBufferBuilder &_fbb,
- Op op = Op_UNKNOWN,
- Attribute attribute_type = Attribute_NONE,
- flatbuffers::Offset<void> attribute = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> inputs = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> outputs = 0,
- QuantInfo quant_info_type = QuantInfo_NONE,
- flatbuffers::Offset<void> quant_info = 0) {
- TosaOperatorBuilder builder_(_fbb);
- builder_.add_quant_info(quant_info);
- builder_.add_outputs(outputs);
- builder_.add_inputs(inputs);
- builder_.add_attribute(attribute);
- builder_.add_op(op);
- builder_.add_quant_info_type(quant_info_type);
- builder_.add_attribute_type(attribute_type);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<TosaOperator> CreateTosaOperatorDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- Op op = Op_UNKNOWN,
- Attribute attribute_type = Attribute_NONE,
- flatbuffers::Offset<void> attribute = 0,
- const std::vector<flatbuffers::Offset<flatbuffers::String>> *inputs = nullptr,
- const std::vector<flatbuffers::Offset<flatbuffers::String>> *outputs = nullptr,
- QuantInfo quant_info_type = QuantInfo_NONE,
- flatbuffers::Offset<void> quant_info = 0) {
- auto inputs__ = inputs ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*inputs) : 0;
- auto outputs__ = outputs ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*outputs) : 0;
- return tosa::CreateTosaOperator(
- _fbb,
- op,
- attribute_type,
- attribute,
- inputs__,
- outputs__,
- quant_info_type,
- quant_info);
-}
-
-struct TosaBasicBlock FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_NAME = 4,
- VT_OPERATORS = 6,
- VT_TENSORS = 8,
- VT_INPUTS = 10,
- VT_OUTPUTS = 12
- };
- const flatbuffers::String *name() const {
- return GetPointer<const flatbuffers::String *>(VT_NAME);
- }
- const flatbuffers::Vector<flatbuffers::Offset<TosaOperator>> *operators() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<TosaOperator>> *>(VT_OPERATORS);
- }
- const flatbuffers::Vector<flatbuffers::Offset<TosaTensor>> *tensors() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<TosaTensor>> *>(VT_TENSORS);
- }
- const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *inputs() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_INPUTS);
- }
- const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *outputs() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_OUTPUTS);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_NAME) &&
- verifier.VerifyString(name()) &&
- VerifyOffset(verifier, VT_OPERATORS) &&
- verifier.VerifyVector(operators()) &&
- verifier.VerifyVectorOfTables(operators()) &&
- VerifyOffset(verifier, VT_TENSORS) &&
- verifier.VerifyVector(tensors()) &&
- verifier.VerifyVectorOfTables(tensors()) &&
- VerifyOffset(verifier, VT_INPUTS) &&
- verifier.VerifyVector(inputs()) &&
- verifier.VerifyVectorOfStrings(inputs()) &&
- VerifyOffset(verifier, VT_OUTPUTS) &&
- verifier.VerifyVector(outputs()) &&
- verifier.VerifyVectorOfStrings(outputs()) &&
- verifier.EndTable();
- }
-};
-
-struct TosaBasicBlockBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_name(flatbuffers::Offset<flatbuffers::String> name) {
- fbb_.AddOffset(TosaBasicBlock::VT_NAME, name);
- }
- void add_operators(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<TosaOperator>>> operators) {
- fbb_.AddOffset(TosaBasicBlock::VT_OPERATORS, operators);
- }
- void add_tensors(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<TosaTensor>>> tensors) {
- fbb_.AddOffset(TosaBasicBlock::VT_TENSORS, tensors);
- }
- void add_inputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> inputs) {
- fbb_.AddOffset(TosaBasicBlock::VT_INPUTS, inputs);
- }
- void add_outputs(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> outputs) {
- fbb_.AddOffset(TosaBasicBlock::VT_OUTPUTS, outputs);
- }
- explicit TosaBasicBlockBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TosaBasicBlockBuilder &operator=(const TosaBasicBlockBuilder &);
- flatbuffers::Offset<TosaBasicBlock> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<TosaBasicBlock>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TosaBasicBlock> CreateTosaBasicBlock(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<flatbuffers::String> name = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<TosaOperator>>> operators = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<TosaTensor>>> tensors = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> inputs = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> outputs = 0) {
- TosaBasicBlockBuilder builder_(_fbb);
- builder_.add_outputs(outputs);
- builder_.add_inputs(inputs);
- builder_.add_tensors(tensors);
- builder_.add_operators(operators);
- builder_.add_name(name);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<TosaBasicBlock> CreateTosaBasicBlockDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- const char *name = nullptr,
- const std::vector<flatbuffers::Offset<TosaOperator>> *operators = nullptr,
- const std::vector<flatbuffers::Offset<TosaTensor>> *tensors = nullptr,
- const std::vector<flatbuffers::Offset<flatbuffers::String>> *inputs = nullptr,
- const std::vector<flatbuffers::Offset<flatbuffers::String>> *outputs = nullptr) {
- auto name__ = name ? _fbb.CreateString(name) : 0;
- auto operators__ = operators ? _fbb.CreateVector<flatbuffers::Offset<TosaOperator>>(*operators) : 0;
- auto tensors__ = tensors ? _fbb.CreateVector<flatbuffers::Offset<TosaTensor>>(*tensors) : 0;
- auto inputs__ = inputs ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*inputs) : 0;
- auto outputs__ = outputs ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*outputs) : 0;
- return tosa::CreateTosaBasicBlock(
- _fbb,
- name__,
- operators__,
- tensors__,
- inputs__,
- outputs__);
-}
-
-struct TosaGraph FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
- enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
- VT_VERSION = 4,
- VT_BLOCKS = 6
- };
- const Version *version() const {
- return GetPointer<const Version *>(VT_VERSION);
- }
- const flatbuffers::Vector<flatbuffers::Offset<TosaBasicBlock>> *blocks() const {
- return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<TosaBasicBlock>> *>(VT_BLOCKS);
- }
- bool Verify(flatbuffers::Verifier &verifier) const {
- return VerifyTableStart(verifier) &&
- VerifyOffset(verifier, VT_VERSION) &&
- verifier.VerifyTable(version()) &&
- VerifyOffset(verifier, VT_BLOCKS) &&
- verifier.VerifyVector(blocks()) &&
- verifier.VerifyVectorOfTables(blocks()) &&
- verifier.EndTable();
- }
-};
-
-struct TosaGraphBuilder {
- flatbuffers::FlatBufferBuilder &fbb_;
- flatbuffers::uoffset_t start_;
- void add_version(flatbuffers::Offset<Version> version) {
- fbb_.AddOffset(TosaGraph::VT_VERSION, version);
- }
- void add_blocks(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<TosaBasicBlock>>> blocks) {
- fbb_.AddOffset(TosaGraph::VT_BLOCKS, blocks);
- }
- explicit TosaGraphBuilder(flatbuffers::FlatBufferBuilder &_fbb)
- : fbb_(_fbb) {
- start_ = fbb_.StartTable();
- }
- TosaGraphBuilder &operator=(const TosaGraphBuilder &);
- flatbuffers::Offset<TosaGraph> Finish() {
- const auto end = fbb_.EndTable(start_);
- auto o = flatbuffers::Offset<TosaGraph>(end);
- return o;
- }
-};
-
-inline flatbuffers::Offset<TosaGraph> CreateTosaGraph(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<Version> version = 0,
- flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<TosaBasicBlock>>> blocks = 0) {
- TosaGraphBuilder builder_(_fbb);
- builder_.add_blocks(blocks);
- builder_.add_version(version);
- return builder_.Finish();
-}
-
-inline flatbuffers::Offset<TosaGraph> CreateTosaGraphDirect(
- flatbuffers::FlatBufferBuilder &_fbb,
- flatbuffers::Offset<Version> version = 0,
- const std::vector<flatbuffers::Offset<TosaBasicBlock>> *blocks = nullptr) {
- auto blocks__ = blocks ? _fbb.CreateVector<flatbuffers::Offset<TosaBasicBlock>>(*blocks) : 0;
- return tosa::CreateTosaGraph(
- _fbb,
- version,
- blocks__);
-}
-
-inline bool VerifyAttribute(flatbuffers::Verifier &verifier, const void *obj, Attribute type) {
- switch (type) {
- case Attribute_NONE: {
- return true;
- }
- case Attribute_Pool2dAttribute: {
- auto ptr = reinterpret_cast<const Pool2dAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_Conv2dAttribute: {
- auto ptr = reinterpret_cast<const Conv2dAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_TransposeConv2dAttribute: {
- auto ptr = reinterpret_cast<const TransposeConv2dAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_ReluNAttribute: {
- auto ptr = reinterpret_cast<const ReluNAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_AxisAttribute: {
- auto ptr = reinterpret_cast<const AxisAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_ReshapeAttribute: {
- auto ptr = reinterpret_cast<const ReshapeAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_SliceAttribute: {
- auto ptr = reinterpret_cast<const SliceAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_TileAttribute: {
- auto ptr = reinterpret_cast<const TileAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_ResizeAttribute: {
- auto ptr = reinterpret_cast<const ResizeAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_ClampAttribute: {
- auto ptr = reinterpret_cast<const ClampAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_RescaleAttribute: {
- auto ptr = reinterpret_cast<const RescaleAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_MulAttribute: {
- auto ptr = reinterpret_cast<const MulAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_ArithmeticRightShiftAttribute: {
- auto ptr = reinterpret_cast<const ArithmeticRightShiftAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_CondIfAttribute: {
- auto ptr = reinterpret_cast<const CondIfAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case Attribute_WhileLoopAttribute: {
- auto ptr = reinterpret_cast<const WhileLoopAttribute *>(obj);
- return verifier.VerifyTable(ptr);
- }
- default: return false;
- }
-}
-
-inline bool VerifyAttributeVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
- if (!values || !types) return !values && !types;
- if (values->size() != types->size()) return false;
- for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
- if (!VerifyAttribute(
- verifier, values->Get(i), types->GetEnum<Attribute>(i))) {
- return false;
- }
- }
- return true;
-}
-
-inline bool VerifyQuantInfo(flatbuffers::Verifier &verifier, const void *obj, QuantInfo type) {
- switch (type) {
- case QuantInfo_NONE: {
- return true;
- }
- case QuantInfo_UnaryQuantInfo: {
- auto ptr = reinterpret_cast<const UnaryQuantInfo *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case QuantInfo_ConvQuantInfo: {
- auto ptr = reinterpret_cast<const ConvQuantInfo *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case QuantInfo_MatMulQuantInfo: {
- auto ptr = reinterpret_cast<const MatMulQuantInfo *>(obj);
- return verifier.VerifyTable(ptr);
- }
- case QuantInfo_PadQuantInfo: {
- auto ptr = reinterpret_cast<const PadQuantInfo *>(obj);
- return verifier.VerifyTable(ptr);
- }
- default: return false;
- }
-}
-
-inline bool VerifyQuantInfoVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
- if (!values || !types) return !values && !types;
- if (values->size() != types->size()) return false;
- for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
- if (!VerifyQuantInfo(
- verifier, values->Get(i), types->GetEnum<QuantInfo>(i))) {
- return false;
- }
- }
- return true;
-}
-
-inline const tosa::TosaGraph *GetTosaGraph(const void *buf) {
- return flatbuffers::GetRoot<tosa::TosaGraph>(buf);
-}
-
-inline const tosa::TosaGraph *GetSizePrefixedTosaGraph(const void *buf) {
- return flatbuffers::GetSizePrefixedRoot<tosa::TosaGraph>(buf);
-}
-
-inline const char *TosaGraphIdentifier() {
- return "TOSA";
-}
-
-inline bool TosaGraphBufferHasIdentifier(const void *buf) {
- return flatbuffers::BufferHasIdentifier(
- buf, TosaGraphIdentifier());
-}
-
-inline bool VerifyTosaGraphBuffer(
- flatbuffers::Verifier &verifier) {
- return verifier.VerifyBuffer<tosa::TosaGraph>(TosaGraphIdentifier());
-}
-
-inline bool VerifySizePrefixedTosaGraphBuffer(
- flatbuffers::Verifier &verifier) {
- return verifier.VerifySizePrefixedBuffer<tosa::TosaGraph>(TosaGraphIdentifier());
-}
-
-inline const char *TosaGraphExtension() {
- return "tosa";
-}
-
-inline void FinishTosaGraphBuffer(
- flatbuffers::FlatBufferBuilder &fbb,
- flatbuffers::Offset<tosa::TosaGraph> root) {
- fbb.Finish(root, TosaGraphIdentifier());
-}
-
-inline void FinishSizePrefixedTosaGraphBuffer(
- flatbuffers::FlatBufferBuilder &fbb,
- flatbuffers::Offset<tosa::TosaGraph> root) {
- fbb.FinishSizePrefixed(root, TosaGraphIdentifier());
-}
-
-} // namespace tosa
-
-#endif // FLATBUFFERS_GENERATED_TOSA_TOSA_H_
diff --git a/serialization/tosa_serialization_handler.cpp b/serialization/tosa_serialization_handler.cpp
deleted file mode 100644
index ad33d23..0000000
--- a/serialization/tosa_serialization_handler.cpp
+++ /dev/null
@@ -1,1532 +0,0 @@
-
-// Copyright (c) 2020, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "tosa_serialization_handler.h"
-
-#include <iostream>
-using namespace tosa;
-
-TosaSerializationTensor::TosaSerializationTensor(const flatbuffers::String* name,
- const flatbuffers::Vector<uint32_t>& usage,
- const flatbuffers::Vector<int32_t>& shape,
- DType dtype,
- const flatbuffers::Vector<uint32_t>& format,
- const flatbuffers::String* npy_filename)
-{
- _dtype = dtype;
-
- _usage = new std::vector<Usage>(usage.size());
- for (uint32_t us : usage)
- {
- _usage->push_back((Usage)us);
- }
- assert(_usage);
-
- _format = new std::vector<Format>(format.size());
- for (uint32_t fm : format)
- {
- _format->push_back((Format)fm);
- }
- assert(_format);
-
- _shape = new std::vector<int32_t>(shape.begin(), shape.end());
-
- _shape = new std::vector<int32_t>(shape.begin(), shape.end());
- assert(_shape);
-
- assert(name);
- _name = new std::string(name->str());
- assert(_name);
-
- if (npy_filename)
- {
- _npy_filename = new std::string(npy_filename->str());
- assert(_npy_filename);
- }
- else
- {
- _npy_filename = nullptr;
- }
-}
-
-TosaSerializationTensor::TosaSerializationTensor(std::string name,
- const std::vector<Usage>& usage,
- const std::vector<int32_t>& shape,
- DType dtype,
- const std::vector<Format>& format,
- const std::string* npy_filename)
-{
-
- _dtype = dtype;
-
- _usage = new std::vector<Usage>(usage);
- assert(_usage);
-
- _format = new std::vector<Format>(format);
- assert(_format);
-
- _shape = new std::vector<int32_t>(shape);
- assert(_shape);
-
- _name = new std::string(name);
- assert(_name);
-
- if (npy_filename)
- {
- _npy_filename = new std::string(*npy_filename);
- assert(_npy_filename);
- }
- else
- {
- _npy_filename = nullptr;
- }
-}
-
-TosaSerializationTensor::TosaSerializationTensor()
-{
- _dtype = DType_UNKNOWN;
-
- _usage = new std::vector<Usage>();
- _format = new std::vector<Format>();
- _shape = new std::vector<int32_t>();
- _name = new std::string("UNKNOWN");
- assert(_usage && _format && _shape && _name);
-
- _npy_filename = nullptr;
-}
-
-TosaSerializationTensor::TosaSerializationTensor(const TosaSerializationTensor& rhs)
-{
- _dtype = rhs._dtype;
-
- assert(rhs._usage);
- _usage = new std::vector<Usage>(*rhs._usage);
- assert(_usage);
-
- assert(rhs._format);
- _format = new std::vector<Format>(*rhs._format);
- assert(_format);
-
- assert(rhs._shape);
- _shape = new std::vector<int32_t>(*rhs._shape);
- assert(_shape);
-
- assert(rhs._name);
- _name = new std::string(*rhs._name);
- assert(_name);
-
- if (rhs._npy_filename)
- {
- _npy_filename = new std::string(*rhs._npy_filename);
- assert(_npy_filename);
- }
- else
- {
- _npy_filename = nullptr;
- }
-}
-
-TosaSerializationTensor& TosaSerializationTensor::operator=(const TosaSerializationTensor& rhs)
-{
- _dtype = rhs._dtype;
-
- delete _usage;
- assert(rhs._usage);
- _usage = new std::vector<Usage>(*rhs._usage);
- assert(_usage);
-
- delete _format;
- assert(rhs._format);
- _format = new std::vector<Format>(*rhs._format);
- assert(_format);
-
- delete _shape;
- assert(rhs._shape);
- _shape = new std::vector<int32_t>(*rhs._shape);
- assert(_shape);
-
- delete _name;
- assert(rhs._name);
- _name = new std::string(*rhs._name);
- assert(_name);
-
- if (_npy_filename)
- delete _npy_filename;
-
- if (rhs._npy_filename)
- {
- _npy_filename = new std::string(*rhs._npy_filename);
- }
- else
- {
- _npy_filename = nullptr;
- }
- return *this;
-}
-
-TosaSerializationTensor::TosaSerializationTensor(TosaSerializationTensor&& rhs)
-{
- _dtype = rhs._dtype;
- std::swap(_format, rhs._format);
- std::swap(_usage, rhs._usage);
- std::swap(_shape, rhs._shape);
- std::swap(_name, rhs._name);
- std::swap(_npy_filename, rhs._npy_filename);
-}
-
-TosaSerializationTensor& TosaSerializationTensor::operator=(TosaSerializationTensor&& rhs)
-{
- _dtype = rhs._dtype;
- std::swap(_format, rhs._format);
- std::swap(_usage, rhs._usage);
- std::swap(_shape, rhs._shape);
- std::swap(_name, rhs._name);
- std::swap(_npy_filename, rhs._npy_filename);
- return *this;
-}
-
-TosaSerializationTensor::~TosaSerializationTensor()
-{
- delete _usage;
- delete _format;
- delete _shape;
- delete _name;
- if (_npy_filename)
- delete _npy_filename;
-}
-
-TosaSerializationOperator::TosaSerializationOperator(Op op,
- Attribute attribute_type,
- const TosaAttributeBase* attribute,
- QuantInfo qinfo_type,
- const TosaQuantInfoBase* qinfo,
- std::vector<std::string> input_tensor_names,
- std::vector<std::string> output_tensor_names)
-{
- _op = op;
- _attribute_type = attribute_type;
-
- switch (attribute_type)
- {
- case Attribute_NONE:
- _attribute = new TosaNoneAttribute();
- break;
-#define DEF_ATTRIBUTE(NAME, ...) \
- case Attribute_##NAME##Attribute: \
- _attribute = new Tosa##NAME##Attribute(attribute); \
- break;
-#include "attribute.def"
-#undef DEF_ATTRIBUTE
- default:
- printf("TosaSerializationOperator::TosaSerializationOperator(): Attribute %s not implemented yet\n",
- EnumNamesAttribute()[attribute_type]);
- assert(0);
- }
-
- _qinfo_type = qinfo_type;
- switch (qinfo_type)
- {
- case QuantInfo_NONE:
- _qinfo = new TosaNoneQuantInfo();
- break;
-#define DEF_QUANTIZATION_INFO(NAME, ...) \
- case QuantInfo_##NAME##QuantInfo: \
- _qinfo = new Tosa##NAME##QuantInfo(qinfo); \
- break;
-#include "quant_info.def"
-#undef DEF_QUANTIZATION_INFO
- default:
- printf("TosaSerializationOperator::TosaSerializationOperator(): QuantInfo %s not implemented yet\n",
- EnumNamesQuantInfo()[qinfo_type]);
- assert(0);
- }
-
- assert(_attribute && _qinfo);
-
- _input_tensor_names = new std::vector<std::string>(input_tensor_names);
- _output_tensor_names = new std::vector<std::string>(output_tensor_names);
-
- assert(_input_tensor_names && _output_tensor_names);
-
- _input_tensors = new std::vector<TosaSerializationTensor*>();
- _output_tensors = new std::vector<TosaSerializationTensor*>();
-
- assert(_input_tensors && _output_tensors);
-}
-
-TosaSerializationOperator::~TosaSerializationOperator()
-{
- delete _attribute;
- delete _qinfo;
- delete _input_tensor_names;
- delete _output_tensor_names;
- // TosaSerializationTensor should be free'd in TosaSerializationSerializationHandler destructor
- delete _input_tensors;
- delete _output_tensors;
-}
-
-TosaSerializationBasicBlock::TosaSerializationBasicBlock(std::string name,
- std::vector<TosaSerializationOperator*> operators,
- std::vector<TosaSerializationTensor*> tensors,
- std::vector<std::string> inputs,
- std::vector<std::string> outputs)
-{
-
- _name = new std::string(name);
- assert(_name);
-
- _operators = new std::vector<TosaSerializationOperator*>(operators);
- assert(_operators);
-
- _tensors = new std::vector<TosaSerializationTensor*>(tensors);
- assert(_tensors);
-
- _inputs = new std::vector<std::string>(inputs);
- assert(_inputs);
-
- _outputs = new std::vector<std::string>(outputs);
- assert(_outputs);
-}
-
-TosaSerializationBasicBlock::~TosaSerializationBasicBlock()
-{
- delete _name;
-
- // deallocate all operators
- for (auto op : GetOperators())
- {
- delete op; // ~TosaSerializationOperator()
- }
- delete _operators;
-
- // deallocate all tensors
- for (auto ts : GetTensors())
- {
- delete ts; // ~TosaSerializationTensor()
- }
- _tensors->clear();
-
- delete _inputs;
- delete _outputs;
-}
-
-TosaSerializationHandler::TosaSerializationHandler()
-{
- _schemaLoaded = false;
- _builder = new flatbuffers::FlatBufferBuilder();
- _parser = new flatbuffers::Parser();
- _blocks = new std::vector<TosaSerializationBasicBlock*>();
-
- assert(_builder && _parser && _blocks);
-
- SetTosaVersion();
-}
-
-TosaSerializationHandler::~TosaSerializationHandler()
-{
- if (_version)
- delete _version;
- delete _builder;
- delete _parser;
-
- Clear(); // deallocate all basic blocks
-
- delete _blocks;
-}
-
-tosa_err_t TosaSerializationHandler::SetTosaVersion()
-{
- // version is specified within .fbs
- // and it's encoded as defaulted value of CreateTosaVersion()
- // need to write out one object to read that value out
- // TODO: very costly now. is there any better way to encode constant in .fbs?
- auto fboffset_version = CreateVersion(*_builder);
- auto fboffset_tosa_graph = CreateTosaGraphDirect(*_builder, fboffset_version, nullptr);
- _builder->Finish(fboffset_tosa_graph);
- std::string jsongen;
- uint8_t* buf = _builder->GetBufferPointer();
- auto fb_tosa_graph = GetTosaGraph(buf);
- auto fb_tosa_version = fb_tosa_graph->version();
-
- _version = new TosaVersion(fb_tosa_version->_major(), fb_tosa_version->_minor(), fb_tosa_version->_patch(),
- fb_tosa_version->_experimental());
-
- assert(_version);
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::LoadFileSchema(const char* schema_filename)
-{
- std::string schema;
- bool ok;
-
- ok = flatbuffers::LoadFile(schema_filename, false, &schema);
- if (!ok)
- {
- printf("Error loading schema file: %s\n", schema_filename);
- return TOSA_FILE_ERROR;
- }
-
- ok = _parser->Parse(schema.c_str());
- if (!ok)
- {
- printf("Error parsing ISA schema file: %s\n", schema_filename);
- return TOSA_FILE_ERROR;
- }
- _schemaLoaded = true;
-
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::LoadFileJson(const char* filename)
-{
- std::string jsonfile;
- bool ok;
- tosa_err_t err;
-
- if (!_schemaLoaded)
- {
- return TOSA_SCHEMA_MISSING;
- }
-
- ok = flatbuffers::LoadFile(filename, false, &jsonfile);
- if (!ok)
- {
- printf("Error loading json file: %s\n", filename);
- return TOSA_FILE_ERROR;
- }
-
- ok = _parser->Parse(jsonfile.c_str());
- if (!ok)
- {
- printf("Error parsing json file: %s\n", filename);
- return TOSA_FILE_ERROR;
- }
-
- uint8_t* buf = _parser->builder_.GetBufferPointer();
-
- err = InitWithBuf(buf);
- if (err != TOSA_OK)
- {
- return err;
- }
-
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::SaveFileJson(const char* filename)
-{
- std::string jsongen;
- tosa_err_t err;
-
- if (!_schemaLoaded)
- {
- return TOSA_SCHEMA_MISSING;
- }
-
- err = FreezeBuilder();
- if (err != TOSA_OK)
- {
- return err;
- }
-
- uint8_t* buf = _builder->GetBufferPointer();
-
- if (!GenerateText(*_parser, buf, &jsongen))
- {
- printf("Couldn't serialize parsed data to JSON!\n");
- return TOSA_FILE_ERROR;
- }
-
- FILE* file = fopen(filename, "wb");
-
- if (!file)
- {
- printf("Couldn't open output file: %s\n", filename);
- return TOSA_FILE_ERROR;
- }
-
- if (fwrite(jsongen.c_str(), sizeof(char), jsongen.size(), file) != jsongen.size())
- {
- printf("Error writing to json output file: %s\n", filename);
- fclose(file);
- return TOSA_FILE_ERROR;
- }
-
- if (file)
- fclose(file);
-
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::LoadFileTosaFlatbuffer(const char* filename)
-{
- std::string read_buffer;
- tosa_err_t err;
- uint8_t* buf;
- bool ok;
-
- ok = flatbuffers::LoadFile(filename, false, &read_buffer);
- if (!ok)
- {
- printf("Error loading flatbuffer file: %s\n", filename);
- return TOSA_FILE_ERROR;
- }
-
- buf = (uint8_t*)read_buffer.data();
-
- err = InitWithBuf(buf);
- if (err != TOSA_OK)
- {
- return err;
- }
-
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::SaveFileTosaFlatbuffer(const char* filename)
-{
- tosa_err_t err;
-
- err = FreezeBuilder();
- if (err != TOSA_OK)
- {
- return err;
- }
-
- uint8_t* buf = _builder->GetBufferPointer();
-
- bool ok = flatbuffers::SaveFile(filename, (const char*)buf, _builder->GetSize(), false);
- if (!ok)
- {
- printf("Error saving floatbuffer file: %s\n", filename);
- return TOSA_FILE_ERROR;
- }
-
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::Clear()
-{
- // deallocate all basic blocks
- for (auto bb : GetBlocks())
- {
- delete bb;
- }
- _blocks->clear();
-
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::CheckTosaVersion(const TosaVersion& read_version)
-{
- if ((*_version) != read_version)
- {
- printf("WARNING: read tosa version: %s != schema tosa version %s\n", read_version.to_string().c_str(),
- this->_version->to_string().c_str());
- return TOSA_VERSION_MISMATCH;
- }
-
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::InitWithBuf(const uint8_t* buf)
-{
- auto fb_tosa_graph = GetTosaGraph(buf);
- auto fb_tosa_version = fb_tosa_graph->version();
- auto fb_tosa_blocks = fb_tosa_graph->blocks();
-
- std::vector<std::string> operator_inputs_container;
- std::vector<std::string> operator_outputs_container;
-
- std::vector<TosaSerializationOperator*> block_operators_container;
- std::vector<TosaSerializationTensor*> block_tensors_container;
- std::vector<std::string> block_inputs_container;
- std::vector<std::string> block_outputs_container;
-
- TosaAttributeBase* typed_attribute = NULL;
- TosaQuantInfoBase* typed_qinfo = NULL;
- TosaSerializationOperator* new_operator = NULL;
- TosaSerializationBasicBlock* new_block = NULL;
- TosaSerializationTensor* new_tensor = NULL;
-
- // erase container
- Clear();
-
- TosaVersion read_version(fb_tosa_version->_major(), fb_tosa_version->_minor(), fb_tosa_version->_patch(),
- fb_tosa_version->_experimental());
- tosa_err_t err = CheckTosaVersion(read_version);
-
- if (err != TOSA_OK)
- return err;
-
- for (size_t i = 0; i < fb_tosa_blocks->size(); i++)
- {
- auto curr_block = fb_tosa_blocks->Get(i);
-
- auto block_name = curr_block->name()->str();
-
- auto fb_tosa_operators = curr_block->operators();
- block_operators_container.clear();
- for (size_t j = 0; j < fb_tosa_operators->size(); j++)
- {
- auto curr_operator = fb_tosa_operators->Get(j);
-
- auto operator_op = curr_operator->op();
- auto attribute_type = curr_operator->attribute_type();
- auto attribute = curr_operator->attribute();
- auto operator_qinfo_type = curr_operator->quant_info_type();
- auto operator_qinfo = curr_operator->quant_info();
-
- // input tensors
- auto operator_inputs = curr_operator->inputs();
- operator_inputs_container.clear();
- if (operator_inputs)
- {
- for (size_t k = 0; k < operator_inputs->size(); k++)
- {
- auto curr_input = operator_inputs->Get(k);
- operator_inputs_container.push_back(curr_input->str());
- }
- }
-
- // output tensors
- auto operator_outputs = curr_operator->outputs();
- operator_outputs_container.clear();
- if (operator_outputs)
- {
- for (size_t k = 0; k < operator_outputs->size(); k++)
- {
- auto curr_output = operator_outputs->Get(k);
- operator_outputs_container.push_back(curr_output->str());
- }
- }
-
- switch (attribute_type)
- {
- case Attribute_NONE:
- typed_attribute = new TosaNoneAttribute();
- break;
-#define DEF_ATTRIBUTE(NAME, ...) \
- case Attribute_##NAME##Attribute: \
- typed_attribute = new Tosa##NAME##Attribute(attribute); \
- break;
-#include "attribute.def"
-#undef DEF_ATTRIBUTE
- default:
- printf("TosaSerializationHandler::InitWithBuf(): Attribute %s not implemented yet\n",
- EnumNamesAttribute()[attribute_type]);
- return TOSA_INTERNAL_ERROR;
- }
-
- switch (operator_qinfo_type)
- {
- case QuantInfo_NONE:
- typed_qinfo = new TosaNoneQuantInfo();
- break;
-#define DEF_QUANTIZATION_INFO(NAME, ...) \
- case QuantInfo_##NAME##QuantInfo: \
- typed_qinfo = new Tosa##NAME##QuantInfo(operator_qinfo); \
- break;
-
-#include "quant_info.def"
-#undef DEF_QUANTIZATION_INFO
- default:
- printf("TosaSerializationHandler::InitWithBuf(): QuantInfo %s not implemented yet\n",
- EnumNamesQuantInfo()[operator_qinfo_type]);
- return TOSA_INTERNAL_ERROR;
- }
-
- new_operator =
- new TosaSerializationOperator(operator_op, attribute_type, typed_attribute, operator_qinfo_type,
- typed_qinfo, operator_inputs_container, operator_outputs_container);
- if (new_operator)
- {
- block_operators_container.push_back(new_operator);
- }
- else
- {
- return TOSA_MEMORY_ERROR;
- }
-
- if (typed_attribute)
- delete typed_attribute;
- if (typed_qinfo)
- delete typed_qinfo;
- }
-
- auto fb_tosa_tensors = curr_block->tensors();
- block_tensors_container.clear();
- for (size_t j = 0; j < fb_tosa_tensors->size(); j++)
- {
- auto curr_tensor = fb_tosa_tensors->Get(j);
-
- auto tensor_name = curr_tensor->name();
- auto tensor_usage = curr_tensor->usage();
- auto tensor_shape = curr_tensor->shape();
- auto tensor_type = curr_tensor->type();
- auto tensor_format = curr_tensor->format();
- auto tensor_npy_filename = curr_tensor->npy_filename();
-
- new_tensor = new TosaSerializationTensor(tensor_name, *tensor_usage, *tensor_shape, tensor_type,
- *tensor_format, tensor_npy_filename);
- if (new_tensor)
- {
- block_tensors_container.push_back(new_tensor);
- }
- else
- {
- return TOSA_MEMORY_ERROR;
- }
- }
-
- auto block_inputs = curr_block->inputs();
- auto block_outputs = curr_block->outputs();
-
- block_inputs_container.clear();
- block_outputs_container.clear();
-
- for (size_t j = 0; j < block_inputs->size(); j++)
- {
- auto curr_block_input = block_inputs->Get(j);
- block_inputs_container.push_back(curr_block_input->str());
- }
- for (size_t j = 0; j < block_outputs->size(); j++)
- {
- auto curr_block_output = block_outputs->Get(j);
- block_outputs_container.push_back(curr_block_output->str());
- }
-
- new_block = new TosaSerializationBasicBlock(block_name, block_operators_container, block_tensors_container,
- block_inputs_container, block_outputs_container);
- if (new_block)
- {
- this->GetBlocks().push_back(new_block);
- }
- else
- {
- return TOSA_MEMORY_ERROR;
- }
- }
-
- return TOSA_OK;
-}
-
-tosa_err_t TosaSerializationHandler::FreezeBuilder()
-{
- std::vector<flatbuffers::Offset<TosaBasicBlock>> fboffset_blocks;
-
- std::vector<flatbuffers::Offset<TosaOperator>> fboffset_block_operators;
- std::vector<flatbuffers::Offset<TosaTensor>> fboffset_block_tensors;
- std::vector<flatbuffers::Offset<flatbuffers::String>> fboffset_block_inputs;
- std::vector<flatbuffers::Offset<flatbuffers::String>> fboffset_block_outputs;
-
- std::vector<flatbuffers::Offset<flatbuffers::String>> fboffset_operator_inputs;
- std::vector<flatbuffers::Offset<flatbuffers::String>> fboffset_operator_outputs;
-
- // translate TosaFlatbufferOperator to flatbuffers::Offset<TosaOperator>
- for (auto block : GetBlocks())
- {
- fboffset_block_operators.clear();
- fboffset_block_tensors.clear();
- fboffset_block_inputs.clear();
- fboffset_block_outputs.clear();
-
- auto block_name = _builder->CreateString(block->GetName().c_str());
-
- for (auto tensor_str : block->GetInputs())
- {
- auto tensor_name = _builder->CreateString(tensor_str.c_str());
- fboffset_block_inputs.push_back(tensor_name);
- }
-
- for (auto tensor_str : block->GetOutputs())
- {
- auto tensor_name = _builder->CreateString(tensor_str.c_str());
- fboffset_block_outputs.push_back(tensor_name);
- }
-
- auto fb_block_inputs = _builder->CreateVector(fboffset_block_inputs);
- auto fb_block_outputs = _builder->CreateVector(fboffset_block_outputs);
-
- for (auto op : block->GetOperators())
- {
- fboffset_operator_inputs.clear();
- fboffset_operator_outputs.clear();
-
- auto operator_op = op->GetOp();
- auto attribute_type = op->GetAttributeType();
-
- for (auto tensor_str : op->GetInputTensorNames())
- {
- auto tensor_name = _builder->CreateString(tensor_str.c_str());
- fboffset_operator_inputs.push_back(tensor_name);
- }
-
- for (auto tensor_str : op->GetOutputTensorNames())
- {
- auto tensor_name = _builder->CreateString(tensor_str.c_str());
- fboffset_operator_outputs.push_back(tensor_name);
- }
-
- auto fb_operator_inputs = _builder->CreateVector(fboffset_operator_inputs);
- auto fb_operator_outputs = _builder->CreateVector(fboffset_operator_outputs);
-
- flatbuffers::Offset<void> fb_attribute;
- switch (attribute_type)
- {
- case Attribute_NONE:
- fb_attribute = 0;
- break;
-
-#define DEF_ARGS_S_STR(NAME, V) , _builder->CreateString(reinterpret_cast<Tosa##NAME*>(op->GetAttribute())->V().c_str())
-#define DEF_ARGS_S_DEFAULT(NAME, V) , reinterpret_cast<Tosa##NAME*>(op->GetAttribute())->V()
-
-#define DEF_ARGS_S_int32_t(NAME, V) DEF_ARGS_S_DEFAULT(NAME, V)
-#define DEF_ARGS_S_float(NAME, V) DEF_ARGS_S_DEFAULT(NAME, V)
-#define DEF_ARGS_S_bool(NAME, V) DEF_ARGS_S_DEFAULT(NAME, V)
-#define DEF_ARGS_S_ResizeMode(NAME, V) DEF_ARGS_S_DEFAULT(NAME, V)
-#define DEF_ARGS_S_string(NAME, V) DEF_ARGS_S_STR(NAME, V)
-
-#define DEF_ARGS_S(NAME, T, V) DEF_ARGS_S_##T(NAME, V)
-#define DEF_ARGS_V(NAME, T, V) , _builder->CreateVector<T>(reinterpret_cast<Tosa##NAME*>(op->GetAttribute())->V())
-
-#define DEF_ARGS_1(NAME, T0, F0, V0) DEF_ARGS_##F0(NAME, T0, V0)
-#define DEF_ARGS_2(NAME, T0, F0, V0, T1, F1, V1) DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1)
-#define DEF_ARGS_3(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2)
-#define DEF_ARGS_4(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3)
-#define DEF_ARGS_5(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4)
-#define DEF_ARGS_6(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5)
-#define DEF_ARGS_7(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6)
-#define DEF_ATTRIBUTE(NAME, NUM_ARGS, ...) \
- case Attribute_##NAME##Attribute: \
- fb_attribute = Create##NAME##Attribute(*_builder DEF_ARGS_##NUM_ARGS(NAME##Attribute, __VA_ARGS__)).Union(); \
- break;
-
-#include "attribute.def"
-#undef DEF_ATTRIBUTE
-#undef DEF_ARGS_1
-#undef DEF_ARGS_2
-#undef DEF_ARGS_3
-#undef DEF_ARGS_4
-#undef DEF_ARGS_5
-#undef DEF_ARGS_6
-#undef DEF_ARGS_7
-#undef DEF_ARGS_S
-#undef DEF_ARGS_V
-#undef DEF_ARGS_S_int32_t
-#undef DEF_ARGS_S_float
-#undef DEF_ARGS_S_bool
-#undef DEF_ARGS_S_ResizeMode
-#undef DEF_ARGS_S_string
-#undef DEF_ARGS_S_STR
-#undef DEF_ARGS_S_DEFAULT
- default:
- printf("TosaSerializationHandler::FreezeBuilder(): Attribute %s not implemented yet\n",
- EnumNamesAttribute()[attribute_type]);
- return TOSA_INTERNAL_ERROR;
- }
-
- auto qinfo_type = op->GetQInfoType();
- flatbuffers::Offset<void> fb_operator_qinfo;
- switch (qinfo_type)
- {
- case QuantInfo_NONE:
- fb_operator_qinfo = 0;
- break;
-#define DEF_ARGS_S(NAME, T, V) , reinterpret_cast<Tosa##NAME*>(op->GetQInfo())->V()
-#define DEF_ARGS_V(NAME, T, V) , _builder->CreateVector<T>(reinterpret_cast<Tosa##NAME*>(op->GetQInfo())->V())
-
-#define DEF_ARGS_1(NAME, T0, F0, V0) DEF_ARGS_##F0(NAME, T0, V0)
-#define DEF_ARGS_2(NAME, T0, F0, V0, T1, F1, V1) DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1)
-#define DEF_ARGS_3(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2)
-#define DEF_ARGS_4(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3)
-#define DEF_ARGS_5(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4)
-#define DEF_ARGS_6(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5)
-#define DEF_ARGS_7(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6)
-#define DEF_ARGS_8(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6) \
- DEF_ARGS_##F7(NAME, T7, V7)
-#define DEF_ARGS_9(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7, T8, F8, V8) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6) \
- DEF_ARGS_##F7(NAME, T7, V7) DEF_ARGS_##F8(NAME, T8, V8)
-#define DEF_ARGS_10(NAME, T0, F0, V0, T1, F1, V1, T2, F2, V2, T3, F3, V3, T4, F4, V4, T5, F5, V5, T6, F6, V6, T7, F7, \
- V7, T8, F8, V8, T9, F9, V9) \
- DEF_ARGS_##F0(NAME, T0, V0) DEF_ARGS_##F1(NAME, T1, V1) DEF_ARGS_##F2(NAME, T2, V2) DEF_ARGS_##F3(NAME, T3, V3) \
- DEF_ARGS_##F4(NAME, T4, V4) DEF_ARGS_##F5(NAME, T5, V5) DEF_ARGS_##F6(NAME, T6, V6) \
- DEF_ARGS_##F7(NAME, T7, V7) DEF_ARGS_##F8(NAME, T8, V8) DEF_ARGS_##F9(NAME, T9, V9)
-#define DEF_QUANTIZATION_INFO(NAME, NUM_ARGS, ...) \
- case QuantInfo_##NAME##QuantInfo: \
- fb_operator_qinfo = \
- Create##NAME##QuantInfo(*_builder DEF_ARGS_##NUM_ARGS(NAME##QuantInfo, __VA_ARGS__)).Union(); \
- break;
-
-#include "quant_info.def"
-#undef DEF_QUANTIZATION_INFO
-#undef DEF_ARGS_1
-#undef DEF_ARGS_2
-#undef DEF_ARGS_3
-#undef DEF_ARGS_4
-#undef DEF_ARGS_5
-#undef DEF_ARGS_6
-#undef DEF_ARGS_7
-#undef DEF_ARGS_8
-#undef DEF_ARGS_9
-#undef DEF_ARGS_10
-#undef DEF_ARGS_S
-#undef DEF_ARGS_V
- default:
- printf("TosaSerializationHandler::FreezeBuilder(): Attribute %s not implemented yet\n",
- EnumNamesAttribute()[attribute_type]);
- return TOSA_INTERNAL_ERROR;
- }
-
- auto fboffset_operator =
- CreateTosaOperator(*_builder, operator_op, attribute_type, fb_attribute, fb_operator_inputs,
- fb_operator_outputs, qinfo_type, fb_operator_qinfo);
- fboffset_block_operators.push_back(fboffset_operator);
- }
-
- auto fb_block_operators = _builder->CreateVector(fboffset_block_operators);
-
- for (auto tensor : block->GetTensors())
- {
-
- auto tensor_name = _builder->CreateString(tensor->GetName().c_str());
- auto tensor_usage =
- _builder->CreateVector(std::vector<uint32_t>(tensor->GetUsage().begin(), tensor->GetUsage().end()));
- auto tensor_shape = _builder->CreateVector(tensor->GetShape());
- auto tensor_dtype = tensor->GetDtype();
- auto tensor_format =
- _builder->CreateVector(std::vector<uint32_t>(tensor->GetFormat().begin(), tensor->GetFormat().end()));
- flatbuffers::Offset<flatbuffers::String> tensor_npy_filename = 0;
- if (tensor->GetNpyFilePtr())
- tensor_npy_filename = _builder->CreateString(tensor->GetNpyFilePtr()->c_str());
-
- auto fboffset_tensor = CreateTosaTensor(*_builder, tensor_name, tensor_shape, tensor_dtype, tensor_usage,
- tensor_format, tensor_npy_filename);
- fboffset_block_tensors.push_back(fboffset_tensor);
- }
-
- auto fb_block_tensors = _builder->CreateVector(fboffset_block_tensors);
-
- auto fboffset_block = CreateTosaBasicBlock(*_builder, block_name, fb_block_operators, fb_block_tensors,
- fb_block_inputs, fb_block_outputs);
- fboffset_blocks.push_back(fboffset_block);
- }
-
- auto fb_blocks = _builder->CreateVector(fboffset_blocks);
-
- auto fb_version = CreateVersion(*_builder, GetTosaVersion()->_major, GetTosaVersion()->_minor,
- GetTosaVersion()->_patch, GetTosaVersion()->_experimental);
-
- auto fb_graph = CreateTosaGraph(*_builder, fb_version, fb_blocks);
- _builder->Finish(fb_graph);
-
- return TOSA_OK;
-}
-
-// Magic NUMPY header
-static const char NUMPY_HEADER_STR[] = "\x93NUMPY\x1\x0\x76\x0{";
-static const int NUMPY_HEADER_SZ = 128;
-
-NumpyUtilities::NPError NumpyUtilities::readFromNpyFile(const char* filename, const uint32_t elems, bool* databuf)
-{
- const char dtype_str[] = "'|b1'";
- FILE* infile = nullptr;
- NPError rc = NO_ERROR;
-
- assert(filename);
- assert(databuf);
-
- infile = fopen(filename, "rb");
- if (!infile)
- {
- rc = FILE_NOT_FOUND;
- goto done;
- }
-
- rc = checkNpyHeader(infile, elems, dtype_str);
- if (rc != NO_ERROR)
- {
- goto done;
- }
-
- // Read in the data from numpy byte array to native bool
- // array format
- for (uint32_t i = 0; i < elems; i++)
- {
- int val = fgetc(infile);
-
- if (val == EOF)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
-
- databuf[i] = val;
- }
-
-done:
-
- if (infile)
- fclose(infile);
-
- return rc;
-}
-
-NumpyUtilities::NPError NumpyUtilities::readFromNpyFile(const char* filename, const uint32_t elems, int32_t* databuf)
-{
- const char dtype_str[] = "'<i4'";
- FILE* infile = nullptr;
- NPError rc = NO_ERROR;
-
- assert(filename);
- assert(databuf);
-
- infile = fopen(filename, "rb");
- if (!infile)
- {
- rc = FILE_NOT_FOUND;
- goto done;
- }
-
- rc = checkNpyHeader(infile, elems, dtype_str);
- if (rc != NO_ERROR)
- {
- goto done;
- }
-
- // Now we are at the beginning of the data
- // Parse based on the datatype and number of dimensions
- if (fread(databuf, sizeof(int32_t), elems, infile) != elems)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
-
-done:
-
- if (infile)
- fclose(infile);
-
- return rc;
-}
-
-NumpyUtilities::NPError NumpyUtilities::readFromNpyFile(const char* filename, const uint32_t elems, int64_t* databuf)
-{
- const char dtype_str[] = "'<i8'";
- FILE* infile = nullptr;
- NPError rc = NO_ERROR;
-
- assert(filename);
- assert(databuf);
-
- infile = fopen(filename, "rb");
- if (!infile)
- {
- rc = FILE_NOT_FOUND;
- goto done;
- }
-
- rc = checkNpyHeader(infile, elems, dtype_str);
- if (rc != NO_ERROR)
- {
- goto done;
- }
-
- // Now we are at the beginning of the data
- // Parse based on the datatype and number of dimensions
- if (fread(databuf, sizeof(int64_t), elems, infile) != elems)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
-
-done:
-
- if (infile)
- fclose(infile);
-
- return rc;
-}
-
-NumpyUtilities::NPError NumpyUtilities::readFromNpyFile(const char* filename, const uint32_t elems, float* databuf)
-{
- const char dtype_str[] = "'<f4'";
- FILE* infile = nullptr;
- NPError rc = NO_ERROR;
-
- assert(filename);
- assert(databuf);
-
- infile = fopen(filename, "rb");
- if (!infile)
- {
- rc = FILE_NOT_FOUND;
- goto done;
- }
-
- rc = checkNpyHeader(infile, elems, dtype_str);
- if (rc != NO_ERROR)
- {
- goto done;
- }
-
- // Now we are at the beginning of the data
- // Parse based on the datatype and number of dimensions
- if (fread(databuf, sizeof(float), elems, infile) != elems)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
-
-done:
-
- if (infile)
- fclose(infile);
-
- return rc;
-}
-
-NumpyUtilities::NPError NumpyUtilities::checkNpyHeader(FILE* infile, const uint32_t elems, const char* dtype_str)
-{
- char buf[NUMPY_HEADER_SZ + 1];
- char* ptr = nullptr;
- NPError rc = NO_ERROR;
- bool foundFormat = false;
- bool foundOrder = false;
- bool foundShape = false;
- bool fortranOrder = false;
- std::vector<int> shape;
- uint32_t totalElems = 1;
- char* outer_end = NULL;
-
- assert(infile);
- assert(elems > 0);
-
- if (fread(buf, NUMPY_HEADER_SZ, 1, infile) != 1)
- {
- rc = HEADER_PARSE_ERROR;
- goto done;
- }
-
- if (memcmp(buf, NUMPY_HEADER_STR, sizeof(NUMPY_HEADER_STR) - 1))
- {
- rc = HEADER_PARSE_ERROR;
- goto done;
- }
-
- ptr = strtok_r(buf + sizeof(NUMPY_HEADER_STR) - 1, ":", &outer_end);
-
- // Read in the data type, order, and shape
- while (ptr && (!foundFormat || !foundOrder || !foundShape))
- {
-
- // End of string?
- if (!ptr)
- break;
-
- // Skip whitespace
- while (isspace(*ptr))
- ptr++;
-
- // Parse the dictionary field name
- if (!strcmp(ptr, "'descr'"))
- {
- ptr = strtok_r(NULL, ",", &outer_end);
- if (!ptr)
- break;
-
- while (isspace(*ptr))
- ptr++;
-
- if (strcmp(ptr, dtype_str))
- {
- rc = FILE_TYPE_MISMATCH;
- goto done;
- }
-
- foundFormat = true;
- }
- else if (!strcmp(ptr, "'fortran_order'"))
- {
- ptr = strtok_r(NULL, ",", &outer_end);
- if (!ptr)
- break;
-
- while (isspace(*ptr))
- ptr++;
-
- if (!strcmp(ptr, "False"))
- {
- fortranOrder = false;
- }
- else
- {
- rc = FILE_TYPE_MISMATCH;
- goto done;
- }
-
- foundOrder = true;
- }
- else if (!strcmp(ptr, "'shape'"))
- {
-
- ptr = strtok_r(NULL, "(", &outer_end);
- if (!ptr)
- break;
- ptr = strtok_r(NULL, ")", &outer_end);
- if (!ptr)
- break;
-
- while (isspace(*ptr))
- ptr++;
-
- // The shape contains N comma-separated integers. Read up to 4.
- char* end = NULL;
-
- ptr = strtok_r(ptr, ",", &end);
- for (int i = 0; i < 4; i++)
- {
- // Out of dimensions
- if (!ptr)
- break;
-
- int dim = atoi(ptr);
-
- // Dimension is 0
- if (dim == 0)
- break;
-
- shape.push_back(dim);
- totalElems *= dim;
- ptr = strtok_r(NULL, ",", &end);
- }
-
- foundShape = true;
- }
- else
- {
- rc = HEADER_PARSE_ERROR;
- goto done;
- }
-
- if (!ptr)
- break;
-
- ptr = strtok_r(NULL, ":", &outer_end);
- }
-
- if (!foundShape || !foundFormat || !foundOrder)
- {
- rc = HEADER_PARSE_ERROR;
- goto done;
- }
-
- // Validate header
- if (fortranOrder != false)
- {
- rc = FILE_TYPE_MISMATCH;
- goto done;
- }
-
- if (totalElems != elems)
- {
- rc = BUFFER_SIZE_MISMATCH;
- goto done;
- }
-
- // Go back to the begininng and read until the end of the header dictionary
- rewind(infile);
- int val;
-
- do
- {
- val = fgetc(infile);
- } while (val != EOF && val != '\n');
-
-done:
-
- return rc;
-}
-
-NumpyUtilities::NPError NumpyUtilities::writeToNpyFile(const char* filename, const uint32_t elems, const bool* databuf)
-{
- std::vector<int32_t> shape = { (int32_t)elems };
- return writeToNpyFile(filename, shape, databuf);
-}
-
-NumpyUtilities::NPError
- NumpyUtilities::writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const bool* databuf)
-{
- const char dtype_str[] = "'|b1'";
- FILE* outfile = nullptr;
- NPError rc = NO_ERROR;
- uint32_t totalElems = 1;
-
- assert(filename);
- assert(shape.size() >= 0);
- assert(databuf);
-
- outfile = fopen(filename, "wb");
-
- if (!outfile)
- {
- rc = FILE_NOT_FOUND;
- goto done;
- }
-
- for (uint32_t i = 0; i < shape.size(); i++)
- {
- totalElems *= shape[i];
- }
-
- rc = writeNpyHeader(outfile, shape, dtype_str);
-
- // Numpy save format stores booleans as a byte array
- // with one byte per boolean. This somewhat inefficiently
- // remaps from system bool[] to this format.
- for (uint32_t i = 0; i < totalElems; i++)
- {
- int val = databuf[i] ? 1 : 0;
- if (fputc(val, outfile) == EOF)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
- }
-
-done:
-
- if (outfile)
- fclose(outfile);
-
- return rc;
-}
-
-NumpyUtilities::NPError
- NumpyUtilities::writeToNpyFile(const char* filename, const uint32_t elems, const int32_t* databuf)
-{
- std::vector<int32_t> shape = { (int32_t)elems };
- return writeToNpyFile(filename, shape, databuf);
-}
-
-NumpyUtilities::NPError
- NumpyUtilities::writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const int32_t* databuf)
-{
- const char dtype_str[] = "'<i4'";
- FILE* outfile = nullptr;
- NPError rc = NO_ERROR;
- uint32_t totalElems = 1;
-
- assert(filename);
- assert(shape.size() >= 0);
- assert(databuf);
-
- outfile = fopen(filename, "wb");
-
- if (!outfile)
- {
- rc = FILE_NOT_FOUND;
- goto done;
- }
-
- for (uint32_t i = 0; i < shape.size(); i++)
- {
- totalElems *= shape[i];
- }
-
- rc = writeNpyHeader(outfile, shape, dtype_str);
-
- if (fwrite(databuf, sizeof(int32_t), totalElems, outfile) != totalElems)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
-
-done:
-
- if (outfile)
- fclose(outfile);
-
- return rc;
-}
-
-NumpyUtilities::NPError
- NumpyUtilities::writeToNpyFile(const char* filename, const uint32_t elems, const int64_t* databuf)
-{
- std::vector<int32_t> shape = { (int32_t)elems };
- return writeToNpyFile(filename, shape, databuf);
-}
-
-NumpyUtilities::NPError
- NumpyUtilities::writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const int64_t* databuf)
-{
- const char dtype_str[] = "'<i8'";
- FILE* outfile = nullptr;
- NPError rc = NO_ERROR;
- uint32_t totalElems = 1;
-
- assert(filename);
- assert(shape.size() >= 0);
- assert(databuf);
-
- outfile = fopen(filename, "wb");
-
- if (!outfile)
- {
- rc = FILE_NOT_FOUND;
- goto done;
- }
-
- for (uint32_t i = 0; i < shape.size(); i++)
- {
- totalElems *= shape[i];
- }
-
- rc = writeNpyHeader(outfile, shape, dtype_str);
-
- if (fwrite(databuf, sizeof(int64_t), totalElems, outfile) != totalElems)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
-
-done:
-
- if (outfile)
- fclose(outfile);
-
- return rc;
-}
-
-NumpyUtilities::NPError NumpyUtilities::writeToNpyFile(const char* filename, const uint32_t elems, const float* databuf)
-{
- std::vector<int32_t> shape = { (int32_t)elems };
- return writeToNpyFile(filename, shape, databuf);
-}
-
-NumpyUtilities::NPError
- NumpyUtilities::writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const float* databuf)
-{
- const char dtype_str[] = "'<f4'";
- FILE* outfile = nullptr;
- NPError rc = NO_ERROR;
- uint32_t totalElems = 1;
-
- assert(filename);
- assert(shape.size() >= 0);
- assert(databuf);
-
- outfile = fopen(filename, "wb");
-
- if (!outfile)
- {
- rc = FILE_NOT_FOUND;
- goto done;
- }
-
- for (uint32_t i = 0; i < shape.size(); i++)
- {
- totalElems *= shape[i];
- }
-
- rc = writeNpyHeader(outfile, shape, dtype_str);
-
- if (fwrite(databuf, sizeof(float), totalElems, outfile) != totalElems)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
-
-done:
-
- if (outfile)
- fclose(outfile);
-
- return rc;
-}
-
-NumpyUtilities::NPError
- NumpyUtilities::writeNpyHeader(FILE* outfile, const std::vector<int32_t>& shape, const char* dtype_str)
-{
- NPError rc = NO_ERROR;
- uint32_t i;
- char header[NUMPY_HEADER_SZ + 1];
- int headerPos = 0;
-
- assert(outfile);
- assert(shape.size() >= 0);
-
- // Space-fill the header and end with a newline to start per numpy spec
- memset(header, 0x20, NUMPY_HEADER_SZ);
- header[NUMPY_HEADER_SZ - 1] = '\n';
- header[NUMPY_HEADER_SZ] = 0;
-
- // Write out the hard-coded header. We only support a 128-byte 1.0 header
- // for now, which should be sufficient for simple tensor types of any
- // reasonable rank.
- memcpy(header, NUMPY_HEADER_STR, sizeof(NUMPY_HEADER_STR) - 1);
- headerPos += sizeof(NUMPY_HEADER_STR) - 1;
-
- // Output the format dictionary
- // Hard-coded for I32 for now
- headerPos +=
- snprintf(header + headerPos, NUMPY_HEADER_SZ - headerPos, "'descr': %s, 'fortran_order': False, 'shape': (%d,",
- dtype_str, shape.size() > 0 ? shape[0] : 1);
-
- // Remainder of shape array
- for (i = 1; i < shape.size(); i++)
- {
- headerPos += snprintf(header + headerPos, NUMPY_HEADER_SZ - headerPos, " %d,", shape[i]);
- }
-
- // Close off the dictionary
- headerPos += snprintf(header + headerPos, NUMPY_HEADER_SZ - headerPos, "), }");
-
- // snprintf leaves a NULL at the end. Replace with a space
- header[headerPos] = 0x20;
-
- if (fwrite(header, NUMPY_HEADER_SZ, 1, outfile) != 1)
- {
- rc = FILE_IO_ERROR;
- goto done;
- }
-
-done:
-
- return rc;
-}
diff --git a/serialization/tosa_serialization_handler.h b/serialization/tosa_serialization_handler.h
deleted file mode 100644
index 124b8e0..0000000
--- a/serialization/tosa_serialization_handler.h
+++ /dev/null
@@ -1,423 +0,0 @@
-
-// Copyright (c) 2020, ARM Limited.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef _TOSA_SERIALIZATION_HANDLER_H
-#define _TOSA_SERIALIZATION_HANDLER_H
-#include "attribute.h"
-#include "flatbuffers/idl.h"
-#include "flatbuffers/util.h"
-#include "quant_info.h"
-#include "tosa_generated.h"
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <vector>
-
-namespace tosa
-{
-
-enum tosa_err_t
-{
- TOSA_OK,
- TOSA_USER_ERROR,
- TOSA_FILE_ERROR,
- TOSA_MEMORY_ERROR,
- TOSA_SCHEMA_MISSING,
- TOSA_INTERNAL_ERROR,
- TOSA_VERSION_MISMATCH,
- NUM_TOSA_ERROR
-};
-
-struct TosaVersion
-{
- int32_t _major;
- int32_t _minor;
- int32_t _patch;
- bool _experimental;
-
- TosaVersion() = delete;
- TosaVersion(int32_t major, int32_t minor, int32_t patch, bool experimental)
- {
- _major = major;
- _minor = minor;
- _patch = patch;
- _experimental = experimental;
- }
-
- std::string to_string() const
- {
- std::string str;
- str += std::to_string(_major) + ".";
- str += std::to_string(_minor) + ".";
- str += std::to_string(_patch);
- if (_experimental)
- str += "(experimental)";
- return str;
- };
-
- bool operator==(const TosaVersion& rhs)
- {
- if (rhs._major == _major && rhs._minor == _minor && rhs._patch == _patch && rhs._experimental == _experimental)
- {
- return true;
- }
- return false;
- }
-
- bool operator!=(const TosaVersion& rhs)
- {
- return !((*this) == rhs);
- }
-};
-
-class TosaSerializationHandler;
-
-class TosaSerializationTensor
-{
-public:
- // constructor and destructor
- TosaSerializationTensor(const flatbuffers::String* name,
- const flatbuffers::Vector<uint32_t>& usage,
- const flatbuffers::Vector<int32_t>& shape,
- DType dtype,
- const flatbuffers::Vector<uint32_t>& format,
- const flatbuffers::String* npy_filename);
- TosaSerializationTensor(std::string name,
- const std::vector<Usage>& usage,
- const std::vector<int32_t>& shape,
- DType dtype,
- const std::vector<Format>& format,
- const std::string* npy_filename);
- TosaSerializationTensor();
- ~TosaSerializationTensor();
-
- // copy constructor/assignment
- TosaSerializationTensor(const TosaSerializationTensor& rhs);
- TosaSerializationTensor& operator=(const TosaSerializationTensor& rhs);
-
- // move constructor/assignment
- TosaSerializationTensor(TosaSerializationTensor&& rhs);
- TosaSerializationTensor& operator=(TosaSerializationTensor&& rhs);
-
- // accessor
- std::string GetName() const
- {
- return *_name;
- }
- const std::vector<int32_t>& GetShape() const
- {
- return *_shape;
- }
- DType GetDtype()
- {
- return _dtype;
- }
- bool HasFormat(Format format)
- {
- for (Format us : *_format)
- {
- if (us == format)
- return true;
- }
- return false;
- }
- std::vector<Format>& GetFormat()
- {
- return *_format;
- }
- bool HasUsage(Usage usage)
- {
- for (Usage us : *_usage)
- {
- if (us == usage)
- return true;
- }
- return false;
- }
- std::vector<Usage>& GetUsage()
- {
- return *_usage;
- }
- std::string* GetNpyFilePtr() const
- {
- return _npy_filename;
- }
-
- // modifier
- void SetDtype(DType dtype)
- {
- _dtype = dtype;
- }
- void SetName(std::string name)
- {
- *_name = name;
- }
-
-private:
- DType _dtype; /* data type enumeration, see tosa_isa_generated.h */
- std::vector<Format>* _format; /* list of possible tensor format */
- std::vector<Usage>* _usage; /* list of possible tensor usage */
- std::vector<int32_t>* _shape; /* shape of the tensor */
- std::string* _name; /* name of the tensor, used for solving dependency */
- std::string* _npy_filename; /* numpy array filename if not null. so null is the distinguisher */
-};
-
-class TosaSerializationOperator
-{
-public:
- // use default copy, void constructor
- // constructor and destructor
- TosaSerializationOperator(Op op_name,
- Attribute attribute_type,
- const TosaAttributeBase* attribute,
- QuantInfo qinfo_type,
- const TosaQuantInfoBase* qinfo,
- std::vector<std::string> input_tensor_names,
- std::vector<std::string> output_tensor_names);
- ~TosaSerializationOperator();
-
- // accessor
- Op GetOp() const
- {
- return _op;
- }
- Attribute GetAttributeType() const
- {
- return _attribute_type;
- }
- TosaAttributeBase* GetAttribute() const
- {
- return _attribute;
- }
- QuantInfo GetQInfoType() const
- {
- return _qinfo_type;
- }
- TosaQuantInfoBase* GetQInfo() const
- {
- return _qinfo;
- }
- std::vector<std::string>& GetInputTensorNames() const
- {
- return *_input_tensor_names;
- }
- std::vector<std::string>& GetOutputTensorNames() const
- {
- return *_output_tensor_names;
- }
- std::vector<TosaSerializationTensor*>& GetInputTensors() const
- {
- return *_input_tensors;
- }
- std::vector<TosaSerializationTensor*>& GetOutputTensors() const
- {
- return *_output_tensors;
- }
-
-private:
- Op _op; /* operator enum, see tosa_isa_generated.h for enumeration table */
- Attribute _attribute_type; /* operator attribute enum, used for dynamic casting TosaAttributeBase class */
- TosaAttributeBase* _attribute; /* real attribute class goes here */
- QuantInfo _qinfo_type; /* QuantInfo enum */
- TosaQuantInfoBase* _qinfo; /* base class pointer of QuantInfo */
- std::vector<std::string>* _input_tensor_names; /* array of input tensor names */
- std::vector<std::string>* _output_tensor_names; /* array of output tensor names */
-
- std::vector<TosaSerializationTensor*>* _input_tensors; /* array of input TosaSerializationTensor */
- std::vector<TosaSerializationTensor*>* _output_tensors; /* array of output TosaSerializationTensor */
-};
-
-class TosaSerializationBasicBlock
-{
-public:
- // constructor and destructor
- TosaSerializationBasicBlock(std::string name,
- std::vector<TosaSerializationOperator*> operators,
- std::vector<TosaSerializationTensor*> tensors,
- std::vector<std::string> inputs,
- std::vector<std::string> outputs);
- ~TosaSerializationBasicBlock();
-
- // accessor
- std::string GetName() const
- {
- return *_name;
- }
- std::vector<TosaSerializationOperator*>& GetOperators()
- {
- return *_operators;
- }
- std::vector<TosaSerializationTensor*>& GetTensors()
- {
- return *_tensors;
- }
-
- TosaSerializationTensor* GetTensorByName(std::string name)
- {
- TosaSerializationTensor* result = nullptr;
- for (auto tensor : GetTensors())
- {
- if (tensor->GetName() == name)
- {
- result = tensor;
- break;
- }
- }
- return result;
- }
-
- std::vector<std::string>& GetInputs()
- {
- return *_inputs;
- }
- std::vector<std::string>& GetOutputs()
- {
- return *_outputs;
- }
-
-private:
- std::string* _name; /* name of basic block */
- std::vector<TosaSerializationOperator*>* _operators; /* TosaSerializationOperator list */
- std::vector<TosaSerializationTensor*>* _tensors; /* TosaSerializationTensor list */
- std::vector<std::string>* _inputs; /* array of string to specify block inputs */
- std::vector<std::string>* _outputs; /* array of string to specify block outputs */
-};
-
-/*
- * this is a helper class for writing/reading Tosa ISA
- * supported format: .tosa (flatbuffer), .json
- * and provide high-level std::vector-like interface
- * to access internal data structure
- */
-class TosaSerializationHandler
-{
-public:
- // constructor and destructor
- TosaSerializationHandler();
- ~TosaSerializationHandler();
-
- // file io
- tosa_err_t LoadFileJson(const char* filename);
- tosa_err_t LoadFileTosaFlatbuffer(const char* filename);
- tosa_err_t SaveFileJson(const char* filename);
- tosa_err_t SaveFileTosaFlatbuffer(const char* filename);
- tosa_err_t LoadFileSchema(const char* filename);
-
- // version
- TosaVersion* GetTosaVersion() const
- {
- return _version;
- }
-
- // accessor
- std::vector<TosaSerializationBasicBlock*>& GetBlocks()
- {
- return *_blocks;
- }
-
- TosaSerializationBasicBlock* GetBlockByName(std::string name)
- {
- TosaSerializationBasicBlock* result = nullptr;
- for (auto block : GetBlocks())
- {
- if (block->GetName() == name)
- {
- result = block;
- break;
- }
- }
- return result;
- }
- TosaSerializationBasicBlock* GetMainBlock()
- {
- TosaSerializationBasicBlock* main_block = GetBlockByName(std::string("main"));
- assert(main_block);
- return main_block;
- }
-
- std::vector<std::string>& GetInputs()
- {
- return GetMainBlock()->GetInputs();
- }
- std::vector<std::string>& GetOutputs()
- {
- return GetMainBlock()->GetOutputs();
- }
-
- bool GetSchemaLoaded() const
- {
- return _schemaLoaded;
- }
-
-protected:
- tosa_err_t Clear();
- tosa_err_t InitWithBuf(const uint8_t* buf);
- tosa_err_t FreezeBuilder();
- tosa_err_t SetTosaVersion();
- tosa_err_t CheckTosaVersion(const TosaVersion& read_version);
-
-private:
- TosaVersion* _version; /* tosa version */
- flatbuffers::FlatBufferBuilder* _builder; /* flatbuffer builder */
- flatbuffers::Parser* _parser; /* flatbuffer parser, used for json parsing */
- std::vector<TosaSerializationBasicBlock*>* _blocks; /* array structure to store all TosaSerializationBasicBlock */
- bool _schemaLoaded; /* is the schema properly loaded? */
-};
-
-class NumpyUtilities
-{
-public:
- enum NPError
- {
- NO_ERROR = 0,
- FILE_NOT_FOUND,
- FILE_IO_ERROR,
- FILE_TYPE_MISMATCH,
- HEADER_PARSE_ERROR,
- BUFFER_SIZE_MISMATCH,
- };
-
- static NPError readFromNpyFile(const char* filename, const uint32_t elems, float* buf);
-
- static NPError readFromNpyFile(const char* filename, const uint32_t elems, int32_t* buf);
-
- static NPError readFromNpyFile(const char* filename, const uint32_t elems, int64_t* buf);
-
- static NPError readFromNpyFile(const char* filename, const uint32_t elems, bool* buf);
-
- static NPError writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const bool* buf);
-
- static NPError writeToNpyFile(const char* filename, const uint32_t elems, const bool* buf);
-
- static NPError writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const int32_t* buf);
-
- static NPError writeToNpyFile(const char* filename, const uint32_t elems, const int32_t* buf);
-
- static NPError writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const int64_t* buf);
-
- static NPError writeToNpyFile(const char* filename, const uint32_t elems, const int64_t* buf);
-
- static NPError writeToNpyFile(const char* filename, const std::vector<int32_t>& shape, const float* buf);
-
- static NPError writeToNpyFile(const char* filename, const uint32_t elems, const float* buf);
-
-private:
- static NPError checkNpyHeader(FILE* infile, const uint32_t elems, const char* dtype_str);
- static NPError writeNpyHeader(FILE* infile, const std::vector<int32_t>& shape, const char* dtype_str);
-};
-
-} // namespace tosa
-
-#endif // _TOSA_SERIALIZATION_HANDLER_H