blob: f24a8a7b2c6f5a93c14a8336808eac258947a57c [file] [log] [blame]
XNNPACK Teamb455b122019-09-27 18:10:33 -07001// Copyright (c) Facebook, Inc. and its affiliates.
2// All rights reserved.
3//
4// Copyright 2019 Google LLC
5//
6// This source code is licensed under the BSD-style license found in the
7// LICENSE file in the root directory of this source tree.
8
9#include <gtest/gtest.h>
10
11#include "global-average-pooling-operator-tester.h"
12
13#include <xnnpack/params.h>
14
15
Marat Dukhanefc47b82019-11-18 09:25:38 -080016TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_small_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -080017 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -070018 for (size_t channels = 1; channels <= 100; channels += 15) {
19 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
20 GlobalAveragePoolingOperatorTester()
21 .batch_size(1)
22 .width(width)
23 .channels(channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -080024 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070025 }
26 }
27}
28
Marat Dukhanefc47b82019-11-18 09:25:38 -080029TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_small_width_with_input_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -080030 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -070031 for (size_t channels = 1; channels <= 100; channels += 15) {
32 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
33 GlobalAveragePoolingOperatorTester()
34 .batch_size(1)
35 .width(width)
36 .channels(channels)
37 .input_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -080038 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070039 }
40 }
41}
42
Marat Dukhanefc47b82019-11-18 09:25:38 -080043TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_small_width_with_input_scale) {
Marat Dukhan04f03be2019-11-19 12:36:47 -080044 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -070045 for (size_t channels = 1; channels <= 100; channels += 15) {
46 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
47 for (float input_scale = 0.01f; input_scale < 100.0f; input_scale *= 3.14159265f) {
48 GlobalAveragePoolingOperatorTester()
49 .batch_size(1)
50 .width(width)
51 .channels(channels)
52 .input_scale(input_scale)
Marat Dukhanefc47b82019-11-18 09:25:38 -080053 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070054 }
55 }
56 }
57}
58
Marat Dukhanefc47b82019-11-18 09:25:38 -080059TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_small_width_with_input_zero_point) {
Marat Dukhan04f03be2019-11-19 12:36:47 -080060 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -070061 for (size_t channels = 1; channels <= 100; channels += 15) {
62 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
63 for (int32_t input_zero_point = 0; input_zero_point <= 255; input_zero_point += 51) {
64 GlobalAveragePoolingOperatorTester()
65 .batch_size(1)
66 .width(width)
67 .channels(channels)
68 .input_zero_point(uint8_t(input_zero_point))
Marat Dukhanefc47b82019-11-18 09:25:38 -080069 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070070 }
71 }
72 }
73}
74
Marat Dukhanefc47b82019-11-18 09:25:38 -080075TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_small_width_with_output_scale) {
Marat Dukhan04f03be2019-11-19 12:36:47 -080076 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -070077 for (size_t channels = 1; channels <= 100; channels += 15) {
78 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
79 for (float output_scale = 0.01f; output_scale < 100.0f; output_scale *= 3.14159265f) {
80 GlobalAveragePoolingOperatorTester()
81 .batch_size(1)
82 .width(width)
83 .channels(channels)
84 .output_scale(output_scale)
Marat Dukhanefc47b82019-11-18 09:25:38 -080085 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070086 }
87 }
88 }
89}
90
Marat Dukhanefc47b82019-11-18 09:25:38 -080091TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_small_width_with_output_zero_point) {
Marat Dukhan04f03be2019-11-19 12:36:47 -080092 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -070093 for (size_t channels = 1; channels <= 100; channels += 15) {
94 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
95 for (int32_t output_zero_point = 0; output_zero_point <= 255; output_zero_point += 51) {
96 GlobalAveragePoolingOperatorTester()
97 .batch_size(1)
98 .width(width)
99 .channels(channels)
100 .output_zero_point(uint8_t(output_zero_point))
Marat Dukhanefc47b82019-11-18 09:25:38 -0800101 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700102 }
103 }
104 }
105}
106
Marat Dukhanefc47b82019-11-18 09:25:38 -0800107TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_small_width_with_qmin) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800108 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700109 for (size_t channels = 1; channels <= 100; channels += 15) {
110 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
111 GlobalAveragePoolingOperatorTester()
112 .batch_size(1)
113 .width(width)
114 .channels(channels)
115 .qmin(128)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800116 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700117 }
118 }
119}
120
Marat Dukhanefc47b82019-11-18 09:25:38 -0800121TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_small_width_with_qmax) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800122 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700123 for (size_t channels = 1; channels <= 100; channels += 15) {
124 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
125 GlobalAveragePoolingOperatorTester()
126 .batch_size(1)
127 .width(width)
128 .channels(channels)
129 .qmax(128)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800130 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700131 }
132 }
133}
134
Marat Dukhanefc47b82019-11-18 09:25:38 -0800135TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_large_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800136 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700137 for (size_t channels = 1; channels <= 100; channels += 15) {
138 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
139 GlobalAveragePoolingOperatorTester()
140 .batch_size(1)
141 .width(width)
142 .channels(channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800143 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700144 }
145 }
146}
147
Marat Dukhanefc47b82019-11-18 09:25:38 -0800148TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_large_width_with_input_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800149 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700150 for (size_t channels = 1; channels <= 100; channels += 15) {
151 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
152 GlobalAveragePoolingOperatorTester()
153 .batch_size(1)
154 .width(width)
155 .channels(channels)
156 .input_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800157 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700158 }
159 }
160}
161
Marat Dukhanefc47b82019-11-18 09:25:38 -0800162TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_large_width_with_input_scale) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800163 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700164 for (size_t channels = 1; channels <= 100; channels += 15) {
165 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
166 for (float input_scale = 0.01f; input_scale < 100.0f; input_scale *= 3.14159265f) {
167 GlobalAveragePoolingOperatorTester()
168 .batch_size(1)
169 .width(width)
170 .channels(channels)
171 .input_scale(input_scale)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800172 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700173 }
174 }
175 }
176}
177
Marat Dukhanefc47b82019-11-18 09:25:38 -0800178TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_large_width_with_input_zero_point) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800179 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700180 for (size_t channels = 1; channels <= 100; channels += 15) {
181 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
182 for (int32_t input_zero_point = 0; input_zero_point <= 255; input_zero_point += 51) {
183 GlobalAveragePoolingOperatorTester()
184 .batch_size(1)
185 .width(width)
186 .channels(channels)
187 .input_zero_point(uint8_t(input_zero_point))
Marat Dukhanefc47b82019-11-18 09:25:38 -0800188 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700189 }
190 }
191 }
192}
193
Marat Dukhanefc47b82019-11-18 09:25:38 -0800194TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_large_width_with_output_scale) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800195 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700196 for (size_t channels = 1; channels <= 100; channels += 15) {
197 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
198 for (float output_scale = 0.01f; output_scale < 100.0f; output_scale *= 3.14159265f) {
199 GlobalAveragePoolingOperatorTester()
200 .batch_size(1)
201 .width(width)
202 .channels(channels)
203 .output_scale(output_scale)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800204 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700205 }
206 }
207 }
208}
209
Marat Dukhanefc47b82019-11-18 09:25:38 -0800210TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_large_width_with_output_zero_point) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800211 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700212 for (size_t channels = 1; channels <= 100; channels += 15) {
213 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
214 for (int32_t output_zero_point = 0; output_zero_point <= 255; output_zero_point += 51) {
215 GlobalAveragePoolingOperatorTester()
216 .batch_size(1)
217 .width(width)
218 .channels(channels)
219 .output_zero_point(uint8_t(output_zero_point))
Marat Dukhanefc47b82019-11-18 09:25:38 -0800220 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700221 }
222 }
223 }
224}
225
Marat Dukhanefc47b82019-11-18 09:25:38 -0800226TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_large_width_with_qmin) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800227 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700228 for (size_t channels = 1; channels <= 100; channels += 15) {
229 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
230 GlobalAveragePoolingOperatorTester()
231 .batch_size(1)
232 .width(width)
233 .channels(channels)
234 .qmin(128)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800235 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700236 }
237 }
238}
239
Marat Dukhanefc47b82019-11-18 09:25:38 -0800240TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, unit_batch_large_width_with_qmax) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800241 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700242 for (size_t channels = 1; channels <= 100; channels += 15) {
243 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
244 GlobalAveragePoolingOperatorTester()
245 .batch_size(1)
246 .width(width)
247 .channels(channels)
248 .qmax(128)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800249 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700250 }
251 }
252}
253
Marat Dukhanefc47b82019-11-18 09:25:38 -0800254TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, small_batch_small_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800255 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700256 for (size_t channels = 1; channels <= 100; channels += 15) {
257 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
258 GlobalAveragePoolingOperatorTester()
259 .batch_size(3)
260 .width(width)
261 .channels(channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800262 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700263 }
264 }
265}
266
Marat Dukhanefc47b82019-11-18 09:25:38 -0800267TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, small_batch_small_width_with_input_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800268 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700269 for (size_t channels = 1; channels <= 100; channels += 15) {
270 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
271 GlobalAveragePoolingOperatorTester()
272 .batch_size(3)
273 .width(width)
274 .channels(channels)
275 .input_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800276 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700277 }
278 }
279}
280
Marat Dukhanefc47b82019-11-18 09:25:38 -0800281TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, small_batch_small_width_with_output_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800282 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700283 for (size_t channels = 1; channels <= 100; channels += 15) {
284 for (size_t width = 1; width <= xnn_params.q8.gavgpool.mr; width++) {
285 GlobalAveragePoolingOperatorTester()
286 .batch_size(3)
287 .width(width)
288 .channels(channels)
289 .output_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800290 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700291 }
292 }
293}
294
Marat Dukhanefc47b82019-11-18 09:25:38 -0800295TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, small_batch_large_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800296 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700297 for (size_t channels = 1; channels <= 100; channels += 15) {
298 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
299 GlobalAveragePoolingOperatorTester()
300 .batch_size(3)
301 .width(width)
302 .channels(channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800303 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700304 }
305 }
306}
307
Marat Dukhanefc47b82019-11-18 09:25:38 -0800308TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, small_batch_large_width_with_input_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800309 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700310 for (size_t channels = 1; channels <= 100; channels += 15) {
311 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
312 GlobalAveragePoolingOperatorTester()
313 .batch_size(3)
314 .width(width)
315 .channels(channels)
316 .input_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800317 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700318 }
319 }
320}
321
Marat Dukhanefc47b82019-11-18 09:25:38 -0800322TEST(GLOBAL_AVERAGE_POOLING_NWC_Q8, small_batch_large_width_with_output_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800323 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700324 for (size_t channels = 1; channels <= 100; channels += 15) {
325 for (size_t width = xnn_params.q8.gavgpool.mr; width <= 4 * xnn_params.q8.gavgpool.mr; width++) {
326 GlobalAveragePoolingOperatorTester()
327 .batch_size(3)
328 .width(width)
329 .channels(channels)
330 .output_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800331 .TestNWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700332 }
333 }
334}
335
Marat Dukhanefc47b82019-11-18 09:25:38 -0800336TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, unit_batch_small_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800337 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700338 for (size_t channels = 1; channels <= 100; channels += 15) {
339 for (size_t width = 1; width <= xnn_params.f32.gavgpool.mr; width++) {
340 GlobalAveragePoolingOperatorTester()
341 .batch_size(1)
342 .width(width)
343 .channels(channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800344 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700345 }
346 }
347}
348
Marat Dukhanefc47b82019-11-18 09:25:38 -0800349TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, unit_batch_small_width_with_input_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800350 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700351 for (size_t channels = 1; channels <= 100; channels += 15) {
352 for (size_t width = 1; width <= xnn_params.f32.gavgpool.mr; width++) {
353 GlobalAveragePoolingOperatorTester()
354 .batch_size(1)
355 .width(width)
356 .channels(channels)
357 .input_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800358 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700359 }
360 }
361}
362
Marat Dukhanefc47b82019-11-18 09:25:38 -0800363TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, unit_batch_small_width_with_qmin) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800364 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700365 for (size_t channels = 1; channels <= 100; channels += 15) {
366 for (size_t width = 1; width <= xnn_params.f32.gavgpool.mr; width++) {
367 GlobalAveragePoolingOperatorTester()
368 .batch_size(1)
369 .width(width)
370 .channels(channels)
371 .qmin(128)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800372 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700373 }
374 }
375}
376
Marat Dukhanefc47b82019-11-18 09:25:38 -0800377TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, unit_batch_small_width_with_qmax) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800378 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700379 for (size_t channels = 1; channels <= 100; channels += 15) {
380 for (size_t width = 1; width <= xnn_params.f32.gavgpool.mr; width++) {
381 GlobalAveragePoolingOperatorTester()
382 .batch_size(1)
383 .width(width)
384 .channels(channels)
385 .qmax(128)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800386 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700387 }
388 }
389}
390
Marat Dukhanefc47b82019-11-18 09:25:38 -0800391TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, unit_batch_large_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800392 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700393 for (size_t channels = 1; channels <= 100; channels += 15) {
394 for (size_t width = xnn_params.f32.gavgpool.mr; width <= 4 * xnn_params.f32.gavgpool.mr; width++) {
395 GlobalAveragePoolingOperatorTester()
396 .batch_size(1)
397 .width(width)
398 .channels(channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800399 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700400 }
401 }
402}
403
Marat Dukhanefc47b82019-11-18 09:25:38 -0800404TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, unit_batch_large_width_with_input_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800405 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700406 for (size_t channels = 1; channels <= 100; channels += 15) {
407 for (size_t width = xnn_params.f32.gavgpool.mr; width <= 4 * xnn_params.f32.gavgpool.mr; width++) {
408 GlobalAveragePoolingOperatorTester()
409 .batch_size(1)
410 .width(width)
411 .channels(channels)
412 .input_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800413 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700414 }
415 }
416}
417
Marat Dukhanefc47b82019-11-18 09:25:38 -0800418TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, unit_batch_large_width_with_qmin) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800419 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700420 for (size_t channels = 1; channels <= 100; channels += 15) {
421 for (size_t width = xnn_params.f32.gavgpool.mr; width <= 4 * xnn_params.f32.gavgpool.mr; width++) {
422 GlobalAveragePoolingOperatorTester()
423 .batch_size(1)
424 .width(width)
425 .channels(channels)
426 .qmin(128)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800427 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700428 }
429 }
430}
431
Marat Dukhanefc47b82019-11-18 09:25:38 -0800432TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, unit_batch_large_width_with_qmax) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800433 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700434 for (size_t channels = 1; channels <= 100; channels += 15) {
435 for (size_t width = xnn_params.f32.gavgpool.mr; width <= 4 * xnn_params.f32.gavgpool.mr; width++) {
436 GlobalAveragePoolingOperatorTester()
437 .batch_size(1)
438 .width(width)
439 .channels(channels)
440 .qmax(128)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800441 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700442 }
443 }
444}
445
Marat Dukhanefc47b82019-11-18 09:25:38 -0800446TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, small_batch_small_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800447 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700448 for (size_t channels = 1; channels <= 100; channels += 15) {
449 for (size_t width = 1; width <= xnn_params.f32.gavgpool.mr; width++) {
450 GlobalAveragePoolingOperatorTester()
451 .batch_size(3)
452 .width(width)
453 .channels(channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800454 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700455 }
456 }
457}
458
Marat Dukhanefc47b82019-11-18 09:25:38 -0800459TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, small_batch_small_width_with_input_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800460 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700461 for (size_t channels = 1; channels <= 100; channels += 15) {
462 for (size_t width = 1; width <= xnn_params.f32.gavgpool.mr; width++) {
463 GlobalAveragePoolingOperatorTester()
464 .batch_size(3)
465 .width(width)
466 .channels(channels)
467 .input_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800468 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700469 }
470 }
471}
472
Marat Dukhanefc47b82019-11-18 09:25:38 -0800473TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, small_batch_small_width_with_output_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800474 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700475 for (size_t channels = 1; channels <= 100; channels += 15) {
476 for (size_t width = 1; width <= xnn_params.f32.gavgpool.mr; width++) {
477 GlobalAveragePoolingOperatorTester()
478 .batch_size(3)
479 .width(width)
480 .channels(channels)
481 .output_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800482 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700483 }
484 }
485}
486
Marat Dukhanefc47b82019-11-18 09:25:38 -0800487TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, small_batch_large_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800488 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700489 for (size_t channels = 1; channels <= 100; channels += 15) {
490 for (size_t width = xnn_params.f32.gavgpool.mr; width <= 4 * xnn_params.f32.gavgpool.mr; width++) {
491 GlobalAveragePoolingOperatorTester()
492 .batch_size(3)
493 .width(width)
494 .channels(channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800495 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700496 }
497 }
498}
499
Marat Dukhanefc47b82019-11-18 09:25:38 -0800500TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, small_batch_large_width_with_input_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800501 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700502 for (size_t channels = 1; channels <= 100; channels += 15) {
503 for (size_t width = xnn_params.f32.gavgpool.mr; width <= 4 * xnn_params.f32.gavgpool.mr; width++) {
504 GlobalAveragePoolingOperatorTester()
505 .batch_size(3)
506 .width(width)
507 .channels(channels)
508 .input_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800509 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700510 }
511 }
512}
513
Marat Dukhanefc47b82019-11-18 09:25:38 -0800514TEST(GLOBAL_AVERAGE_POOLING_NWC_F32, small_batch_large_width_with_output_stride) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800515 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700516 for (size_t channels = 1; channels <= 100; channels += 15) {
517 for (size_t width = xnn_params.f32.gavgpool.mr; width <= 4 * xnn_params.f32.gavgpool.mr; width++) {
518 GlobalAveragePoolingOperatorTester()
519 .batch_size(3)
520 .width(width)
521 .channels(channels)
522 .output_stride(5 * channels)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800523 .TestNWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700524 }
525 }
526}