blob: aa1f3355ab7ce43937f63cf3c681e303c974deaa [file] [log] [blame]
Francis Murtaghc4fb0dd2023-03-16 17:01:56 +00001//
2// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
Ryan OShea59f8f652023-05-11 20:37:53 +01005
6#include <armnn_delegate.hpp>
7
8namespace {
9
10 TfLiteOpaqueDelegate* ArmNNDelegateCreateFunc(const void* tflite_settings)
11 {
Teresa Charlin3e4b6082023-10-19 19:13:29 +010012 armnnDelegate::DelegateOptions opt = armnnOpaqueDelegate::ParseArmNNSettings(
13 static_cast<const tflite::TFLiteSettings*>(tflite_settings));
14
15 auto delegate = armnnOpaqueDelegate::TfLiteArmnnOpaqueDelegateCreate(opt);
Ryan OShea59f8f652023-05-11 20:37:53 +010016 return delegate;
17 }
18
19 void ArmNNDelegateDestroyFunc(TfLiteOpaqueDelegate* armnnDelegate)
20 {
21 armnnOpaqueDelegate::TfLiteArmnnOpaqueDelegateDelete(
22 armnnDelegate);
23 }
24
25 int ArmNNDelegateErrnoFunc(TfLiteOpaqueDelegate* sample_stable_delegate)
26 {
27 return 0;
28 }
29
30 const TfLiteOpaqueDelegatePlugin armnn_delegate_plugin = {
31 ArmNNDelegateCreateFunc, ArmNNDelegateDestroyFunc,
32 ArmNNDelegateErrnoFunc};
33
34 const TfLiteStableDelegate armnn_delegate = {
35 /*delegate_abi_version=*/ TFL_STABLE_DELEGATE_ABI_VERSION,
36 /*delegate_name=*/ "armnn_delegate",
37 /*delegate_version=*/ OPAQUE_DELEGATE_VERSION,
38 /*delegate_plugin=*/ &armnn_delegate_plugin
39 };
40
41} // namespace
42
43/**
44 * The ArmNN delegate to be loaded dynamically
45 */
46extern "C" const TfLiteStableDelegate TFL_TheStableDelegate = armnn_delegate;