STT-tensorflow/tensorflow/lite/micro/all_ops_resolver.cc
M\u00e5ns Nilsson 27b95fad0a PR : TFLu: Add ethos-u55 kernel
Imported from GitHub PR https://github.com/tensorflow/tensorflow/pull/38345

The PR adds the Ethos-U55 TFLu integration code, including a README with initial instructions. This enables a user to use Ethos-U55 in combination with TFLu.
Copybara import of the project:

--
f5db4532b476aa84bf9918c2daa9c4cf79b4cc1b by Måns Nilsson <mans.nilsson@arm.com>:

TFLu: Add ethos-u55 kernel

Change-Id: Id533c4de26671836307d0a61ccc88a0f7060b2d2

--
566100491a3b8395d9f20ccd146bb82059fe2562 by Måns Nilsson <mans.nilsson@arm.com>:

TFLu: Add comment and remove macro for Ethos-U

--
4bbc515e7cd9e9e709e977b22af3a742e474e997 by Måns Nilsson <mans.nilsson@arm.com>:

TFLu: update bazel build with ethosu

--
78ef0e4b5cdeab8d00f641596402a9678d7824c1 by Måns Nilsson <mans.nilsson@arm.com>:

TFLu: rename ethos-u make variables

--
e4b19550589e9458c9ba2d0e6ad2650f34b913e3 by Måns Nilsson <mans.nilsson@arm.com>:

TFLu: update third party downloads with official ethos-u link

Update README.md as well with the new builds instructions.

--
7193ecaf505239876f70c3649fa68e3565e116c1 by Måns Nilsson <mans.nilsson@arm.com>:

TFLu: Change to TF_LITE_KERNEL_LOG macro in ethos-u op
COPYBARA_INTEGRATE_REVIEW=https://github.com/tensorflow/tensorflow/pull/38345 from mansnils:ethosu 7193ecaf505239876f70c3649fa68e3565e116c1
PiperOrigin-RevId: 314972481
Change-Id: Ifcbe4bc5148bc5b20313d2d030358a38b2a8fb03
2020-06-05 12:21:45 -07:00

105 lines
5.5 KiB
C++

