From 64285a1f25e2c7b85ed1f00b7947403e92baea00 Mon Sep 17 00:00:00 2001 From: Grant Watson Date: Wed, 16 Nov 2022 15:32:39 +0000 Subject: Extend reference model API with eager operator execution entrypoints - Adds a script to generate operators.h and operators.cc - Adds jinja2 templates for generating operators.h and operators.cc - Adds unit tests for a subset of the operators generated - Includes the TOSA specification as a submodule - Adds supporting C++ and header files Signed-off-by: Grant Watson Change-Id: I5b60db4c56113110d8e75fe1152525d258233f9c --- scripts/operator_api/templates/operators_h.j2 | 74 +++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 scripts/operator_api/templates/operators_h.j2 (limited to 'scripts/operator_api/templates/operators_h.j2') diff --git a/scripts/operator_api/templates/operators_h.j2 b/scripts/operator_api/templates/operators_h.j2 new file mode 100644 index 0000000..803b76a --- /dev/null +++ b/scripts/operator_api/templates/operators_h.j2 @@ -0,0 +1,74 @@ + +// 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 +#include + +#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 + { + {% for dataType in dataTypes: -%} + {{dataType}} = {{loop.index-1}}, + {% endfor -%} + }; + + struct tosa_tensor_t + { + int32_t* shape; + int32_t num_dims; + tosa_datatype_t data_type; + uint8_t* data; + size_t size; + }; + + {% for operator in operators: %} + tosa_status_t tosa_run_{{ operator.name }} ( + {%- for arg in operator.arguments: -%} + {% if arg.type != "tosa_tensor_t" -%}const {% endif -%}{{arg.type}} client_{{arg.name}}{{arg.shape}} + {% if loop.index < operator.arguments|length %},{% endif %} + {%- endfor -%}); + {% endfor %} + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif // OPERATORS_H_ \ No newline at end of file -- cgit v1.2.1