1 //
2 // Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include "FillTestHelper.hpp"
7
8 #include <armnn_delegate.hpp>
9
10 #include <flatbuffers/flatbuffers.h>
11 #include <schema_generated.h>
12
13 #include <doctest/doctest.h>
14
15 namespace armnnDelegate
16 {
17
Fill2dTest(std::vector<armnn::BackendId> & backends,tflite::BuiltinOperator fillOperatorCode=tflite::BuiltinOperator_FILL,float fill=2.0f)18 void Fill2dTest(std::vector<armnn::BackendId>& backends,
19 tflite::BuiltinOperator fillOperatorCode = tflite::BuiltinOperator_FILL,
20 float fill = 2.0f )
21 {
22 std::vector<int32_t> inputShape { 2 };
23 std::vector<int32_t> tensorShape { 2, 2 };
24 std::vector<float> expectedOutputValues = { fill, fill,
25 fill, fill };
26
27 FillTest<float>(fillOperatorCode,
28 ::tflite::TensorType_FLOAT32,
29 backends,
30 inputShape,
31 tensorShape,
32 expectedOutputValues,
33 fill);
34 }
35
Fill3dTest(std::vector<armnn::BackendId> & backends,tflite::BuiltinOperator fillOperatorCode=tflite::BuiltinOperator_FILL,float fill=5.0f)36 void Fill3dTest(std::vector<armnn::BackendId>& backends,
37 tflite::BuiltinOperator fillOperatorCode = tflite::BuiltinOperator_FILL,
38 float fill = 5.0f )
39 {
40 std::vector<int32_t> inputShape { 3 };
41 std::vector<int32_t> tensorShape { 3, 3, 3 };
42 std::vector<float> expectedOutputValues = { fill, fill, fill,
43 fill, fill, fill,
44 fill, fill, fill,
45
46 fill, fill, fill,
47 fill, fill, fill,
48 fill, fill, fill,
49
50 fill, fill, fill,
51 fill, fill, fill,
52 fill, fill, fill };
53
54 FillTest<float>(fillOperatorCode,
55 ::tflite::TensorType_FLOAT32,
56 backends,
57 inputShape,
58 tensorShape,
59 expectedOutputValues,
60 fill);
61 }
62
Fill4dTest(std::vector<armnn::BackendId> & backends,tflite::BuiltinOperator fillOperatorCode=tflite::BuiltinOperator_FILL,float fill=3.0f)63 void Fill4dTest(std::vector<armnn::BackendId>& backends,
64 tflite::BuiltinOperator fillOperatorCode = tflite::BuiltinOperator_FILL,
65 float fill = 3.0f )
66 {
67 std::vector<int32_t> inputShape { 4 };
68 std::vector<int32_t> tensorShape { 2, 2, 4, 4 };
69 std::vector<float> expectedOutputValues = { fill, fill, fill, fill,
70 fill, fill, fill, fill,
71 fill, fill, fill, fill,
72 fill, fill, fill, fill,
73
74 fill, fill, fill, fill,
75 fill, fill, fill, fill,
76 fill, fill, fill, fill,
77 fill, fill, fill, fill,
78
79 fill, fill, fill, fill,
80 fill, fill, fill, fill,
81 fill, fill, fill, fill,
82 fill, fill, fill, fill,
83
84 fill, fill, fill, fill,
85 fill, fill, fill, fill,
86 fill, fill, fill, fill,
87 fill, fill, fill, fill };
88
89 FillTest<float>(fillOperatorCode,
90 ::tflite::TensorType_FLOAT32,
91 backends,
92 inputShape,
93 tensorShape,
94 expectedOutputValues,
95 fill);
96 }
97
FillInt32Test(std::vector<armnn::BackendId> & backends,tflite::BuiltinOperator fillOperatorCode=tflite::BuiltinOperator_FILL,int32_t fill=2)98 void FillInt32Test(std::vector<armnn::BackendId>& backends,
99 tflite::BuiltinOperator fillOperatorCode = tflite::BuiltinOperator_FILL,
100 int32_t fill = 2 )
101 {
102 std::vector<int32_t> inputShape { 2 };
103 std::vector<int32_t> tensorShape { 2, 2 };
104 std::vector<int32_t> expectedOutputValues = { fill, fill,
105 fill, fill };
106
107 FillTest<int32_t>(fillOperatorCode,
108 ::tflite::TensorType_INT32,
109 backends,
110 inputShape,
111 tensorShape,
112 expectedOutputValues,
113 fill);
114 }
115
116 TEST_SUITE("Fill_CpuRefTests")
117 {
118
119 TEST_CASE ("Fill2d_CpuRef_Test")
120 {
121 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
122 Fill2dTest(backends);
123 }
124
125 TEST_CASE ("Fill3d_CpuRef_Test")
126 {
127 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
128 Fill3dTest(backends);
129 }
130
131 TEST_CASE ("Fill3d_CpuRef_Test")
132 {
133 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
134 Fill3dTest(backends);
135 }
136
137 TEST_CASE ("Fill4d_CpuRef_Test")
138 {
139 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
140 Fill4dTest(backends);
141 }
142
143 TEST_CASE ("FillInt32_CpuRef_Test")
144 {
145 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
146 FillInt32Test(backends);
147 }
148
149 }
150
151 TEST_SUITE("Fill_CpuAccTests")
152 {
153
154 TEST_CASE ("Fill2d_CpuAcc_Test")
155 {
156 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
157 Fill2dTest(backends);
158 }
159
160 TEST_CASE ("Fill3d_CpuAcc_Test")
161 {
162 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
163 Fill3dTest(backends);
164 }
165
166 TEST_CASE ("Fill3d_CpuAcc_Test")
167 {
168 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
169 Fill3dTest(backends);
170 }
171
172 TEST_CASE ("Fill4d_CpuAcc_Test")
173 {
174 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
175 Fill4dTest(backends);
176 }
177
178 TEST_CASE ("FillInt32_CpuAcc_Test")
179 {
180 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
181 FillInt32Test(backends);
182 }
183
184 }
185
186 TEST_SUITE("Fill_GpuAccTests")
187 {
188
189 TEST_CASE ("Fill2d_GpuAcc_Test")
190 {
191 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
192 Fill2dTest(backends);
193 }
194
195 TEST_CASE ("Fill3d_GpuAcc_Test")
196 {
197 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
198 Fill3dTest(backends);
199 }
200
201 TEST_CASE ("Fill3d_GpuAcc_Test")
202 {
203 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
204 Fill3dTest(backends);
205 }
206
207 TEST_CASE ("Fill4d_GpuAcc_Test")
208 {
209 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
210 Fill4dTest(backends);
211 }
212
213 TEST_CASE ("FillInt32_GpuAcc_Test")
214 {
215 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
216 FillInt32Test(backends);
217 }
218
219 }
220
221 } // namespace armnnDelegate