/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
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 "tensorflow/lite/micro/all_ops_resolver.h"
#include "tensorflow/lite/micro/kernels/micro_ops.h"
namespace tflite {
namespace ops {
namespace micro {
namespace custom {
TfLiteRegistration* Register_ETHOSU();
const char* GetString_ETHOSU();
} // namespace custom
} // namespace micro
} // namespace ops
AllOpsResolver::AllOpsResolver() {
// Please keep this list of Builtin Operators in alphabetical order.
AddBuiltin(BuiltinOperator_ABS, tflite::ops::micro::Register_ABS());
AddBuiltin(BuiltinOperator_ADD, tflite::ops::micro::Register_ADD());
AddBuiltin(BuiltinOperator_ARG_MAX, tflite::ops::micro::Register_ARG_MAX());
AddBuiltin(BuiltinOperator_ARG_MIN, tflite::ops::micro::Register_ARG_MIN());
AddBuiltin(BuiltinOperator_AVERAGE_POOL_2D,
tflite::ops::micro::Register_AVERAGE_POOL_2D());
AddBuiltin(BuiltinOperator_CEIL, tflite::ops::micro::Register_CEIL());
AddBuiltin(BuiltinOperator_CONCATENATION,
tflite::ops::micro::Register_CONCATENATION());
AddBuiltin(BuiltinOperator_CONV_2D, tflite::ops::micro::Register_CONV_2D());
AddBuiltin(BuiltinOperator_COS, tflite::ops::micro::Register_COS());
AddBuiltin(BuiltinOperator_DEPTHWISE_CONV_2D,
tflite::ops::micro::Register_DEPTHWISE_CONV_2D());
AddBuiltin(BuiltinOperator_DEQUANTIZE,
tflite::ops::micro::Register_DEQUANTIZE());
AddBuiltin(BuiltinOperator_EQUAL, tflite::ops::micro::Register_EQUAL());
AddBuiltin(BuiltinOperator_FLOOR, tflite::ops::micro::Register_FLOOR());
AddBuiltin(BuiltinOperator_FULLY_CONNECTED,
tflite::ops::micro::Register_FULLY_CONNECTED());
AddBuiltin(BuiltinOperator_GREATER, tflite::ops::micro::Register_GREATER());
AddBuiltin(BuiltinOperator_GREATER_EQUAL,
tflite::ops::micro::Register_GREATER_EQUAL());
AddBuiltin(BuiltinOperator_L2_NORMALIZATION,
tflite::ops::micro::Register_L2_NORMALIZATION());
AddBuiltin(BuiltinOperator_LESS, tflite::ops::micro::Register_LESS());
AddBuiltin(BuiltinOperator_LESS_EQUAL,
tflite::ops::micro::Register_LESS_EQUAL());
AddBuiltin(BuiltinOperator_LOG, tflite::ops::micro::Register_LOG());
AddBuiltin(BuiltinOperator_LOGICAL_AND,
tflite::ops::micro::Register_LOGICAL_AND());
AddBuiltin(BuiltinOperator_LOGICAL_NOT,
tflite::ops::micro::Register_LOGICAL_NOT());
AddBuiltin(BuiltinOperator_LOGICAL_OR,
tflite::ops::micro::Register_LOGICAL_OR());
AddBuiltin(BuiltinOperator_LOGISTIC, tflite::ops::micro::Register_LOGISTIC());
AddBuiltin(BuiltinOperator_MAX_POOL_2D,
tflite::ops::micro::Register_MAX_POOL_2D());
AddBuiltin(BuiltinOperator_MAXIMUM, tflite::ops::micro::Register_MAXIMUM());
AddBuiltin(BuiltinOperator_MEAN, tflite::ops::micro::Register_MEAN());
AddBuiltin(BuiltinOperator_MINIMUM, tflite::ops::micro::Register_MINIMUM());
AddBuiltin(BuiltinOperator_MUL, tflite::ops::micro::Register_MUL());
AddBuiltin(BuiltinOperator_NEG, tflite::ops::micro::Register_NEG());
AddBuiltin(BuiltinOperator_NOT_EQUAL,
tflite::ops::micro::Register_NOT_EQUAL());
AddBuiltin(BuiltinOperator_PACK, tflite::ops::micro::Register_PACK());
AddBuiltin(BuiltinOperator_PAD, tflite::ops::micro::Register_PAD());
AddBuiltin(BuiltinOperator_PADV2, tflite::ops::micro::Register_PADV2());
AddBuiltin(BuiltinOperator_PRELU, tflite::ops::micro::Register_PRELU());
AddBuiltin(BuiltinOperator_QUANTIZE, tflite::ops::micro::Register_QUANTIZE());
AddBuiltin(BuiltinOperator_RELU, tflite::ops::micro::Register_RELU());
AddBuiltin(BuiltinOperator_RELU6, tflite::ops::micro::Register_RELU6());
AddBuiltin(BuiltinOperator_RESHAPE, tflite::ops::micro::Register_RESHAPE());
AddBuiltin(BuiltinOperator_RESIZE_NEAREST_NEIGHBOR,
tflite::ops::micro::Register_RESIZE_NEAREST_NEIGHBOR());
AddBuiltin(BuiltinOperator_ROUND, tflite::ops::micro::Register_ROUND());
AddBuiltin(BuiltinOperator_RSQRT, tflite::ops::micro::Register_RSQRT());
AddBuiltin(BuiltinOperator_SIN, tflite::ops::micro::Register_SIN());
AddBuiltin(BuiltinOperator_SOFTMAX, tflite::ops::micro::Register_SOFTMAX());
AddBuiltin(BuiltinOperator_SPLIT, tflite::ops::micro::Register_SPLIT());
AddBuiltin(BuiltinOperator_SQRT, tflite::ops::micro::Register_SQRT());
AddBuiltin(BuiltinOperator_SQUARE, tflite::ops::micro::Register_SQUARE());
AddBuiltin(BuiltinOperator_STRIDED_SLICE,
tflite::ops::micro::Register_STRIDED_SLICE());
AddBuiltin(BuiltinOperator_SUB, tflite::ops::micro::Register_SUB());
AddBuiltin(BuiltinOperator_SVDF, tflite::ops::micro::Register_SVDF());
AddBuiltin(BuiltinOperator_TANH, tflite::ops::micro::Register_TANH());
AddBuiltin(BuiltinOperator_UNPACK, tflite::ops::micro::Register_UNPACK());
TfLiteRegistration* registration =
tflite::ops::micro::custom::Register_ETHOSU();
if (registration) {
AddCustom(tflite::ops::micro::custom::GetString_ETHOSU(), registration);
}
}
} // namespace tflite