blob: 7c4b12a6b89373fc2919003662ba3a95578ce6e4 [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>
Teresa Charlinad1b3d72023-03-14 12:10:28 +000011#include <schema_generated.h>
Kevin May8ab2d7a2021-05-07 09:32:51 +010012
13#include <doctest/doctest.h>
14
15namespace armnnDelegate
16{
17
18template <typename T>
19void UnpackAxis0Num4Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
20{
21 std::vector<int32_t> inputShape { 4, 1, 6 };
22 std::vector<int32_t> expectedOutputShape { 1, 6 };
23
24 std::vector<T> inputValues { 1, 2, 3, 4, 5, 6,
25 7, 8, 9, 10, 11, 12,
26 13, 14, 15, 16, 17, 18,
27 19, 20, 21, 22, 23, 24 };
28
29 std::vector<T> expectedOutputValues0 { 1, 2, 3, 4, 5, 6 };
30 std::vector<T> expectedOutputValues1 { 7, 8, 9, 10, 11, 12 };
31 std::vector<T> expectedOutputValues2 { 13, 14, 15, 16, 17, 18 };
32 std::vector<T> expectedOutputValues3 { 19, 20, 21, 22, 23, 24 };
33
34 std::vector<std::vector<T>> expectedOutputValues{ expectedOutputValues0,
35 expectedOutputValues1,
36 expectedOutputValues2,
37 expectedOutputValues3 };
38
39 UnpackTest<T>(tflite::BuiltinOperator_UNPACK,
40 tensorType,
41 backends,
42 inputShape,
43 expectedOutputShape,
44 inputValues,
45 expectedOutputValues,
46 0);
47}
48
49template <typename T>
50void UnpackAxis2Num6Test(tflite::TensorType tensorType, std::vector<armnn::BackendId>& backends)
51{
52 std::vector<int32_t> inputShape { 4, 1, 6 };
53 std::vector<int32_t> expectedOutputShape { 4, 1 };
54
55 std::vector<T> inputValues { 1, 2, 3, 4, 5, 6,
56 7, 8, 9, 10, 11, 12,
57 13, 14, 15, 16, 17, 18,
58 19, 20, 21, 22, 23, 24 };
59
60 std::vector<T> expectedOutputValues0 { 1, 7, 13, 19 };
61 std::vector<T> expectedOutputValues1 { 2, 8, 14, 20 };
62 std::vector<T> expectedOutputValues2 { 3, 9, 15, 21 };
63 std::vector<T> expectedOutputValues3 { 4, 10, 16, 22 };
64 std::vector<T> expectedOutputValues4 { 5, 11, 17, 23 };
65 std::vector<T> expectedOutputValues5 { 6, 12, 18, 24 };
66
67 std::vector<std::vector<T>> expectedOutputValues{ expectedOutputValues0,
68 expectedOutputValues1,
69 expectedOutputValues2,
70 expectedOutputValues3,
71 expectedOutputValues4,
72 expectedOutputValues5 };
73
74 UnpackTest<T>(tflite::BuiltinOperator_UNPACK,
75 tensorType,
76 backends,
77 inputShape,
78 expectedOutputShape,
79 inputValues,
80 expectedOutputValues,
81 2);
82}
83
84TEST_SUITE("Unpack_CpuRefTests")
85{
86
87// Fp32
88TEST_CASE ("Unpack_Fp32_Axis0_Num4_CpuRef_Test")
89{
90std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
91UnpackAxis0Num4Test<float>(tflite::TensorType_FLOAT32, backends);
92}
93
94TEST_CASE ("Unpack_Fp32_Axis2_Num6_CpuRef_Test")
95{
96std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
97UnpackAxis2Num6Test<float>(tflite::TensorType_FLOAT32, backends);
98}
99
100// Uint8
101TEST_CASE ("Unpack_Uint8_Axis0_Num4_CpuRef_Test")
102{
103std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
104UnpackAxis0Num4Test<uint8_t>(tflite::TensorType_UINT8, backends);
105}
106
107TEST_CASE ("Unpack_Uint8_Axis2_Num6_CpuRef_Test")
108{
109std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
110UnpackAxis2Num6Test<uint8_t>(tflite::TensorType_UINT8, backends);
111}
112
113} // End of Unpack_CpuRefTests
114
115TEST_SUITE("Unpack_CpuAccTests")
116{
117
118// Fp32
119TEST_CASE ("Unpack_Fp32_Axis0_Num4_CpuAcc_Test")
120{
121std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
122UnpackAxis0Num4Test<float>(tflite::TensorType_FLOAT32, backends);
123}
124
Kevin May4cad8602021-05-18 09:57:43 +0100125TEST_CASE ("Unpack_Fp32_Axis2_Num6_CpuAcc_Test")
126{
127std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
128UnpackAxis2Num6Test<float>(tflite::TensorType_FLOAT32, backends);
129}
130
Kevin May8ab2d7a2021-05-07 09:32:51 +0100131// Uint8
132TEST_CASE ("Unpack_Uint8_Axis0_Num4_CpuAcc_Test")
133{
134std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
135UnpackAxis0Num4Test<uint8_t>(tflite::TensorType_UINT8, backends);
136}
137
Kevin May4cad8602021-05-18 09:57:43 +0100138TEST_CASE ("Unpack_Uint8_Axis2_Num6_CpuAcc_Test")
139{
140std::vector<armnn::BackendId> backends = {armnn::Compute::CpuAcc};
141UnpackAxis2Num6Test<uint8_t>(tflite::TensorType_UINT8, backends);
142}
143
Kevin May8ab2d7a2021-05-07 09:32:51 +0100144} // End of Unpack_CpuAccTests
145
146TEST_SUITE("Unpack_GpuAccTests")
147{
148
149// Fp32
150TEST_CASE ("Unpack_Fp32_Axis0_Num4_GpuAcc_Test")
151{
152std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
153UnpackAxis0Num4Test<float>(tflite::TensorType_FLOAT32, backends);
154}
155
Kevin May4cad8602021-05-18 09:57:43 +0100156TEST_CASE ("Unpack_Fp32_Axis2_Num6_GpuAcc_Test")
157{
158std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
159UnpackAxis2Num6Test<float>(tflite::TensorType_FLOAT32, backends);
160}
161
Kevin May8ab2d7a2021-05-07 09:32:51 +0100162// Uint8
163TEST_CASE ("Unpack_Uint8_Axis0_Num4_GpuAcc_Test")
164{
165std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
166UnpackAxis0Num4Test<uint8_t>(tflite::TensorType_UINT8, backends);
167}
168
Kevin May4cad8602021-05-18 09:57:43 +0100169TEST_CASE ("Unpack_Uint8_Axis2_Num6_GpuAcc_Test")
170{
171std::vector<armnn::BackendId> backends = {armnn::Compute::GpuAcc};
172UnpackAxis2Num6Test<uint8_t>(tflite::TensorType_UINT8, backends);
173}
174
Kevin May8ab2d7a2021-05-07 09:32:51 +0100175} // End of Unpack_GpuAccTests
176
177// End of Unpack Test Suite
178
179} // namespace armnnDelegate