xref: /aosp_15_r20/external/armnn/delegate/test/FillTest.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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