aboutsummaryrefslogtreecommitdiff
path: root/reference_model/include/operators.h
diff options
context:
space:
mode:
Diffstat (limited to 'reference_model/include/operators.h')
-rw-r--r--reference_model/include/operators.h337
1 files changed, 337 insertions, 0 deletions
diff --git a/reference_model/include/operators.h b/reference_model/include/operators.h
new file mode 100644
index 0000000..6e21e95
--- /dev/null
+++ b/reference_model/include/operators.h
@@ -0,0 +1,337 @@
+
+// Copyright (c) 2022, 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.
+
+// THIS FILE IS GENERATED. DO NOT EDIT!
+// See scripts/operator_api/generate_api.py
+
+#ifndef OPERATORS_H_
+#define OPERATORS_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+ // Note status needs to be aligned with graph_status
+ enum tosa_status_t
+ {
+ tosa_status_valid = 0,
+ tosa_status_unpredictable = 1,
+ tosa_status_error = 2
+ };
+
+ enum tosa_mode_t
+ {
+ tosa_mode_unknown = 0,
+ tosa_mode_nearest = 1,
+ tosa_mode_bilinear = 2,
+ tosa_mode_min = 3,
+ tosa_mode_max = 4
+ };
+
+ enum tosa_datatype_t
+ {
+ tosa_datatype_bf16_t = 0,
+ tosa_datatype_bool_t = 1,
+ tosa_datatype_fp16_t = 2,
+ tosa_datatype_fp32_t = 3,
+ tosa_datatype_int16_t = 4,
+ tosa_datatype_int32_t = 5,
+ tosa_datatype_int48_t = 6,
+ tosa_datatype_int4_t = 7,
+ tosa_datatype_int8_t = 8,
+ tosa_datatype_uint16_t = 9,
+ tosa_datatype_uint8_t = 10,
+ };
+
+ struct tosa_tensor_t
+ {
+ int32_t* shape;
+ int32_t num_dims;
+ tosa_datatype_t data_type;
+ uint8_t* data;
+ size_t size;
+ };
+
+ tosa_status_t tosa_run_argmax(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_avg_pool2d(tosa_tensor_t client_input,
+ const int32_t client_kernel[2],
+ const int32_t client_stride[2],
+ const int32_t client_pad[4],
+ const int32_t client_input_zp,
+ const int32_t client_output_zp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_conv2d(tosa_tensor_t client_input,
+ tosa_tensor_t client_weight,
+ tosa_tensor_t client_bias,
+ const int32_t client_pad[4],
+ const int32_t client_stride[2],
+ const int32_t client_dilation[2],
+ const int32_t client_input_zp,
+ const int32_t client_weight_zp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_conv3d(tosa_tensor_t client_input,
+ tosa_tensor_t client_weight,
+ tosa_tensor_t client_bias,
+ const int32_t client_pad[6],
+ const int32_t client_stride[3],
+ const int32_t client_dilation[3],
+ const int32_t client_input_zp,
+ const int32_t client_weight_zp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_depthwise_conv2d(tosa_tensor_t client_input,
+ tosa_tensor_t client_weight,
+ tosa_tensor_t client_bias,
+ const int32_t client_pad[4],
+ const int32_t client_stride[2],
+ const int32_t client_dilation[2],
+ const int32_t client_input_zp,
+ const int32_t client_weight_zp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_fully_connected(tosa_tensor_t client_input,
+ const int32_t client_input_zp,
+ const int32_t client_weight_zp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_matmul(tosa_tensor_t client_a,
+ tosa_tensor_t client_b,
+ const int32_t client_a_zp,
+ const int32_t client_b_zp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_max_pool2d(tosa_tensor_t client_input,
+ const int32_t client_kernel[2],
+ const int32_t client_stride[2],
+ const int32_t client_pad[4],
+ const int32_t client_input_zp,
+ const int32_t client_output_zp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_transpose_conv2d(tosa_tensor_t client_input,
+ tosa_tensor_t client_weight,
+ tosa_tensor_t client_bias,
+ const int32_t client_out_pad[4],
+ const int32_t client_stride[2],
+ const int32_t client_out_shape[4],
+ const int32_t client_input_zp,
+ const int32_t client_weight_zp,
+ const int32_t client_pad_len,
+ const int32_t client_pad[],
+ const int32_t client_dilation_len,
+ const int32_t client_dilation[],
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_clamp(tosa_tensor_t client_input,
+ const int32_t client_min_int,
+ const int32_t client_max_int,
+ const float client_min_fp,
+ const float client_max_fp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_sigmoid(tosa_tensor_t client_input, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_tanh(tosa_tensor_t client_input, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_add(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_arithmetic_right_shift(tosa_tensor_t client_input1,
+ tosa_tensor_t client_input2,
+ const bool client_round,
+ tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_bitwise_and(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_bitwise_or(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_bitwise_xor(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_intdiv(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_logical_and(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_logical_left_shift(tosa_tensor_t client_input1,
+ tosa_tensor_t client_input2,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_logical_right_shift(tosa_tensor_t client_input1,
+ tosa_tensor_t client_input2,
+ tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_logical_or(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_logical_xor(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_maximum(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_minimum(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_mul(tosa_tensor_t client_input1,
+ tosa_tensor_t client_input2,
+ const uint8_t client_shift,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_pow(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_sub(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_table(tosa_tensor_t client_input,
+ const int32_t client_table_len,
+ const int16_t client_table[],
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_abs(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_bitwise_not(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_ceil(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_clz(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_exp(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_floor(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_log(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_logical_not(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_negate(tosa_tensor_t client_input1,
+ const int32_t client_input1_zp,
+ const int32_t client_output_zp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_reciprocal(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_rsqrt(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_select(tosa_tensor_t client_input1,
+ tosa_tensor_t client_input2,
+ tosa_tensor_t client_input3,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_equal(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_greater(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_greater_equal(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_reduce_all(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_reduce_any(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_reduce_max(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_reduce_min(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_reduce_product(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_reduce_sum(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_concat(tosa_tensor_t client_input1, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_pad(tosa_tensor_t client_input1,
+ const int32_t client_padding_len,
+ const int32_t client_padding[],
+ const int32_t client_pad_const_int,
+ const float client_pad_const_fp,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_reshape(tosa_tensor_t client_input1,
+ const int32_t client_new_shape_len,
+ const int32_t client_new_shape[],
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_reverse(tosa_tensor_t client_input, const int32_t client_axis, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_slice(tosa_tensor_t client_input1,
+ const int32_t client_start_len,
+ const int32_t client_start[],
+ const int32_t client_size_len,
+ const int32_t client_size[],
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_tile(tosa_tensor_t client_input1,
+ const int32_t client_multiplies_len,
+ const int32_t client_multiplies[],
+ const int32_t client_multiples_len,
+ const int32_t client_multiples[],
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_transpose(tosa_tensor_t client_input1,
+ const int32_t client_perms_len,
+ const int32_t client_perms[],
+ tosa_tensor_t client_output);
+
+ tosa_status_t
+ tosa_run_gather(tosa_tensor_t client_values, tosa_tensor_t client_indices, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_scatter(tosa_tensor_t client_values_in,
+ tosa_tensor_t client_indices,
+ tosa_tensor_t client_input,
+ tosa_tensor_t client_values_out);
+
+ tosa_status_t tosa_run_resize(tosa_tensor_t client_input,
+ const int16_t client_scale[4],
+ const int16_t client_offset[2],
+ const int16_t client_border[2],
+ const tosa_mode_t client_mode,
+ tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_cast(tosa_tensor_t client_input, tosa_tensor_t client_output);
+
+ tosa_status_t tosa_run_rescale(tosa_tensor_t client_input,
+ tosa_tensor_t client_output,
+ const int32_t client_input_zp,
+ const int32_t client_output_zp,
+ const int32_t client_multiplier_len,
+ const int32_t client_multiplier[],
+ const int32_t client_shift_len,
+ const uint8_t client_shift[],
+ const bool client_scale32,
+ const bool client_double_round,
+ const bool client_per_channel);
+
+ tosa_status_t tosa_run_identity(tosa_tensor_t client_input1, tosa_tensor_t client_output);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif // OPERATORS_H_ \ No newline at end of file