blob: 7cec70b022bc0bff66079ca0a4170293292acc12 [file] [log] [blame]
Sadik Armagan3c24f432020-10-19 17:35:30 +01001//
2// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Sadik Armagan3c24f432020-10-19 17:35:30 +01006#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
Sadik Armagan3c24f432020-10-19 17:35:30 +01007#include <doctest/doctest.h>
8
Sadik Armagan62483be2020-10-23 17:14:43 +01009#include <armnn_delegate.hpp>
Sadik Armagan67e95f22020-10-29 16:14:54 +000010#include "ElementwiseUnaryTestHelper.hpp"
Sadik Armagan62483be2020-10-23 17:14:43 +010011
Sadik Armagan3c24f432020-10-19 17:35:30 +010012#include "tensorflow/lite/kernels/builtin_op_kernels.h"
13#include <tensorflow/lite/interpreter.h>
14
Sadik Armagan62483be2020-10-23 17:14:43 +010015namespace armnnDelegate
Sadik Armagan3c24f432020-10-19 17:35:30 +010016{
17
Sadik Armagan3c24f432020-10-19 17:35:30 +010018TEST_SUITE("ArmnnDelegate")
19{
20
21TEST_CASE ("ArmnnDelegate Registered")
22{
Sadik Armagan67e95f22020-10-29 16:14:54 +000023 using namespace tflite;
24 auto tfLiteInterpreter = std::make_unique<Interpreter>();
Sadik Armagan3c24f432020-10-19 17:35:30 +010025
Sadik Armagan3c24f432020-10-19 17:35:30 +010026 tfLiteInterpreter->AddTensors(3);
Sadik Armagan67e95f22020-10-29 16:14:54 +000027 tfLiteInterpreter->SetInputs({0, 1});
Sadik Armagan3c24f432020-10-19 17:35:30 +010028 tfLiteInterpreter->SetOutputs({2});
29
Sadik Armagan67e95f22020-10-29 16:14:54 +000030 tfLiteInterpreter->SetTensorParametersReadWrite(0, kTfLiteFloat32, "input1", {1,2,2,1}, TfLiteQuantization());
31 tfLiteInterpreter->SetTensorParametersReadWrite(1, kTfLiteFloat32, "input2", {1,2,2,1}, TfLiteQuantization());
32 tfLiteInterpreter->SetTensorParametersReadWrite(2, kTfLiteFloat32, "output", {1,2,2,1}, TfLiteQuantization());
Sadik Armagan3c24f432020-10-19 17:35:30 +010033
Sadik Armagan67e95f22020-10-29 16:14:54 +000034 tflite::ops::builtin::BuiltinOpResolver opResolver;
35 const TfLiteRegistration* opRegister = opResolver.FindOp(BuiltinOperator_ADD, 1);
36 tfLiteInterpreter->AddNodeWithParameters({0, 1}, {2}, "", 0, nullptr, opRegister);
Sadik Armagan3c24f432020-10-19 17:35:30 +010037
38 // create the Armnn Delegate
Sadik Armagan67e95f22020-10-29 16:14:54 +000039 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
40 armnnDelegate::DelegateOptions delegateOptions(backends);
41 std::unique_ptr<TfLiteDelegate, decltype(&armnnDelegate::TfLiteArmnnDelegateDelete)>
42 theArmnnDelegate(armnnDelegate::TfLiteArmnnDelegateCreate(delegateOptions),
43 armnnDelegate::TfLiteArmnnDelegateDelete);
44
45 auto status = tfLiteInterpreter->ModifyGraphWithDelegate(std::move(theArmnnDelegate));
Sadik Armagan3c24f432020-10-19 17:35:30 +010046 CHECK(status == kTfLiteOk);
47 CHECK(tfLiteInterpreter != nullptr);
Sadik Armagan3c24f432020-10-19 17:35:30 +010048}
49
50}
51
Sadik Armagan62483be2020-10-23 17:14:43 +010052} // namespace armnnDelegate