blob: 4caba84494003e5f8b63c8618228a196fcd9b97c [file] [log] [blame]
Kevin May8ab2d7a2021-05-07 09:32:51 +01001//
Teresa Charlinad1b3d72023-03-14 12:10:28 +00002// Copyright © 2021,2023 Arm Ltd and Contributors. All rights reserved.
Kevin May8ab2d7a2021-05-07 09:32:51 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "UnpackTestHelper.hpp"
7
8#include <armnn_delegate.hpp>
9
10#include <flatbuffers/flatbuffers.h>
Kevin May8ab2d7a2021-05-07 09:32:51 +010011
12#include <doctest/doctest.h>
13
14namespace armnnDelegate
15{
16
17template <typename T>
18void UnpackAxis0Num4Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
19{
20 std::vector<int32_t> inputShape { 4, 1, 6 };
21 std::vector<int32_t> expectedOutputShape { 1, 6 };
22
23 std::vector<T> inputValues { 1, 2, 3, 4, 5, 6,
24 7, 8, 9, 10, 11, 12,
25 13, 14, 15, 16, 17, 18,
26 19, 20, 21, 22, 23, 24 };
27
28 std::vector<T> expectedOutputValues0 { 1, 2, 3, 4, 5, 6 };
29 std::vector<T> expectedOutputValues1 { 7, 8, 9, 10, 11, 12 };
30 std::vector<T> expectedOutputValues2 { 13, 14, 15, 16, 17, 18 };
31 std::vector<T> expectedOutputValues3 { 19, 20, 21, 22, 23, 24 };
32
33 std::vector<std::vector<T>> expectedOutputValues{ expectedOutputValues0,
34 expectedOutputValues1,
35 expectedOutputValues2,
36 expectedOutputValues3 };
37
38 UnpackTest<T>(tflite::BuiltinOperator_UNPACK,
39 tensorType,
40 backends,
41 inputShape,
42 expectedOutputShape,
43 inputValues,
44 expectedOutputValues,
45 0);
46}
47
48template <typename T>
49void UnpackAxis2Num6Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
50{
51 std::vector<int32_t> inputShape { 4, 1, 6 };
52 std::vector<int32_t> expectedOutputShape { 4, 1 };
53
54 std::vector<T> inputValues { 1, 2, 3, 4, 5, 6,
55 7, 8, 9, 10, 11, 12,
56 13, 14, 15, 16, 17, 18,
57 19, 20, 21, 22, 23, 24 };
58
59 std::vector<T> expectedOutputValues0 { 1, 7, 13, 19 };
60 std::vector<T> expectedOutputValues1 { 2, 8, 14, 20 };
61 std::vector<T> expectedOutputValues2 { 3, 9, 15, 21 };
62 std::vector<T> expectedOutputValues3 { 4, 10, 16, 22 };
63 std::vector<T> expectedOutputValues4 { 5, 11, 17, 23 };
64 std::vector<T> expectedOutputValues5 { 6, 12, 18, 24 };
65
66 std::vector<std::vector<T>> expectedOutputValues{ expectedOutputValues0,
67 expectedOutputValues1,
68 expectedOutputValues2,
69 expectedOutputValues3,
70 expectedOutputValues4,
71 expectedOutputValues5 };
72
73 UnpackTest<T>(tflite::BuiltinOperator_UNPACK,
74 tensorType,
75 backends,
76 inputShape,
77 expectedOutputShape,
78 inputValues,
79 expectedOutputValues,
80 2);
81}
82
83TEST_SUITE("Unpack_CpuRefTests")
84{
85
86// Fp32
87TEST_CASE ("Unpack_Fp32_Axis0_Num4_CpuRef_Test")
88{
89std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
90UnpackAxis0Num4Test<float>(tflite::TensorType_FLOAT32, backends);
91}
92
93TEST_CASE ("Unpack_Fp32_Axis2_Num6_CpuRef_Test")
94{
95std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
96UnpackAxis2Num6Test<float>(tflite::TensorType_FLOAT32, backends);
97}
98
99// Uint8
100TEST_CASE ("Unpack_Uint8_Axis0_Num4_CpuRef_Test")
101{
102std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
103UnpackAxis0Num4Test<uint8_t>(tflite::TensorType_UINT8, backends);
104}
105
106TEST_CASE ("Unpack_Uint8_Axis2_Num6_CpuRef_Test")
107{
108std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
109UnpackAxis2Num6Test<uint8_t>(tflite::TensorType_UINT8, backends);
110}
111
112} // End of Unpack_CpuRefTests
113
114TEST_SUITE("Unpack_CpuAccTests")
115{
116
117// Fp32
118TEST_CASE ("Unpack_Fp32_Axis0_Num4_CpuAcc_Test")
119{
120std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
121UnpackAxis0Num4Test<float>(tflite::TensorType_FLOAT32, backends);
122}
123
Kevin May4cad8602021-05-18 09:57:43 +0100124TEST_CASE ("Unpack_Fp32_Axis2_Num6_CpuAcc_Test")
125{
126std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
127UnpackAxis2Num6Test<float>(tflite::TensorType_FLOAT32, backends);
128}
129
Kevin May8ab2d7a2021-05-07 09:32:51 +0100130// Uint8
131TEST_CASE ("Unpack_Uint8_Axis0_Num4_CpuAcc_Test")
132{
133std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
134UnpackAxis0Num4Test<uint8_t>(tflite::TensorType_UINT8, backends);
135}
136
Kevin May4cad8602021-05-18 09:57:43 +0100137TEST_CASE ("Unpack_Uint8_Axis2_Num6_CpuAcc_Test")
138{
139std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
140UnpackAxis2Num6Test<uint8_t>(tflite::TensorType_UINT8, backends);
141}
142
Kevin May8ab2d7a2021-05-07 09:32:51 +0100143} // End of Unpack_CpuAccTests
144
145TEST_SUITE("Unpack_GpuAccTests")
146{
147
148// Fp32
149TEST_CASE ("Unpack_Fp32_Axis0_Num4_GpuAcc_Test")
150{
151std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
152UnpackAxis0Num4Test<float>(tflite::TensorType_FLOAT32, backends);
153}
154
Kevin May4cad8602021-05-18 09:57:43 +0100155TEST_CASE ("Unpack_Fp32_Axis2_Num6_GpuAcc_Test")
156{
157std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
158UnpackAxis2Num6Test<float>(tflite::TensorType_FLOAT32, backends);
159}
160
Kevin May8ab2d7a2021-05-07 09:32:51 +0100161// Uint8
162TEST_CASE ("Unpack_Uint8_Axis0_Num4_GpuAcc_Test")
163{
164std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
165UnpackAxis0Num4Test<uint8_t>(tflite::TensorType_UINT8, backends);
166}
167
Kevin May4cad8602021-05-18 09:57:43 +0100168TEST_CASE ("Unpack_Uint8_Axis2_Num6_GpuAcc_Test")
169{
170std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
171UnpackAxis2Num6Test<uint8_t>(tflite::TensorType_UINT8, backends);
172}
173
Kevin May8ab2d7a2021-05-07 09:32:51 +0100174} // End of Unpack_GpuAccTests
175
176// End of Unpack Test Suite
177
178} // namespace armnnDelegate