blob: 172e775f1cbbbe979ef9b306367e0b78617a07bf [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 "convolution-operator-tester.h"
12
13
Marat Dukhanefc47b82019-11-18 09:25:38 -080014TEST(CONVOLUTION_NHWC_Q8, 1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070015 ConvolutionOperatorTester()
16 .input_size(27, 29)
17 .kernel_size(1, 1)
18 .group_input_channels(23)
19 .group_output_channels(19)
20 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -080021 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070022}
23
Marat Dukhanefc47b82019-11-18 09:25:38 -080024TEST(CONVOLUTION_NHWC_Q8, 1x1_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070025 ConvolutionOperatorTester()
26 .input_size(27, 29)
27 .kernel_size(1, 1)
28 .group_input_channels(23)
29 .group_output_channels(19)
30 .qmin(128)
31 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -080032 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070033}
34
Marat Dukhanefc47b82019-11-18 09:25:38 -080035TEST(CONVOLUTION_NHWC_Q8, 1x1_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070036 ConvolutionOperatorTester()
37 .input_size(27, 29)
38 .kernel_size(1, 1)
39 .group_input_channels(23)
40 .group_output_channels(19)
41 .qmax(128)
42 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -080043 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070044}
45
Marat Dukhanefc47b82019-11-18 09:25:38 -080046TEST(CONVOLUTION_NHWC_Q8, 1x1_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070047 ConvolutionOperatorTester()
48 .input_size(27, 29)
49 .kernel_size(1, 1)
50 .input_pixel_stride(28)
51 .group_input_channels(23)
52 .group_output_channels(19)
53 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -080054 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070055}
56
Marat Dukhanefc47b82019-11-18 09:25:38 -080057TEST(CONVOLUTION_NHWC_Q8, 1x1_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070058 ConvolutionOperatorTester()
59 .input_size(27, 29)
60 .kernel_size(1, 1)
61 .output_pixel_stride(29)
62 .group_input_channels(23)
63 .group_output_channels(19)
64 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -080065 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070066}
67
Marat Dukhanefc47b82019-11-18 09:25:38 -080068TEST(CONVOLUTION_NHWC_Q8, 1x1_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -070069 ConvolutionOperatorTester()
70 .has_bias(false)
71 .input_size(13, 14)
72 .kernel_size(1, 1)
73 .group_input_channels(23)
74 .group_output_channels(19)
75 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -080076 .TestNHWCxQ8();
Marat Dukhanf568f082019-10-30 09:47:07 -070077}
78
Marat Dukhanefc47b82019-11-18 09:25:38 -080079TEST(CONVOLUTION_NHWC_Q8, 1x1_with_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070080 ConvolutionOperatorTester()
81 .batch_size(3)
82 .input_size(13, 14)
83 .kernel_size(1, 1)
84 .group_input_channels(23)
85 .group_output_channels(19)
86 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -080087 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070088}
89
Marat Dukhanefc47b82019-11-18 09:25:38 -080090TEST(CONVOLUTION_NHWC_Q8, grouped_1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070091 ConvolutionOperatorTester()
92 .input_size(24, 25)
93 .kernel_size(1, 1)
94 .groups(2)
95 .group_input_channels(17)
96 .group_output_channels(19)
97 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -080098 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -070099}
100
Marat Dukhanefc47b82019-11-18 09:25:38 -0800101TEST(CONVOLUTION_NHWC_Q8, grouped_1x1_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700102 ConvolutionOperatorTester()
103 .input_size(24, 25)
104 .kernel_size(1, 1)
105 .groups(2)
106 .group_input_channels(17)
107 .group_output_channels(19)
108 .qmin(128)
109 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800110 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700111}
112
Marat Dukhanefc47b82019-11-18 09:25:38 -0800113TEST(CONVOLUTION_NHWC_Q8, grouped_1x1_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700114 ConvolutionOperatorTester()
115 .input_size(24, 25)
116 .kernel_size(1, 1)
117 .groups(2)
118 .group_input_channels(17)
119 .group_output_channels(19)
120 .qmax(128)
121 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800122 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700123}
124
Marat Dukhanefc47b82019-11-18 09:25:38 -0800125TEST(CONVOLUTION_NHWC_Q8, grouped_1x1_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700126 ConvolutionOperatorTester()
127 .input_size(24, 25)
128 .kernel_size(1, 1)
129 .groups(2)
130 .input_pixel_stride(37)
131 .group_input_channels(17)
132 .group_output_channels(19)
133 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800134 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700135}
136
Marat Dukhanefc47b82019-11-18 09:25:38 -0800137TEST(CONVOLUTION_NHWC_Q8, grouped_1x1_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700138 ConvolutionOperatorTester()
139 .input_size(24, 25)
140 .kernel_size(1, 1)
141 .groups(2)
142 .output_pixel_stride(41)
143 .group_input_channels(17)
144 .group_output_channels(19)
145 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800146 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700147}
148
Marat Dukhanefc47b82019-11-18 09:25:38 -0800149TEST(CONVOLUTION_NHWC_Q8, grouped_1x1_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700150 ConvolutionOperatorTester()
151 .has_bias(false)
152 .input_size(24, 25)
153 .kernel_size(1, 1)
154 .groups(2)
155 .group_input_channels(17)
156 .group_output_channels(19)
157 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800158 .TestNHWCxQ8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700159}
160
Marat Dukhanefc47b82019-11-18 09:25:38 -0800161TEST(CONVOLUTION_NHWC_Q8, grouped_1x1_with_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700162 ConvolutionOperatorTester()
163 .batch_size(3)
164 .input_size(24, 25)
165 .kernel_size(1, 1)
166 .groups(2)
167 .group_input_channels(17)
168 .group_output_channels(19)
169 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800170 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700171}
172
Marat Dukhanefc47b82019-11-18 09:25:38 -0800173TEST(CONVOLUTION_NHWC_Q8, 1x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700174 ConvolutionOperatorTester()
175 .input_size(20, 19)
176 .padding_width(1)
177 .kernel_size(1, 3)
178 .group_input_channels(17)
179 .group_output_channels(15)
180 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800181 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700182}
183
Marat Dukhanefc47b82019-11-18 09:25:38 -0800184TEST(CONVOLUTION_NHWC_Q8, grouped_1x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700185 ConvolutionOperatorTester()
186 .input_size(20, 19)
187 .padding_width(1)
188 .kernel_size(1, 3)
189 .groups(2)
190 .group_input_channels(17)
191 .group_output_channels(15)
192 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800193 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700194}
195
Marat Dukhanefc47b82019-11-18 09:25:38 -0800196TEST(CONVOLUTION_NHWC_Q8, 3x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700197 ConvolutionOperatorTester()
198 .input_size(19, 20)
199 .padding_height(1)
200 .kernel_size(3, 1)
201 .group_input_channels(17)
202 .group_output_channels(15)
203 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800204 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700205}
206
Marat Dukhanefc47b82019-11-18 09:25:38 -0800207TEST(CONVOLUTION_NHWC_Q8, grouped_3x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700208 ConvolutionOperatorTester()
209 .input_size(19, 20)
210 .padding_height(1)
211 .kernel_size(3, 1)
212 .groups(2)
213 .group_input_channels(17)
214 .group_output_channels(15)
215 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800216 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700217}
218
Marat Dukhanefc47b82019-11-18 09:25:38 -0800219TEST(CONVOLUTION_NHWC_Q8, 3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700220 ConvolutionOperatorTester()
221 .input_size(13, 12)
222 .padding(1)
223 .kernel_size(3, 3)
224 .group_input_channels(15)
225 .group_output_channels(17)
226 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800227 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700228}
229
Marat Dukhanefc47b82019-11-18 09:25:38 -0800230TEST(CONVOLUTION_NHWC_Q8, 3x3_without_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700231 ConvolutionOperatorTester()
232 .input_size(13, 12)
233 .kernel_size(3, 3)
234 .group_input_channels(15)
235 .group_output_channels(17)
236 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800237 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700238}
239
Marat Dukhanefc47b82019-11-18 09:25:38 -0800240TEST(CONVOLUTION_NHWC_Q8, 3x3_with_left_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700241 ConvolutionOperatorTester()
242 .input_size(13, 12)
243 .padding_left(1)
244 .kernel_size(3, 3)
245 .group_input_channels(15)
246 .group_output_channels(17)
247 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800248 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700249}
250
Marat Dukhanefc47b82019-11-18 09:25:38 -0800251TEST(CONVOLUTION_NHWC_Q8, 3x3_with_right_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700252 ConvolutionOperatorTester()
253 .input_size(13, 12)
254 .padding_right(1)
255 .kernel_size(3, 3)
256 .group_input_channels(15)
257 .group_output_channels(17)
258 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800259 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700260}
261
Marat Dukhanefc47b82019-11-18 09:25:38 -0800262TEST(CONVOLUTION_NHWC_Q8, 3x3_with_top_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700263 ConvolutionOperatorTester()
264 .input_size(13, 12)
265 .padding_top(1)
266 .kernel_size(3, 3)
267 .group_input_channels(15)
268 .group_output_channels(17)
269 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800270 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700271}
272
Marat Dukhanefc47b82019-11-18 09:25:38 -0800273TEST(CONVOLUTION_NHWC_Q8, 3x3_with_bottom_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700274 ConvolutionOperatorTester()
275 .input_size(13, 12)
276 .padding_bottom(1)
277 .kernel_size(3, 3)
278 .group_input_channels(15)
279 .group_output_channels(17)
280 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800281 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700282}
283
Marat Dukhanefc47b82019-11-18 09:25:38 -0800284TEST(CONVOLUTION_NHWC_Q8, 3x3_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700285 ConvolutionOperatorTester()
286 .input_size(13, 12)
287 .padding(1)
288 .kernel_size(3, 3)
289 .input_pixel_stride(22)
290 .group_input_channels(15)
291 .group_output_channels(17)
292 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800293 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700294}
295
Marat Dukhanefc47b82019-11-18 09:25:38 -0800296TEST(CONVOLUTION_NHWC_Q8, 3x3_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700297 ConvolutionOperatorTester()
298 .input_size(13, 12)
299 .padding(1)
300 .kernel_size(3, 3)
301 .output_pixel_stride(23)
302 .group_input_channels(15)
303 .group_output_channels(17)
304 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800305 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700306}
307
Marat Dukhanefc47b82019-11-18 09:25:38 -0800308TEST(CONVOLUTION_NHWC_Q8, 3x3_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700309 ConvolutionOperatorTester()
310 .has_bias(false)
311 .input_size(10, 9)
312 .padding(1)
313 .kernel_size(3, 3)
314 .group_input_channels(15)
315 .group_output_channels(17)
316 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800317 .TestNHWCxQ8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700318}
319
Marat Dukhanefc47b82019-11-18 09:25:38 -0800320TEST(CONVOLUTION_NHWC_Q8, 3x3_with_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700321 ConvolutionOperatorTester()
322 .batch_size(3)
323 .input_size(10, 9)
324 .padding(1)
325 .kernel_size(3, 3)
326 .group_input_channels(15)
327 .group_output_channels(17)
328 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800329 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700330}
331
Marat Dukhanefc47b82019-11-18 09:25:38 -0800332TEST(CONVOLUTION_NHWC_Q8, grouped_3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700333 ConvolutionOperatorTester()
334 .input_size(10, 11)
335 .padding(1)
336 .kernel_size(3, 3)
337 .groups(2)
338 .group_input_channels(14)
339 .group_output_channels(13)
340 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800341 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700342}
343
Marat Dukhanefc47b82019-11-18 09:25:38 -0800344TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_without_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700345 ConvolutionOperatorTester()
346 .input_size(13, 12)
347 .kernel_size(3, 3)
348 .group_input_channels(15)
349 .group_output_channels(17)
350 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800351 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700352}
353
Marat Dukhanefc47b82019-11-18 09:25:38 -0800354TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_with_left_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700355 ConvolutionOperatorTester()
356 .input_size(10, 11)
357 .padding_left(1)
358 .kernel_size(3, 3)
359 .groups(2)
360 .group_input_channels(14)
361 .group_output_channels(13)
362 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800363 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700364}
365
Marat Dukhanefc47b82019-11-18 09:25:38 -0800366TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_with_right_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700367 ConvolutionOperatorTester()
368 .input_size(10, 11)
369 .padding_right(1)
370 .kernel_size(3, 3)
371 .groups(2)
372 .group_input_channels(14)
373 .group_output_channels(13)
374 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800375 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700376}
377
Marat Dukhanefc47b82019-11-18 09:25:38 -0800378TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_with_top_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700379 ConvolutionOperatorTester()
380 .input_size(10, 11)
381 .padding_top(1)
382 .kernel_size(3, 3)
383 .groups(2)
384 .group_input_channels(14)
385 .group_output_channels(13)
386 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800387 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700388}
389
Marat Dukhanefc47b82019-11-18 09:25:38 -0800390TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_with_bottom_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700391 ConvolutionOperatorTester()
392 .input_size(10, 11)
393 .padding_bottom(1)
394 .kernel_size(3, 3)
395 .groups(2)
396 .group_input_channels(14)
397 .group_output_channels(13)
398 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800399 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700400}
401
Marat Dukhanefc47b82019-11-18 09:25:38 -0800402TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700403 ConvolutionOperatorTester()
404 .input_size(10, 11)
405 .padding(1)
406 .kernel_size(3, 3)
407 .groups(2)
408 .input_pixel_stride(29)
409 .group_input_channels(14)
410 .group_output_channels(13)
411 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800412 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700413}
414
Marat Dukhanefc47b82019-11-18 09:25:38 -0800415TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700416 ConvolutionOperatorTester()
417 .input_size(10, 11)
418 .padding(1)
419 .kernel_size(3, 3)
420 .groups(2)
421 .output_pixel_stride(31)
422 .group_input_channels(14)
423 .group_output_channels(13)
424 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800425 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700426}
427
Marat Dukhanefc47b82019-11-18 09:25:38 -0800428TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700429 ConvolutionOperatorTester()
430 .has_bias(false)
431 .input_size(10, 11)
432 .padding(1)
433 .kernel_size(3, 3)
434 .groups(2)
435 .group_input_channels(14)
436 .group_output_channels(13)
437 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800438 .TestNHWCxQ8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700439}
440
Marat Dukhanefc47b82019-11-18 09:25:38 -0800441TEST(CONVOLUTION_NHWC_Q8, grouped_3x3_with_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700442 ConvolutionOperatorTester()
443 .batch_size(3)
444 .input_size(10, 11)
445 .padding(1)
446 .kernel_size(3, 3)
447 .groups(2)
448 .group_input_channels(14)
449 .group_output_channels(13)
450 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800451 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700452}
453
Marat Dukhanefc47b82019-11-18 09:25:38 -0800454TEST(CONVOLUTION_NHWC_Q8, 3x3s2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700455 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -0700456 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700457 .padding(1)
458 .kernel_size(3, 3)
459 .subsampling(2)
460 .group_input_channels(27)
461 .group_output_channels(19)
462 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800463 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700464}
465
Marat Dukhanefc47b82019-11-18 09:25:38 -0800466TEST(CONVOLUTION_NHWC_Q8, 3x3s2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -0700467 for (size_t input_height = 13; input_height <= 14; input_height++) {
468 for (size_t input_width = 13; input_width <= 14; input_width++) {
469 ConvolutionOperatorTester()
470 .input_size(input_height, input_width)
471 .padding_tf_same(true)
472 .kernel_size(3, 3)
473 .subsampling(2)
474 .group_input_channels(27)
475 .group_output_channels(19)
476 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800477 .TestNHWCxQ8();
Marat Dukhan8440fde2019-10-24 12:46:13 -0700478 }
479 }
480}
481
Marat Dukhanefc47b82019-11-18 09:25:38 -0800482TEST(CONVOLUTION_NHWC_Q8, 3x3s1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700483 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -0700484 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700485 .padding(1)
486 .kernel_size(3, 3)
487 .subsampling(1, 2)
488 .group_input_channels(27)
489 .group_output_channels(19)
490 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800491 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700492}
493
Marat Dukhanefc47b82019-11-18 09:25:38 -0800494TEST(CONVOLUTION_NHWC_Q8, 3x3s1x2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -0700495 for (size_t input_height = 13; input_height <= 14; input_height++) {
496 for (size_t input_width = 13; input_width <= 14; input_width++) {
497 ConvolutionOperatorTester()
498 .input_size(input_height, input_width)
499 .padding_tf_same(true)
500 .kernel_size(3, 3)
501 .subsampling(1, 2)
502 .group_input_channels(27)
503 .group_output_channels(19)
504 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800505 .TestNHWCxQ8();
Marat Dukhan8440fde2019-10-24 12:46:13 -0700506 }
507 }
508}
509
Marat Dukhanefc47b82019-11-18 09:25:38 -0800510TEST(CONVOLUTION_NHWC_Q8, 3x3s2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700511 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -0700512 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700513 .padding(1)
514 .kernel_size(3, 3)
515 .subsampling(2, 1)
516 .group_input_channels(27)
517 .group_output_channels(19)
518 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800519 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700520}
521
Marat Dukhanefc47b82019-11-18 09:25:38 -0800522TEST(CONVOLUTION_NHWC_Q8, 3x3s2x1_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -0700523 for (size_t input_height = 13; input_height <= 14; input_height++) {
524 for (size_t input_width = 13; input_width <= 14; input_width++) {
525 ConvolutionOperatorTester()
526 .input_size(input_height, input_width)
527 .padding_tf_same(true)
528 .kernel_size(3, 3)
529 .subsampling(2, 1)
530 .group_input_channels(27)
531 .group_output_channels(19)
532 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800533 .TestNHWCxQ8();
Marat Dukhan8440fde2019-10-24 12:46:13 -0700534 }
535 }
536}
537
Marat Dukhanefc47b82019-11-18 09:25:38 -0800538TEST(CONVOLUTION_NHWC_Q8, 3x3d2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700539 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -0700540 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700541 .padding(2)
542 .kernel_size(3, 3)
543 .dilation(2)
544 .group_input_channels(27)
545 .group_output_channels(19)
546 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800547 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700548}
549
Marat Dukhanefc47b82019-11-18 09:25:38 -0800550TEST(CONVOLUTION_NHWC_Q8, 3x3d1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700551 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -0700552 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700553 .padding(1, 2)
554 .kernel_size(3, 3)
555 .dilation(1, 2)
556 .group_input_channels(27)
557 .group_output_channels(19)
558 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800559 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700560}
561
Marat Dukhanefc47b82019-11-18 09:25:38 -0800562TEST(CONVOLUTION_NHWC_Q8, 3x3d2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700563 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -0700564 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -0700565 .padding(2, 1)
566 .kernel_size(3, 3)
567 .dilation(2, 1)
568 .group_input_channels(27)
569 .group_output_channels(19)
570 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800571 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700572}
573
Marat Dukhanefc47b82019-11-18 09:25:38 -0800574TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700575 ConvolutionOperatorTester()
576 .input_size(15, 14)
577 .padding(1, 1)
578 .kernel_size(3, 3)
579 .groups(27)
580 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800581 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700582}
583
Marat Dukhanefc47b82019-11-18 09:25:38 -0800584TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700585 ConvolutionOperatorTester()
586 .has_bias(false)
587 .input_size(15, 14)
588 .padding(1, 1)
589 .kernel_size(3, 3)
590 .groups(27)
591 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800592 .TestNHWCxQ8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700593}
594
Marat Dukhanefc47b82019-11-18 09:25:38 -0800595TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3s2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700596 ConvolutionOperatorTester()
597 .input_size(15, 14)
598 .padding(1, 1)
599 .kernel_size(3, 3)
600 .subsampling(2)
601 .groups(27)
602 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800603 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700604}
605
Marat Dukhanefc47b82019-11-18 09:25:38 -0800606TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3s2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -0700607 for (size_t input_height = 14; input_height <= 15; input_height++) {
608 for (size_t input_width = 14; input_width <= 15; input_width++) {
609 ConvolutionOperatorTester()
610 .input_size(input_height, input_width)
611 .padding_tf_same(true)
612 .kernel_size(3, 3)
613 .subsampling(2)
614 .groups(27)
615 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800616 .TestNHWCxQ8();
Marat Dukhan8440fde2019-10-24 12:46:13 -0700617 }
618 }
619}
620
Marat Dukhanefc47b82019-11-18 09:25:38 -0800621TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3s1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700622 ConvolutionOperatorTester()
623 .input_size(15, 14)
624 .padding(1, 1)
625 .kernel_size(3, 3)
626 .subsampling(1, 2)
627 .groups(27)
628 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800629 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700630}
631
Marat Dukhanefc47b82019-11-18 09:25:38 -0800632TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3s1x2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -0700633 for (size_t input_height = 14; input_height <= 15; input_height++) {
634 for (size_t input_width = 14; input_width <= 15; input_width++) {
635 ConvolutionOperatorTester()
636 .input_size(input_height, input_width)
637 .padding_tf_same(true)
638 .kernel_size(3, 3)
639 .subsampling(1, 2)
640 .groups(27)
641 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800642 .TestNHWCxQ8();
Marat Dukhan8440fde2019-10-24 12:46:13 -0700643 }
644 }
645}
646
Marat Dukhanefc47b82019-11-18 09:25:38 -0800647TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3s2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700648 ConvolutionOperatorTester()
649 .input_size(15, 14)
650 .padding(1, 1)
651 .kernel_size(3, 3)
652 .subsampling(2, 1)
653 .groups(27)
654 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800655 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700656}
657
Marat Dukhanefc47b82019-11-18 09:25:38 -0800658TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3s2x1_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -0700659 for (size_t input_height = 14; input_height <= 15; input_height++) {
660 for (size_t input_width = 14; input_width <= 15; input_width++) {
661 ConvolutionOperatorTester()
662 .input_size(input_height, input_width)
663 .padding_tf_same(true)
664 .kernel_size(3, 3)
665 .subsampling(2, 1)
666 .groups(27)
667 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800668 .TestNHWCxQ8();
Marat Dukhan8440fde2019-10-24 12:46:13 -0700669 }
670 }
671}
672
Marat Dukhanefc47b82019-11-18 09:25:38 -0800673TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3d2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700674 ConvolutionOperatorTester()
675 .input_size(15, 14)
676 .padding(1, 1)
677 .kernel_size(3, 3)
678 .dilation(2)
679 .groups(27)
680 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800681 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700682}
683
Marat Dukhanefc47b82019-11-18 09:25:38 -0800684TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3d1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700685 ConvolutionOperatorTester()
686 .input_size(15, 14)
687 .padding(1, 1)
688 .kernel_size(3, 3)
689 .dilation(1, 2)
690 .groups(27)
691 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800692 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700693}
694
Marat Dukhanefc47b82019-11-18 09:25:38 -0800695TEST(CONVOLUTION_NHWC_Q8, depthwise_3x3d2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700696 ConvolutionOperatorTester()
697 .input_size(15, 14)
698 .padding(1, 1)
699 .kernel_size(3, 3)
700 .dilation(2, 1)
701 .groups(27)
702 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800703 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700704}
705
Marat Dukhanefc47b82019-11-18 09:25:38 -0800706TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700707 ConvolutionOperatorTester()
708 .depthwise_layout(true)
709 .input_size(15, 14)
710 .kernel_size(1, 1)
711 .groups(24)
712 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800713 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700714}
715
Marat Dukhanefc47b82019-11-18 09:25:38 -0800716TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 1x1_with_depth_multiplier) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700717 ConvolutionOperatorTester()
718 .depthwise_layout(true)
719 .input_size(15, 14)
720 .kernel_size(1, 1)
721 .groups(24)
722 .group_output_channels(3)
723 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800724 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700725}
726
Marat Dukhanefc47b82019-11-18 09:25:38 -0800727TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 1x1_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700728 ConvolutionOperatorTester()
729 .depthwise_layout(true)
730 .has_bias(false)
731 .input_size(15, 14)
732 .kernel_size(1, 1)
733 .groups(24)
734 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800735 .TestNHWCxQ8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700736}
737
Marat Dukhanefc47b82019-11-18 09:25:38 -0800738TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700739 ConvolutionOperatorTester()
740 .depthwise_layout(true)
741 .input_size(15, 14)
742 .padding(1, 1)
743 .kernel_size(3, 3)
744 .groups(24)
745 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800746 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700747}
748
Marat Dukhanefc47b82019-11-18 09:25:38 -0800749TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 3x3_with_depth_multiplier) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700750 ConvolutionOperatorTester()
751 .depthwise_layout(true)
752 .input_size(15, 14)
753 .padding(1, 1)
754 .kernel_size(3, 3)
755 .groups(24)
756 .group_output_channels(3)
757 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800758 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700759}
760
Marat Dukhanefc47b82019-11-18 09:25:38 -0800761TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 3x3_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700762 ConvolutionOperatorTester()
763 .depthwise_layout(true)
764 .has_bias(false)
765 .input_size(15, 14)
766 .padding(1, 1)
767 .kernel_size(3, 3)
768 .groups(24)
769 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800770 .TestNHWCxQ8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700771}
772
Marat Dukhanefc47b82019-11-18 09:25:38 -0800773TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 3x3s2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -0700774 for (size_t input_height = 14; input_height <= 15; input_height++) {
775 for (size_t input_width = 14; input_width <= 15; input_width++) {
776 ConvolutionOperatorTester()
777 .depthwise_layout(true)
778 .input_size(input_height, input_width)
779 .padding_tf_same(true)
780 .kernel_size(3, 3)
781 .groups(24)
782 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800783 .TestNHWCxQ8();
Marat Dukhan8440fde2019-10-24 12:46:13 -0700784 }
785 }
786}
787
Marat Dukhanefc47b82019-11-18 09:25:38 -0800788TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 5x5) {
XNNPACK Teamb455b122019-09-27 18:10:33 -0700789 ConvolutionOperatorTester()
790 .depthwise_layout(true)
791 .input_size(15, 14)
792 .padding(2, 2)
793 .kernel_size(5, 5)
794 .groups(24)
795 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800796 .TestNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700797}
798
Marat Dukhanefc47b82019-11-18 09:25:38 -0800799TEST(DEPTHWISE_CONVOLUTION_NHWC_Q8, 5x5_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -0700800 ConvolutionOperatorTester()
801 .depthwise_layout(true)
802 .has_bias(false)
803 .input_size(15, 14)
804 .padding(2, 2)
805 .kernel_size(5, 5)
806 .groups(24)
807 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800808 .TestNHWCxQ8();
Marat Dukhanf568f082019-10-30 09:47:07 -0700809}
810
Marat Dukhan202eed02019-11-20 16:21:10 -0800811TEST(CONVOLUTION_NHWC_Q8, setup_changing_input_buffer) {
812 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
813 ConvolutionOperatorTester()
814 .batch_size(3)
815 .input_height(8)
816 .input_width(8)
817 .kernel_height(5)
818 .kernel_width(3)
819 .group_input_channels(15)
820 .group_output_channels(17)
821 .TestSetupNHWCxQ8();
822}
823
824TEST(CONVOLUTION_NHWC_Q8, setup_changing_input_buffer_grouped) {
825 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
826 ConvolutionOperatorTester()
827 .batch_size(3)
828 .input_height(8)
829 .input_width(8)
830 .kernel_height(5)
831 .kernel_width(3)
832 .groups(2)
833 .group_input_channels(15)
834 .group_output_channels(17)
835 .TestSetupNHWCxQ8();
836}
837
838TEST(CONVOLUTION_NHWC_Q8, setup_changing_input_buffer_depthwise) {
839 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
840 ConvolutionOperatorTester()
841 .batch_size(3)
842 .input_height(8)
843 .input_width(8)
844 .kernel_height(3)
845 .kernel_width(3)
846 .groups(19)
847 .group_input_channels(1)
848 .group_output_channels(1)
849 .TestSetupNHWCxQ8();
850}
851
Marat Dukhanefc47b82019-11-18 09:25:38 -0800852TEST(CONVOLUTION_NHWC_Q8, setup_increasing_batch) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800853 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700854 ConvolutionOperatorTester()
855 .batch_size(3)
856 .next_batch_size(5)
857 .input_height(8)
858 .input_width(8)
859 .kernel_height(5)
860 .kernel_width(3)
861 .group_input_channels(15)
862 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800863 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700864}
865
Marat Dukhanefc47b82019-11-18 09:25:38 -0800866TEST(CONVOLUTION_NHWC_Q8, setup_increasing_batch_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800867 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700868 ConvolutionOperatorTester()
869 .batch_size(3)
870 .next_batch_size(5)
871 .input_height(8)
872 .input_width(8)
873 .kernel_height(5)
874 .kernel_width(3)
875 .groups(2)
876 .group_input_channels(15)
877 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800878 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700879}
880
Marat Dukhanefc47b82019-11-18 09:25:38 -0800881TEST(CONVOLUTION_NHWC_Q8, setup_increasing_batch_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800882 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700883 ConvolutionOperatorTester()
884 .batch_size(3)
885 .next_batch_size(5)
886 .input_height(8)
887 .input_width(8)
888 .kernel_height(3)
889 .kernel_width(3)
890 .groups(19)
891 .group_input_channels(1)
892 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800893 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700894}
895
Marat Dukhanefc47b82019-11-18 09:25:38 -0800896TEST(CONVOLUTION_NHWC_Q8, setup_decreasing_batch) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800897 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700898 ConvolutionOperatorTester()
899 .batch_size(5)
900 .next_batch_size(3)
901 .input_height(8)
902 .input_width(8)
903 .kernel_height(5)
904 .kernel_width(3)
905 .group_input_channels(15)
906 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800907 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700908}
909
Marat Dukhanefc47b82019-11-18 09:25:38 -0800910TEST(CONVOLUTION_NHWC_Q8, setup_decreasing_batch_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800911 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700912 ConvolutionOperatorTester()
913 .batch_size(5)
914 .next_batch_size(3)
915 .input_height(8)
916 .input_width(8)
917 .kernel_height(5)
918 .kernel_width(3)
919 .groups(2)
920 .group_input_channels(15)
921 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800922 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700923}
924
Marat Dukhanefc47b82019-11-18 09:25:38 -0800925TEST(CONVOLUTION_NHWC_Q8, setup_decreasing_batch_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800926 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700927 ConvolutionOperatorTester()
928 .batch_size(5)
929 .next_batch_size(3)
930 .input_height(8)
931 .input_width(8)
932 .kernel_height(3)
933 .kernel_width(3)
934 .groups(19)
935 .group_input_channels(1)
936 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800937 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700938}
939
Marat Dukhanefc47b82019-11-18 09:25:38 -0800940TEST(CONVOLUTION_NHWC_Q8, setup_changing_height) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800941 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700942 ConvolutionOperatorTester()
943 .batch_size(3)
944 .input_height(8)
945 .input_width(8)
946 .next_input_height(9)
947 .kernel_height(5)
948 .kernel_width(3)
949 .group_input_channels(15)
950 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800951 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700952 ConvolutionOperatorTester()
953 .batch_size(3)
954 .input_height(8)
955 .input_width(8)
956 .next_input_height(7)
957 .kernel_height(5)
958 .kernel_width(3)
959 .group_input_channels(15)
960 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800961 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700962}
963
Marat Dukhanefc47b82019-11-18 09:25:38 -0800964TEST(CONVOLUTION_NHWC_Q8, setup_changing_height_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800965 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700966 ConvolutionOperatorTester()
967 .batch_size(3)
968 .input_height(8)
969 .input_width(8)
970 .next_input_height(9)
971 .kernel_height(5)
972 .kernel_width(3)
973 .groups(2)
974 .group_input_channels(15)
975 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800976 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700977 ConvolutionOperatorTester()
978 .batch_size(3)
979 .input_height(8)
980 .input_width(8)
981 .next_input_height(7)
982 .kernel_height(5)
983 .kernel_width(3)
984 .groups(2)
985 .group_input_channels(15)
986 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -0800987 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -0700988}
989
Marat Dukhanefc47b82019-11-18 09:25:38 -0800990TEST(CONVOLUTION_NHWC_Q8, setup_changing_height_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -0800991 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -0700992 ConvolutionOperatorTester()
993 .batch_size(3)
994 .input_height(8)
995 .input_width(8)
996 .next_input_height(9)
997 .kernel_height(3)
998 .kernel_width(3)
999 .groups(19)
1000 .group_input_channels(1)
1001 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001002 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001003 ConvolutionOperatorTester()
1004 .batch_size(3)
1005 .input_height(8)
1006 .input_width(8)
1007 .next_input_height(7)
1008 .kernel_height(3)
1009 .kernel_width(3)
1010 .groups(19)
1011 .group_input_channels(1)
1012 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001013 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001014}
1015
Marat Dukhanefc47b82019-11-18 09:25:38 -08001016TEST(CONVOLUTION_NHWC_Q8, setup_changing_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08001017 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07001018 ConvolutionOperatorTester()
1019 .batch_size(3)
1020 .input_height(8)
1021 .input_width(8)
1022 .next_input_width(9)
1023 .kernel_height(5)
1024 .kernel_width(3)
1025 .group_input_channels(15)
1026 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001027 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001028 ConvolutionOperatorTester()
1029 .batch_size(3)
1030 .input_height(8)
1031 .input_width(8)
1032 .next_input_width(7)
1033 .kernel_height(5)
1034 .kernel_width(3)
1035 .group_input_channels(15)
1036 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001037 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001038}
1039
Marat Dukhanefc47b82019-11-18 09:25:38 -08001040TEST(CONVOLUTION_NHWC_Q8, setup_changing_width_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08001041 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07001042 ConvolutionOperatorTester()
1043 .batch_size(3)
1044 .input_height(8)
1045 .input_width(8)
1046 .next_input_width(9)
1047 .kernel_height(5)
1048 .kernel_width(3)
1049 .groups(2)
1050 .group_input_channels(15)
1051 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001052 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001053 ConvolutionOperatorTester()
1054 .batch_size(3)
1055 .input_height(8)
1056 .input_width(8)
1057 .next_input_width(7)
1058 .kernel_height(5)
1059 .kernel_width(3)
1060 .groups(2)
1061 .group_input_channels(15)
1062 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001063 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001064}
1065
Marat Dukhanefc47b82019-11-18 09:25:38 -08001066TEST(CONVOLUTION_NHWC_Q8, setup_changing_width_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08001067 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07001068 ConvolutionOperatorTester()
1069 .batch_size(3)
1070 .input_height(8)
1071 .input_width(8)
1072 .next_input_width(9)
1073 .kernel_height(3)
1074 .kernel_width(3)
1075 .groups(19)
1076 .group_input_channels(1)
1077 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001078 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001079 ConvolutionOperatorTester()
1080 .batch_size(3)
1081 .input_height(8)
1082 .input_width(8)
1083 .next_input_width(7)
1084 .kernel_height(3)
1085 .kernel_width(3)
1086 .groups(19)
1087 .group_input_channels(1)
1088 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001089 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001090}
1091
Marat Dukhanefc47b82019-11-18 09:25:38 -08001092TEST(CONVOLUTION_NHWC_Q8, setup_swap_height_and_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08001093 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07001094 ConvolutionOperatorTester()
1095 .batch_size(3)
1096 .input_height(9)
1097 .input_width(8)
1098 .next_input_height(8)
1099 .next_input_width(9)
1100 .kernel_height(5)
1101 .kernel_width(3)
1102 .group_input_channels(15)
1103 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001104 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001105}
1106
Marat Dukhanefc47b82019-11-18 09:25:38 -08001107TEST(CONVOLUTION_NHWC_Q8, setup_swap_height_and_width_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08001108 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07001109 ConvolutionOperatorTester()
1110 .batch_size(3)
1111 .input_height(9)
1112 .input_width(8)
1113 .next_input_height(8)
1114 .next_input_width(9)
1115 .kernel_height(5)
1116 .kernel_width(3)
1117 .groups(2)
1118 .group_input_channels(15)
1119 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001120 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001121}
1122
Marat Dukhanefc47b82019-11-18 09:25:38 -08001123TEST(CONVOLUTION_NHWC_Q8, setup_swap_height_and_width_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08001124 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07001125 ConvolutionOperatorTester()
1126 .batch_size(3)
1127 .input_height(9)
1128 .input_width(8)
1129 .next_input_height(8)
1130 .next_input_width(9)
1131 .kernel_height(3)
1132 .kernel_width(3)
1133 .groups(19)
1134 .group_input_channels(1)
1135 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001136 .TestSetupNHWCxQ8();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001137}
1138
Marat Dukhanefc47b82019-11-18 09:25:38 -08001139TEST(CONVOLUTION_NHWC_F32, 1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001140 ConvolutionOperatorTester()
1141 .input_size(27, 29)
1142 .kernel_size(1, 1)
1143 .group_input_channels(23)
1144 .group_output_channels(19)
1145 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001146 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001147}
1148
Marat Dukhanefc47b82019-11-18 09:25:38 -08001149TEST(CONVOLUTION_NHWC_F32, 1x1_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001150 ConvolutionOperatorTester()
1151 .input_size(27, 29)
1152 .kernel_size(1, 1)
1153 .group_input_channels(23)
1154 .group_output_channels(19)
1155 .qmin(128)
1156 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001157 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001158}
1159
Marat Dukhanefc47b82019-11-18 09:25:38 -08001160TEST(CONVOLUTION_NHWC_F32, 1x1_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001161 ConvolutionOperatorTester()
1162 .input_size(27, 29)
1163 .kernel_size(1, 1)
1164 .group_input_channels(23)
1165 .group_output_channels(19)
1166 .qmax(128)
1167 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001168 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001169}
1170
Marat Dukhanefc47b82019-11-18 09:25:38 -08001171TEST(CONVOLUTION_NHWC_F32, 1x1_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001172 ConvolutionOperatorTester()
1173 .input_size(27, 29)
1174 .kernel_size(1, 1)
1175 .input_pixel_stride(28)
1176 .group_input_channels(23)
1177 .group_output_channels(19)
1178 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001179 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001180}
1181
Marat Dukhanefc47b82019-11-18 09:25:38 -08001182TEST(CONVOLUTION_NHWC_F32, 1x1_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001183 ConvolutionOperatorTester()
1184 .input_size(27, 29)
1185 .kernel_size(1, 1)
1186 .output_pixel_stride(29)
1187 .group_input_channels(23)
1188 .group_output_channels(19)
1189 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001190 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001191}
1192
Marat Dukhanefc47b82019-11-18 09:25:38 -08001193TEST(CONVOLUTION_NHWC_F32, 1x1_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07001194 ConvolutionOperatorTester()
1195 .has_bias(false)
1196 .input_size(13, 14)
1197 .kernel_size(1, 1)
1198 .group_input_channels(23)
1199 .group_output_channels(19)
1200 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001201 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07001202}
1203
Marat Dukhanefc47b82019-11-18 09:25:38 -08001204TEST(CONVOLUTION_NHWC_F32, 1x1_with_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001205 ConvolutionOperatorTester()
1206 .batch_size(3)
1207 .input_size(13, 14)
1208 .kernel_size(1, 1)
1209 .group_input_channels(23)
1210 .group_output_channels(19)
1211 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001212 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001213}
1214
Marat Dukhanefc47b82019-11-18 09:25:38 -08001215TEST(CONVOLUTION_NHWC_F32, grouped_1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001216 ConvolutionOperatorTester()
1217 .input_size(24, 25)
1218 .kernel_size(1, 1)
1219 .groups(2)
1220 .group_input_channels(17)
1221 .group_output_channels(19)
1222 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001223 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001224}
1225
Marat Dukhanefc47b82019-11-18 09:25:38 -08001226TEST(CONVOLUTION_NHWC_F32, grouped_1x1_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001227 ConvolutionOperatorTester()
1228 .input_size(24, 25)
1229 .kernel_size(1, 1)
1230 .groups(2)
1231 .group_input_channels(17)
1232 .group_output_channels(19)
1233 .qmin(128)
1234 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001235 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001236}
1237
Marat Dukhanefc47b82019-11-18 09:25:38 -08001238TEST(CONVOLUTION_NHWC_F32, grouped_1x1_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001239 ConvolutionOperatorTester()
1240 .input_size(24, 25)
1241 .kernel_size(1, 1)
1242 .groups(2)
1243 .group_input_channels(17)
1244 .group_output_channels(19)
1245 .qmax(128)
1246 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001247 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001248}
1249
Marat Dukhanefc47b82019-11-18 09:25:38 -08001250TEST(CONVOLUTION_NHWC_F32, grouped_1x1_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001251 ConvolutionOperatorTester()
1252 .input_size(24, 25)
1253 .kernel_size(1, 1)
1254 .groups(2)
1255 .input_pixel_stride(37)
1256 .group_input_channels(17)
1257 .group_output_channels(19)
1258 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001259 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001260}
1261
Marat Dukhanefc47b82019-11-18 09:25:38 -08001262TEST(CONVOLUTION_NHWC_F32, grouped_1x1_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001263 ConvolutionOperatorTester()
1264 .input_size(24, 25)
1265 .kernel_size(1, 1)
1266 .groups(2)
1267 .output_pixel_stride(41)
1268 .group_input_channels(17)
1269 .group_output_channels(19)
1270 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001271 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001272}
1273
Marat Dukhanefc47b82019-11-18 09:25:38 -08001274TEST(CONVOLUTION_NHWC_F32, grouped_1x1_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07001275 ConvolutionOperatorTester()
1276 .has_bias(false)
1277 .input_size(24, 25)
1278 .kernel_size(1, 1)
1279 .groups(2)
1280 .group_input_channels(17)
1281 .group_output_channels(19)
1282 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001283 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07001284}
1285
Marat Dukhanefc47b82019-11-18 09:25:38 -08001286TEST(CONVOLUTION_NHWC_F32, grouped_1x1_with_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001287 ConvolutionOperatorTester()
1288 .batch_size(3)
1289 .input_size(24, 25)
1290 .kernel_size(1, 1)
1291 .groups(2)
1292 .group_input_channels(17)
1293 .group_output_channels(19)
1294 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001295 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001296}
1297
Marat Dukhanefc47b82019-11-18 09:25:38 -08001298TEST(CONVOLUTION_NHWC_F32, unioutput_1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001299 ConvolutionOperatorTester()
1300 .input_size(1, 1)
1301 .kernel_size(1, 1)
1302 .group_input_channels(23)
1303 .group_output_channels(19)
1304 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001305 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001306}
1307
Marat Dukhanefc47b82019-11-18 09:25:38 -08001308TEST(CONVOLUTION_NHWC_F32, unioutput_1x1_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001309 ConvolutionOperatorTester()
1310 .input_size(1, 1)
1311 .kernel_size(1, 1)
1312 .group_input_channels(23)
1313 .group_output_channels(19)
1314 .qmin(128)
1315 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001316 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001317}
1318
Marat Dukhanefc47b82019-11-18 09:25:38 -08001319TEST(CONVOLUTION_NHWC_F32, unioutput_1x1_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001320 ConvolutionOperatorTester()
1321 .input_size(1, 1)
1322 .kernel_size(1, 1)
1323 .group_input_channels(23)
1324 .group_output_channels(19)
1325 .qmax(128)
1326 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001327 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001328}
1329
Marat Dukhanefc47b82019-11-18 09:25:38 -08001330TEST(CONVOLUTION_NHWC_F32, unioutput_1x1_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001331 ConvolutionOperatorTester()
1332 .input_size(1, 1)
1333 .kernel_size(1, 1)
1334 .input_pixel_stride(28)
1335 .group_input_channels(23)
1336 .group_output_channels(19)
1337 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001338 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001339}
1340
Marat Dukhanefc47b82019-11-18 09:25:38 -08001341TEST(CONVOLUTION_NHWC_F32, unioutput_1x1_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001342 ConvolutionOperatorTester()
1343 .input_size(1, 1)
1344 .kernel_size(1, 1)
1345 .output_pixel_stride(29)
1346 .group_input_channels(23)
1347 .group_output_channels(19)
1348 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001349 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001350}
1351
Marat Dukhanefc47b82019-11-18 09:25:38 -08001352TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001353 ConvolutionOperatorTester()
1354 .input_size(1, 1)
1355 .kernel_size(1, 1)
1356 .groups(2)
1357 .group_input_channels(17)
1358 .group_output_channels(13)
1359 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001360 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001361}
1362
Marat Dukhanefc47b82019-11-18 09:25:38 -08001363TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_1x1_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001364 ConvolutionOperatorTester()
1365 .input_size(1, 1)
1366 .kernel_size(1, 1)
1367 .groups(2)
1368 .group_input_channels(17)
1369 .group_output_channels(13)
1370 .qmin(128)
1371 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001372 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001373}
1374
Marat Dukhanefc47b82019-11-18 09:25:38 -08001375TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_1x1_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001376 ConvolutionOperatorTester()
1377 .input_size(1, 1)
1378 .kernel_size(1, 1)
1379 .groups(2)
1380 .group_input_channels(17)
1381 .group_output_channels(13)
1382 .qmax(128)
1383 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001384 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001385}
1386
Marat Dukhanefc47b82019-11-18 09:25:38 -08001387TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_1x1_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001388 ConvolutionOperatorTester()
1389 .input_size(1, 1)
1390 .kernel_size(1, 1)
1391 .groups(2)
1392 .input_pixel_stride(37)
1393 .group_input_channels(17)
1394 .group_output_channels(13)
1395 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001396 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001397}
1398
Marat Dukhanefc47b82019-11-18 09:25:38 -08001399TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_1x1_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001400 ConvolutionOperatorTester()
1401 .input_size(1, 1)
1402 .kernel_size(1, 1)
1403 .groups(2)
1404 .output_pixel_stride(41)
1405 .group_input_channels(17)
1406 .group_output_channels(13)
1407 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001408 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001409}
1410
Marat Dukhanefc47b82019-11-18 09:25:38 -08001411TEST(CONVOLUTION_NHWC_F32, 1x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001412 ConvolutionOperatorTester()
1413 .input_size(20, 19)
1414 .padding_width(1)
1415 .kernel_size(1, 3)
1416 .group_input_channels(17)
1417 .group_output_channels(15)
1418 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001419 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001420}
1421
Marat Dukhanefc47b82019-11-18 09:25:38 -08001422TEST(CONVOLUTION_NHWC_F32, grouped_1x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001423 ConvolutionOperatorTester()
1424 .input_size(20, 19)
1425 .padding_width(1)
1426 .kernel_size(1, 3)
1427 .groups(2)
1428 .group_input_channels(17)
1429 .group_output_channels(15)
1430 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001431 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001432}
1433
Marat Dukhanefc47b82019-11-18 09:25:38 -08001434TEST(CONVOLUTION_NHWC_F32, 3x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001435 ConvolutionOperatorTester()
1436 .input_size(19, 20)
1437 .padding_height(1)
1438 .kernel_size(3, 1)
1439 .group_input_channels(17)
1440 .group_output_channels(15)
1441 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001442 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001443}
1444
Marat Dukhanefc47b82019-11-18 09:25:38 -08001445TEST(CONVOLUTION_NHWC_F32, grouped_3x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001446 ConvolutionOperatorTester()
1447 .input_size(19, 20)
1448 .padding_height(1)
1449 .kernel_size(3, 1)
1450 .groups(2)
1451 .group_input_channels(17)
1452 .group_output_channels(15)
1453 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001454 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001455}
1456
Marat Dukhanefc47b82019-11-18 09:25:38 -08001457TEST(CONVOLUTION_NHWC_F32, 3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001458 ConvolutionOperatorTester()
1459 .input_size(13, 12)
1460 .padding(1)
1461 .kernel_size(3, 3)
1462 .group_input_channels(15)
1463 .group_output_channels(17)
1464 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001465 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001466}
1467
Marat Dukhanefc47b82019-11-18 09:25:38 -08001468TEST(CONVOLUTION_NHWC_F32, 3x3_without_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001469 ConvolutionOperatorTester()
1470 .input_size(13, 12)
1471 .kernel_size(3, 3)
1472 .group_input_channels(15)
1473 .group_output_channels(17)
1474 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001475 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001476}
1477
Marat Dukhanefc47b82019-11-18 09:25:38 -08001478TEST(CONVOLUTION_NHWC_F32, 3x3_with_left_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001479 ConvolutionOperatorTester()
1480 .input_size(13, 12)
1481 .padding_left(1)
1482 .kernel_size(3, 3)
1483 .group_input_channels(15)
1484 .group_output_channels(17)
1485 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001486 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001487}
1488
Marat Dukhanefc47b82019-11-18 09:25:38 -08001489TEST(CONVOLUTION_NHWC_F32, 3x3_with_right_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001490 ConvolutionOperatorTester()
1491 .input_size(13, 12)
1492 .padding_right(1)
1493 .kernel_size(3, 3)
1494 .group_input_channels(15)
1495 .group_output_channels(17)
1496 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001497 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001498}
1499
Marat Dukhanefc47b82019-11-18 09:25:38 -08001500TEST(CONVOLUTION_NHWC_F32, 3x3_with_top_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001501 ConvolutionOperatorTester()
1502 .input_size(13, 12)
1503 .padding_top(1)
1504 .kernel_size(3, 3)
1505 .group_input_channels(15)
1506 .group_output_channels(17)
1507 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001508 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001509}
1510
Marat Dukhanefc47b82019-11-18 09:25:38 -08001511TEST(CONVOLUTION_NHWC_F32, 3x3_with_bottom_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001512 ConvolutionOperatorTester()
1513 .input_size(13, 12)
1514 .padding_bottom(1)
1515 .kernel_size(3, 3)
1516 .group_input_channels(15)
1517 .group_output_channels(17)
1518 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001519 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001520}
1521
Marat Dukhanefc47b82019-11-18 09:25:38 -08001522TEST(CONVOLUTION_NHWC_F32, 3x3_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001523 ConvolutionOperatorTester()
1524 .input_size(13, 12)
1525 .padding(1)
1526 .kernel_size(3, 3)
1527 .input_pixel_stride(22)
1528 .group_input_channels(15)
1529 .group_output_channels(17)
1530 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001531 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001532}
1533
Marat Dukhanefc47b82019-11-18 09:25:38 -08001534TEST(CONVOLUTION_NHWC_F32, 3x3_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001535 ConvolutionOperatorTester()
1536 .input_size(13, 12)
1537 .padding(1)
1538 .kernel_size(3, 3)
1539 .output_pixel_stride(23)
1540 .group_input_channels(15)
1541 .group_output_channels(17)
1542 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001543 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001544}
1545
Marat Dukhanefc47b82019-11-18 09:25:38 -08001546TEST(CONVOLUTION_NHWC_F32, 3x3_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07001547 ConvolutionOperatorTester()
1548 .has_bias(false)
1549 .input_size(10, 9)
1550 .padding(1)
1551 .kernel_size(3, 3)
1552 .group_input_channels(15)
1553 .group_output_channels(17)
1554 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001555 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07001556}
1557
Marat Dukhanefc47b82019-11-18 09:25:38 -08001558TEST(CONVOLUTION_NHWC_F32, 3x3_with_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001559 ConvolutionOperatorTester()
1560 .batch_size(3)
1561 .input_size(10, 9)
1562 .padding(1)
1563 .kernel_size(3, 3)
1564 .group_input_channels(15)
1565 .group_output_channels(17)
1566 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001567 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001568}
1569
Marat Dukhanefc47b82019-11-18 09:25:38 -08001570TEST(CONVOLUTION_NHWC_F32, grouped_3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001571 ConvolutionOperatorTester()
1572 .input_size(10, 11)
1573 .padding(1)
1574 .kernel_size(3, 3)
1575 .groups(2)
1576 .group_input_channels(14)
1577 .group_output_channels(13)
1578 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001579 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001580}
1581
Marat Dukhanefc47b82019-11-18 09:25:38 -08001582TEST(CONVOLUTION_NHWC_F32, grouped_3x3_without_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001583 ConvolutionOperatorTester()
1584 .input_size(13, 12)
1585 .kernel_size(3, 3)
1586 .group_input_channels(15)
1587 .group_output_channels(17)
1588 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001589 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001590}
1591
Marat Dukhanefc47b82019-11-18 09:25:38 -08001592TEST(CONVOLUTION_NHWC_F32, grouped_3x3_with_left_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001593 ConvolutionOperatorTester()
1594 .input_size(10, 11)
1595 .padding_left(1)
1596 .kernel_size(3, 3)
1597 .groups(2)
1598 .group_input_channels(14)
1599 .group_output_channels(13)
1600 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001601 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001602}
1603
Marat Dukhanefc47b82019-11-18 09:25:38 -08001604TEST(CONVOLUTION_NHWC_F32, grouped_3x3_with_right_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001605 ConvolutionOperatorTester()
1606 .input_size(10, 11)
1607 .padding_right(1)
1608 .kernel_size(3, 3)
1609 .groups(2)
1610 .group_input_channels(14)
1611 .group_output_channels(13)
1612 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001613 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001614}
1615
Marat Dukhanefc47b82019-11-18 09:25:38 -08001616TEST(CONVOLUTION_NHWC_F32, grouped_3x3_with_top_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001617 ConvolutionOperatorTester()
1618 .input_size(10, 11)
1619 .padding_top(1)
1620 .kernel_size(3, 3)
1621 .groups(2)
1622 .group_input_channels(14)
1623 .group_output_channels(13)
1624 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001625 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001626}
1627
Marat Dukhanefc47b82019-11-18 09:25:38 -08001628TEST(CONVOLUTION_NHWC_F32, grouped_3x3_with_bottom_padding) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001629 ConvolutionOperatorTester()
1630 .input_size(10, 11)
1631 .padding_bottom(1)
1632 .kernel_size(3, 3)
1633 .groups(2)
1634 .group_input_channels(14)
1635 .group_output_channels(13)
1636 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001637 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001638}
1639
Marat Dukhanefc47b82019-11-18 09:25:38 -08001640TEST(CONVOLUTION_NHWC_F32, grouped_3x3_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001641 ConvolutionOperatorTester()
1642 .input_size(10, 11)
1643 .padding(1)
1644 .kernel_size(3, 3)
1645 .groups(2)
1646 .input_pixel_stride(29)
1647 .group_input_channels(14)
1648 .group_output_channels(13)
1649 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001650 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001651}
1652
Marat Dukhanefc47b82019-11-18 09:25:38 -08001653TEST(CONVOLUTION_NHWC_F32, grouped_3x3_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001654 ConvolutionOperatorTester()
1655 .input_size(10, 11)
1656 .padding(1)
1657 .kernel_size(3, 3)
1658 .groups(2)
1659 .output_pixel_stride(31)
1660 .group_input_channels(14)
1661 .group_output_channels(13)
1662 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001663 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001664}
1665
Marat Dukhanefc47b82019-11-18 09:25:38 -08001666TEST(CONVOLUTION_NHWC_F32, grouped_3x3_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07001667 ConvolutionOperatorTester()
1668 .has_bias(false)
1669 .input_size(10, 11)
1670 .padding(1)
1671 .kernel_size(3, 3)
1672 .groups(2)
1673 .group_input_channels(14)
1674 .group_output_channels(13)
1675 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001676 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07001677}
1678
Marat Dukhanefc47b82019-11-18 09:25:38 -08001679TEST(CONVOLUTION_NHWC_F32, grouped_3x3_with_batch) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001680 ConvolutionOperatorTester()
1681 .batch_size(3)
1682 .input_size(10, 11)
1683 .padding(1)
1684 .kernel_size(3, 3)
1685 .groups(2)
1686 .group_input_channels(14)
1687 .group_output_channels(13)
1688 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001689 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001690}
1691
Marat Dukhanefc47b82019-11-18 09:25:38 -08001692TEST(CONVOLUTION_NHWC_F32, 3x3s2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001693 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -07001694 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -07001695 .padding(1)
1696 .kernel_size(3, 3)
1697 .subsampling(2)
1698 .group_input_channels(27)
1699 .group_output_channels(19)
1700 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001701 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001702}
1703
Marat Dukhanefc47b82019-11-18 09:25:38 -08001704TEST(CONVOLUTION_NHWC_F32, 3x3s2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -07001705 for (size_t input_height = 13; input_height <= 14; input_height++) {
1706 for (size_t input_width = 13; input_width <= 14; input_width++) {
1707 ConvolutionOperatorTester()
1708 .input_size(input_height, input_width)
1709 .padding_tf_same(true)
1710 .kernel_size(3, 3)
1711 .subsampling(2)
1712 .group_input_channels(27)
1713 .group_output_channels(19)
1714 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001715 .TestNHWCxF32();
Marat Dukhan8440fde2019-10-24 12:46:13 -07001716 }
1717 }
1718}
1719
Marat Dukhanefc47b82019-11-18 09:25:38 -08001720TEST(CONVOLUTION_NHWC_F32, 3x3s1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001721 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -07001722 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -07001723 .padding(1)
1724 .kernel_size(3, 3)
1725 .subsampling(1, 2)
1726 .group_input_channels(27)
1727 .group_output_channels(19)
1728 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001729 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001730}
1731
Marat Dukhanefc47b82019-11-18 09:25:38 -08001732TEST(CONVOLUTION_NHWC_F32, 3x3s1x2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -07001733 for (size_t input_height = 13; input_height <= 14; input_height++) {
1734 for (size_t input_width = 13; input_width <= 14; input_width++) {
1735 ConvolutionOperatorTester()
1736 .input_size(input_height, input_width)
1737 .padding_tf_same(true)
1738 .kernel_size(3, 3)
1739 .subsampling(1, 2)
1740 .group_input_channels(27)
1741 .group_output_channels(19)
1742 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001743 .TestNHWCxF32();
Marat Dukhan8440fde2019-10-24 12:46:13 -07001744 }
1745 }
1746}
1747
Marat Dukhanefc47b82019-11-18 09:25:38 -08001748TEST(CONVOLUTION_NHWC_F32, 3x3s2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001749 ConvolutionOperatorTester()
Marat Dukhan8440fde2019-10-24 12:46:13 -07001750 .input_size(14, 13)
XNNPACK Teamb455b122019-09-27 18:10:33 -07001751 .padding(1)
1752 .kernel_size(3, 3)
1753 .subsampling(2, 1)
1754 .group_input_channels(27)
1755 .group_output_channels(19)
1756 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001757 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001758}
1759
Marat Dukhanefc47b82019-11-18 09:25:38 -08001760TEST(CONVOLUTION_NHWC_F32, 3x3s2x1_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -07001761 for (size_t input_height = 13; input_height <= 14; input_height++) {
1762 for (size_t input_width = 13; input_width <= 14; input_width++) {
1763 ConvolutionOperatorTester()
1764 .input_size(input_height, input_width)
1765 .padding_tf_same(true)
1766 .kernel_size(3, 3)
1767 .subsampling(2, 1)
1768 .group_input_channels(27)
1769 .group_output_channels(19)
1770 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001771 .TestNHWCxF32();
Marat Dukhan8440fde2019-10-24 12:46:13 -07001772 }
1773 }
1774}
1775
Marat Dukhanefc47b82019-11-18 09:25:38 -08001776TEST(CONVOLUTION_NHWC_F32, 3x3d2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001777 ConvolutionOperatorTester()
1778 .input_size(13, 14)
1779 .padding(2)
1780 .kernel_size(3, 3)
1781 .dilation(2)
1782 .group_input_channels(27)
1783 .group_output_channels(19)
1784 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001785 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001786}
1787
Marat Dukhanefc47b82019-11-18 09:25:38 -08001788TEST(CONVOLUTION_NHWC_F32, 3x3d1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001789 ConvolutionOperatorTester()
1790 .input_size(14, 15)
1791 .padding(1, 2)
1792 .kernel_size(3, 3)
1793 .dilation(1, 2)
1794 .group_input_channels(27)
1795 .group_output_channels(19)
1796 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001797 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001798}
1799
Marat Dukhanefc47b82019-11-18 09:25:38 -08001800TEST(CONVOLUTION_NHWC_F32, 3x3d2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001801 ConvolutionOperatorTester()
1802 .input_size(15, 14)
1803 .padding(2, 1)
1804 .kernel_size(3, 3)
1805 .dilation(2, 1)
1806 .group_input_channels(27)
1807 .group_output_channels(19)
1808 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001809 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001810}
1811
Marat Dukhanefc47b82019-11-18 09:25:38 -08001812TEST(CONVOLUTION_NHWC_F32, unioutput_3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001813 ConvolutionOperatorTester()
1814 .input_size(3, 3)
1815 .padding(1)
1816 .kernel_size(3, 3)
1817 .group_input_channels(23)
1818 .group_output_channels(19)
1819 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001820 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001821}
1822
Marat Dukhanefc47b82019-11-18 09:25:38 -08001823TEST(CONVOLUTION_NHWC_F32, unioutput_3x3_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001824 ConvolutionOperatorTester()
1825 .input_size(3, 3)
1826 .padding(1)
1827 .kernel_size(3, 3)
1828 .group_input_channels(23)
1829 .group_output_channels(19)
1830 .qmin(128)
1831 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001832 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001833}
1834
Marat Dukhanefc47b82019-11-18 09:25:38 -08001835TEST(CONVOLUTION_NHWC_F32, unioutput_3x3_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001836 ConvolutionOperatorTester()
1837 .input_size(3, 3)
1838 .padding(1)
1839 .kernel_size(3, 3)
1840 .group_input_channels(23)
1841 .group_output_channels(19)
1842 .qmax(128)
1843 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001844 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001845}
1846
Marat Dukhanefc47b82019-11-18 09:25:38 -08001847TEST(CONVOLUTION_NHWC_F32, unioutput_3x3_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001848 ConvolutionOperatorTester()
1849 .input_size(3, 3)
1850 .padding(1)
1851 .kernel_size(3, 3)
1852 .input_pixel_stride(28)
1853 .group_input_channels(23)
1854 .group_output_channels(19)
1855 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001856 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001857}
1858
Marat Dukhanefc47b82019-11-18 09:25:38 -08001859TEST(CONVOLUTION_NHWC_F32, unioutput_3x3_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001860 ConvolutionOperatorTester()
1861 .input_size(3, 3)
1862 .padding(1)
1863 .kernel_size(3, 3)
1864 .output_pixel_stride(29)
1865 .group_input_channels(23)
1866 .group_output_channels(19)
1867 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001868 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001869}
1870
Marat Dukhanefc47b82019-11-18 09:25:38 -08001871TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001872 ConvolutionOperatorTester()
1873 .input_size(3, 3)
1874 .padding(1)
1875 .kernel_size(3, 3)
1876 .groups(2)
1877 .group_input_channels(17)
1878 .group_output_channels(13)
1879 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001880 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001881}
1882
Marat Dukhanefc47b82019-11-18 09:25:38 -08001883TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_3x3_with_qmin) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001884 ConvolutionOperatorTester()
1885 .input_size(3, 3)
1886 .padding(1)
1887 .kernel_size(3, 3)
1888 .groups(2)
1889 .group_input_channels(17)
1890 .group_output_channels(13)
1891 .qmin(128)
1892 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001893 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001894}
1895
Marat Dukhanefc47b82019-11-18 09:25:38 -08001896TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_3x3_with_qmax) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001897 ConvolutionOperatorTester()
1898 .input_size(3, 3)
1899 .padding(1)
1900 .kernel_size(3, 3)
1901 .groups(2)
1902 .group_input_channels(17)
1903 .group_output_channels(13)
1904 .qmax(128)
1905 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001906 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001907}
1908
Marat Dukhanefc47b82019-11-18 09:25:38 -08001909TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_3x3_with_input_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001910 ConvolutionOperatorTester()
1911 .input_size(3, 3)
1912 .padding(1)
1913 .kernel_size(3, 3)
1914 .groups(2)
1915 .input_pixel_stride(37)
1916 .group_input_channels(17)
1917 .group_output_channels(13)
1918 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001919 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001920}
1921
Marat Dukhanefc47b82019-11-18 09:25:38 -08001922TEST(CONVOLUTION_NHWC_F32, unioutput_grouped_3x3_with_output_stride) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001923 ConvolutionOperatorTester()
1924 .input_size(3, 3)
1925 .padding(1)
1926 .kernel_size(3, 3)
1927 .groups(2)
1928 .output_pixel_stride(41)
1929 .group_input_channels(17)
1930 .group_output_channels(13)
1931 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001932 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001933}
1934
Marat Dukhanefc47b82019-11-18 09:25:38 -08001935TEST(CONVOLUTION_NHWC_F32, depthwise_1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001936 ConvolutionOperatorTester()
1937 .input_size(15, 14)
1938 .kernel_size(1, 1)
1939 .groups(24)
1940 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001941 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001942}
1943
Marat Dukhanefc47b82019-11-18 09:25:38 -08001944TEST(CONVOLUTION_NHWC_F32, depthwise_1x1_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07001945 ConvolutionOperatorTester()
1946 .has_bias(false)
1947 .input_size(15, 14)
1948 .kernel_size(1, 1)
1949 .groups(24)
1950 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001951 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07001952}
1953
Marat Dukhanefc47b82019-11-18 09:25:38 -08001954TEST(CONVOLUTION_NHWC_F32, depthwise_2x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001955 ConvolutionOperatorTester()
1956 .input_size(15, 14)
1957 .padding(1, 1)
1958 .kernel_size(2, 2)
1959 .groups(24)
1960 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001961 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001962}
1963
Marat Dukhanefc47b82019-11-18 09:25:38 -08001964TEST(CONVOLUTION_NHWC_F32, depthwise_2x2_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07001965 ConvolutionOperatorTester()
1966 .has_bias(false)
1967 .input_size(15, 14)
1968 .padding(1, 1)
1969 .kernel_size(2, 2)
1970 .groups(24)
1971 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001972 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07001973}
1974
Marat Dukhanefc47b82019-11-18 09:25:38 -08001975TEST(CONVOLUTION_NHWC_F32, depthwise_2x2s2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001976 ConvolutionOperatorTester()
1977 .input_size(15, 14)
1978 .padding(1, 1)
1979 .kernel_size(2, 2)
1980 .subsampling(2)
1981 .groups(27)
1982 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001983 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001984}
1985
Marat Dukhanefc47b82019-11-18 09:25:38 -08001986TEST(CONVOLUTION_NHWC_F32, depthwise_2x2s1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001987 ConvolutionOperatorTester()
1988 .input_size(15, 14)
1989 .padding(1, 1)
1990 .kernel_size(2, 2)
1991 .subsampling(1, 2)
1992 .groups(27)
1993 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08001994 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07001995}
1996
Marat Dukhanefc47b82019-11-18 09:25:38 -08001997TEST(CONVOLUTION_NHWC_F32, depthwise_2x2s2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07001998 ConvolutionOperatorTester()
1999 .input_size(15, 14)
2000 .padding(1, 1)
2001 .kernel_size(2, 2)
2002 .subsampling(2, 1)
2003 .groups(27)
2004 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002005 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002006}
2007
Marat Dukhanefc47b82019-11-18 09:25:38 -08002008TEST(CONVOLUTION_NHWC_F32, depthwise_2x2d2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002009 ConvolutionOperatorTester()
2010 .input_size(15, 14)
2011 .padding(1, 1)
2012 .kernel_size(2, 2)
2013 .dilation(2)
2014 .groups(27)
2015 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002016 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002017}
2018
Marat Dukhanefc47b82019-11-18 09:25:38 -08002019TEST(CONVOLUTION_NHWC_F32, depthwise_2x2d1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002020 ConvolutionOperatorTester()
2021 .input_size(15, 14)
2022 .padding(1, 1)
2023 .kernel_size(2, 2)
2024 .dilation(1, 2)
2025 .groups(27)
2026 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002027 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002028}
2029
Marat Dukhanefc47b82019-11-18 09:25:38 -08002030TEST(CONVOLUTION_NHWC_F32, depthwise_2x2d2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002031 ConvolutionOperatorTester()
2032 .input_size(15, 14)
2033 .padding(1, 1)
2034 .kernel_size(2, 2)
2035 .dilation(2, 1)
2036 .groups(27)
2037 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002038 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002039}
2040
Marat Dukhanefc47b82019-11-18 09:25:38 -08002041TEST(CONVOLUTION_NHWC_F32, depthwise_3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002042 ConvolutionOperatorTester()
2043 .input_size(15, 14)
2044 .padding(1, 1)
2045 .kernel_size(3, 3)
2046 .groups(24)
2047 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002048 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002049}
2050
Marat Dukhanefc47b82019-11-18 09:25:38 -08002051TEST(CONVOLUTION_NHWC_F32, depthwise_3x3_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07002052 ConvolutionOperatorTester()
2053 .has_bias(false)
2054 .input_size(15, 14)
2055 .padding(1, 1)
2056 .kernel_size(3, 3)
2057 .groups(24)
2058 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002059 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07002060}
2061
Marat Dukhanefc47b82019-11-18 09:25:38 -08002062TEST(CONVOLUTION_NHWC_F32, depthwise_3x3s2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002063 ConvolutionOperatorTester()
2064 .input_size(15, 14)
2065 .padding(1, 1)
2066 .kernel_size(3, 3)
2067 .subsampling(2)
2068 .groups(27)
2069 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002070 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002071}
2072
Marat Dukhanefc47b82019-11-18 09:25:38 -08002073TEST(CONVOLUTION_NHWC_F32, depthwise_3x3s2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -07002074 for (size_t input_height = 14; input_height <= 15; input_height++) {
2075 for (size_t input_width = 14; input_width <= 15; input_width++) {
2076 ConvolutionOperatorTester()
2077 .input_size(input_height, input_width)
2078 .padding_tf_same(true)
2079 .kernel_size(3, 3)
2080 .subsampling(2)
2081 .groups(27)
2082 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002083 .TestNHWCxF32();
Marat Dukhan8440fde2019-10-24 12:46:13 -07002084 }
2085 }
2086}
2087
Marat Dukhanefc47b82019-11-18 09:25:38 -08002088TEST(CONVOLUTION_NHWC_F32, depthwise_3x3s1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002089 ConvolutionOperatorTester()
2090 .input_size(15, 14)
2091 .padding(1, 1)
2092 .kernel_size(3, 3)
2093 .subsampling(1, 2)
2094 .groups(27)
2095 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002096 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002097}
2098
Marat Dukhanefc47b82019-11-18 09:25:38 -08002099TEST(CONVOLUTION_NHWC_F32, depthwise_3x3s1x2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -07002100 for (size_t input_height = 14; input_height <= 15; input_height++) {
2101 for (size_t input_width = 14; input_width <= 15; input_width++) {
2102 ConvolutionOperatorTester()
2103 .input_size(input_height, input_width)
2104 .padding_tf_same(true)
2105 .kernel_size(3, 3)
2106 .subsampling(1, 2)
2107 .groups(27)
2108 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002109 .TestNHWCxF32();
Marat Dukhan8440fde2019-10-24 12:46:13 -07002110 }
2111 }
2112}
2113
Marat Dukhanefc47b82019-11-18 09:25:38 -08002114TEST(CONVOLUTION_NHWC_F32, depthwise_3x3s2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002115 ConvolutionOperatorTester()
2116 .input_size(15, 14)
2117 .padding(1, 1)
2118 .kernel_size(3, 3)
2119 .subsampling(2, 1)
2120 .groups(27)
2121 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002122 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002123}
2124
Marat Dukhanefc47b82019-11-18 09:25:38 -08002125TEST(CONVOLUTION_NHWC_F32, depthwise_3x3s2x1_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -07002126 for (size_t input_height = 14; input_height <= 15; input_height++) {
2127 for (size_t input_width = 14; input_width <= 15; input_width++) {
2128 ConvolutionOperatorTester()
2129 .input_size(input_height, input_width)
2130 .padding_tf_same(true)
2131 .kernel_size(3, 3)
2132 .subsampling(2, 1)
2133 .groups(27)
2134 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002135 .TestNHWCxF32();
Marat Dukhan8440fde2019-10-24 12:46:13 -07002136 }
2137 }
2138}
2139
Marat Dukhanefc47b82019-11-18 09:25:38 -08002140TEST(CONVOLUTION_NHWC_F32, depthwise_3x3d2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002141 ConvolutionOperatorTester()
2142 .input_size(15, 14)
2143 .padding(1, 1)
2144 .kernel_size(3, 3)
2145 .dilation(2)
2146 .groups(27)
2147 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002148 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002149}
2150
Marat Dukhanefc47b82019-11-18 09:25:38 -08002151TEST(CONVOLUTION_NHWC_F32, depthwise_3x3d1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002152 ConvolutionOperatorTester()
2153 .input_size(15, 14)
2154 .padding(1, 1)
2155 .kernel_size(3, 3)
2156 .dilation(1, 2)
2157 .groups(27)
2158 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002159 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002160}
2161
Marat Dukhanefc47b82019-11-18 09:25:38 -08002162TEST(CONVOLUTION_NHWC_F32, depthwise_3x3d2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002163 ConvolutionOperatorTester()
2164 .input_size(15, 14)
2165 .padding(1, 1)
2166 .kernel_size(3, 3)
2167 .dilation(2, 1)
2168 .groups(27)
2169 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002170 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002171}
2172
Marat Dukhanefc47b82019-11-18 09:25:38 -08002173TEST(CONVOLUTION_NHWC_F32, depthwise_5x5) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002174 ConvolutionOperatorTester()
2175 .input_size(15, 14)
2176 .padding(2, 2)
2177 .kernel_size(5, 5)
2178 .groups(27)
2179 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002180 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002181}
2182
Marat Dukhanefc47b82019-11-18 09:25:38 -08002183TEST(CONVOLUTION_NHWC_F32, depthwise_5x5_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07002184 ConvolutionOperatorTester()
2185 .has_bias(false)
2186 .input_size(15, 14)
2187 .padding(2, 2)
2188 .kernel_size(5, 5)
2189 .groups(27)
2190 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002191 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07002192}
2193
Marat Dukhanefc47b82019-11-18 09:25:38 -08002194TEST(CONVOLUTION_NHWC_F32, depthwise_5x5s2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002195 ConvolutionOperatorTester()
2196 .input_size(15, 14)
2197 .padding(2, 2)
2198 .kernel_size(5, 5)
2199 .subsampling(2)
2200 .groups(27)
2201 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002202 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002203}
2204
Marat Dukhanefc47b82019-11-18 09:25:38 -08002205TEST(CONVOLUTION_NHWC_F32, depthwise_5x5s1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002206 ConvolutionOperatorTester()
2207 .input_size(15, 14)
2208 .padding(2, 2)
2209 .kernel_size(5, 5)
2210 .subsampling(1, 2)
2211 .groups(27)
2212 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002213 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002214}
2215
Marat Dukhanefc47b82019-11-18 09:25:38 -08002216TEST(CONVOLUTION_NHWC_F32, depthwise_5x5s2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002217 ConvolutionOperatorTester()
2218 .input_size(15, 14)
2219 .padding(2, 2)
2220 .kernel_size(5, 5)
2221 .subsampling(2, 1)
2222 .groups(27)
2223 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002224 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002225}
2226
Marat Dukhanefc47b82019-11-18 09:25:38 -08002227TEST(CONVOLUTION_NHWC_F32, depthwise_5x5d2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002228 ConvolutionOperatorTester()
2229 .input_size(15, 14)
2230 .padding(2, 2)
2231 .kernel_size(5, 5)
2232 .dilation(2)
2233 .groups(27)
2234 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002235 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002236}
2237
Marat Dukhanefc47b82019-11-18 09:25:38 -08002238TEST(CONVOLUTION_NHWC_F32, depthwise_5x5d1x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002239 ConvolutionOperatorTester()
2240 .input_size(15, 14)
2241 .padding(2, 2)
2242 .kernel_size(5, 5)
2243 .dilation(1, 2)
2244 .groups(27)
2245 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002246 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002247}
2248
Marat Dukhanefc47b82019-11-18 09:25:38 -08002249TEST(CONVOLUTION_NHWC_F32, depthwise_5x5d2x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002250 ConvolutionOperatorTester()
2251 .input_size(15, 14)
2252 .padding(2, 2)
2253 .kernel_size(5, 5)
2254 .dilation(2, 1)
2255 .groups(27)
2256 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002257 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002258}
2259
Marat Dukhanefc47b82019-11-18 09:25:38 -08002260TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 1x1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002261 ConvolutionOperatorTester()
2262 .depthwise_layout(true)
2263 .input_size(15, 14)
2264 .kernel_size(1, 1)
2265 .groups(24)
2266 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002267 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002268}
2269
Marat Dukhanefc47b82019-11-18 09:25:38 -08002270TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 1x1_with_depth_multiplier) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002271 ConvolutionOperatorTester()
2272 .depthwise_layout(true)
2273 .input_size(15, 14)
2274 .kernel_size(1, 1)
2275 .groups(24)
2276 .group_output_channels(3)
2277 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002278 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002279}
2280
Marat Dukhanefc47b82019-11-18 09:25:38 -08002281TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 1x1_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07002282 ConvolutionOperatorTester()
2283 .depthwise_layout(true)
2284 .has_bias(false)
2285 .input_size(15, 14)
2286 .kernel_size(1, 1)
2287 .groups(24)
2288 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002289 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07002290}
2291
Marat Dukhanefc47b82019-11-18 09:25:38 -08002292TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 2x2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002293 ConvolutionOperatorTester()
2294 .depthwise_layout(true)
2295 .input_size(15, 14)
2296 .padding(1, 1)
2297 .kernel_size(2, 2)
2298 .groups(24)
2299 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002300 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002301}
2302
Marat Dukhanefc47b82019-11-18 09:25:38 -08002303TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 2x2_with_depth_multiplier) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002304 ConvolutionOperatorTester()
2305 .depthwise_layout(true)
2306 .input_size(15, 14)
2307 .padding(1, 1)
2308 .kernel_size(2, 2)
2309 .groups(24)
2310 .group_output_channels(3)
2311 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002312 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002313}
2314
Marat Dukhanefc47b82019-11-18 09:25:38 -08002315TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 2x2_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07002316 ConvolutionOperatorTester()
2317 .depthwise_layout(true)
2318 .has_bias(false)
2319 .input_size(15, 14)
2320 .padding(1, 1)
2321 .kernel_size(2, 2)
2322 .groups(24)
2323 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002324 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07002325}
2326
Marat Dukhanefc47b82019-11-18 09:25:38 -08002327TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 3x3) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002328 ConvolutionOperatorTester()
2329 .depthwise_layout(true)
2330 .input_size(15, 14)
2331 .padding(1, 1)
2332 .kernel_size(3, 3)
2333 .groups(24)
2334 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002335 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002336}
2337
Marat Dukhanefc47b82019-11-18 09:25:38 -08002338TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 3x3_with_depth_multiplier) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002339 ConvolutionOperatorTester()
2340 .depthwise_layout(true)
2341 .input_size(15, 14)
2342 .padding(1, 1)
2343 .kernel_size(3, 3)
2344 .groups(24)
2345 .group_output_channels(3)
2346 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002347 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002348}
2349
Marat Dukhanefc47b82019-11-18 09:25:38 -08002350TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 3x3_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07002351 ConvolutionOperatorTester()
2352 .depthwise_layout(true)
2353 .has_bias(false)
2354 .input_size(15, 14)
2355 .padding(1, 1)
2356 .kernel_size(3, 3)
2357 .groups(24)
2358 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002359 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07002360}
2361
Marat Dukhanefc47b82019-11-18 09:25:38 -08002362TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 3x3s2_with_tf_same_padding) {
Marat Dukhan8440fde2019-10-24 12:46:13 -07002363 for (size_t input_height = 14; input_height <= 15; input_height++) {
2364 for (size_t input_width = 14; input_width <= 15; input_width++) {
2365 ConvolutionOperatorTester()
2366 .depthwise_layout(true)
2367 .input_size(input_height, input_width)
2368 .padding_tf_same(true)
2369 .kernel_size(3, 3)
2370 .groups(24)
2371 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002372 .TestNHWCxF32();
Marat Dukhan8440fde2019-10-24 12:46:13 -07002373 }
2374 }
2375}
2376
Marat Dukhanefc47b82019-11-18 09:25:38 -08002377TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 5x5) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002378 ConvolutionOperatorTester()
2379 .depthwise_layout(true)
2380 .input_size(15, 14)
2381 .padding(2, 2)
2382 .kernel_size(5, 5)
2383 .groups(24)
2384 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002385 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002386}
2387
Marat Dukhanefc47b82019-11-18 09:25:38 -08002388TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 5x5_with_depth_multiplier) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002389 ConvolutionOperatorTester()
2390 .depthwise_layout(true)
2391 .input_size(15, 14)
2392 .padding(2, 2)
2393 .kernel_size(5, 5)
2394 .groups(24)
2395 .group_output_channels(3)
2396 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002397 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002398}
2399
Marat Dukhanefc47b82019-11-18 09:25:38 -08002400TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 5x5_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07002401 ConvolutionOperatorTester()
2402 .depthwise_layout(true)
2403 .has_bias(false)
2404 .input_size(15, 14)
2405 .padding(2, 2)
2406 .kernel_size(5, 5)
2407 .groups(24)
2408 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002409 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07002410}
2411
Marat Dukhanefc47b82019-11-18 09:25:38 -08002412TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 7x7) {
XNNPACK Teamb455b122019-09-27 18:10:33 -07002413 ConvolutionOperatorTester()
2414 .depthwise_layout(true)
2415 .input_size(15, 14)
2416 .padding(3, 3)
2417 .kernel_size(7, 7)
2418 .groups(24)
2419 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002420 .TestNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002421}
2422
Marat Dukhanefc47b82019-11-18 09:25:38 -08002423TEST(DEPTHWISE_CONVOLUTION_NHWC_F32, 7x7_without_bias) {
Marat Dukhanf568f082019-10-30 09:47:07 -07002424 ConvolutionOperatorTester()
2425 .depthwise_layout(true)
2426 .has_bias(false)
2427 .input_size(15, 14)
2428 .padding(3, 3)
2429 .kernel_size(7, 7)
2430 .groups(24)
2431 .iterations(3)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002432 .TestNHWCxF32();
Marat Dukhanf568f082019-10-30 09:47:07 -07002433}
2434
Marat Dukhan202eed02019-11-20 16:21:10 -08002435TEST(CONVOLUTION_NHWC_F32, setup_changing_input_buffer) {
2436 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
2437 ConvolutionOperatorTester()
2438 .batch_size(3)
2439 .input_height(8)
2440 .input_width(8)
2441 .kernel_height(5)
2442 .kernel_width(3)
2443 .group_input_channels(15)
2444 .group_output_channels(17)
2445 .TestSetupNHWCxF32();
2446}
2447
2448TEST(CONVOLUTION_NHWC_F32, setup_changing_input_buffer_grouped) {
2449 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
2450 ConvolutionOperatorTester()
2451 .batch_size(3)
2452 .input_height(8)
2453 .input_width(8)
2454 .kernel_height(5)
2455 .kernel_width(3)
2456 .groups(2)
2457 .group_input_channels(15)
2458 .group_output_channels(17)
2459 .TestSetupNHWCxF32();
2460}
2461
2462TEST(CONVOLUTION_NHWC_F32, setup_changing_input_buffer_depthwise) {
2463 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
2464 ConvolutionOperatorTester()
2465 .batch_size(3)
2466 .input_height(8)
2467 .input_width(8)
2468 .kernel_height(3)
2469 .kernel_width(3)
2470 .groups(19)
2471 .group_input_channels(1)
2472 .group_output_channels(1)
2473 .TestSetupNHWCxF32();
2474}
2475
Marat Dukhanefc47b82019-11-18 09:25:38 -08002476TEST(CONVOLUTION_NHWC_F32, setup_increasing_batch) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002477 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002478 ConvolutionOperatorTester()
2479 .batch_size(3)
2480 .next_batch_size(5)
2481 .input_height(8)
2482 .input_width(8)
2483 .kernel_height(5)
2484 .kernel_width(3)
2485 .group_input_channels(15)
2486 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002487 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002488}
2489
Marat Dukhanefc47b82019-11-18 09:25:38 -08002490TEST(CONVOLUTION_NHWC_F32, setup_increasing_batch_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002491 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002492 ConvolutionOperatorTester()
2493 .batch_size(3)
2494 .next_batch_size(5)
2495 .input_height(8)
2496 .input_width(8)
2497 .kernel_height(5)
2498 .kernel_width(3)
2499 .groups(2)
2500 .group_input_channels(15)
2501 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002502 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002503}
2504
Marat Dukhanefc47b82019-11-18 09:25:38 -08002505TEST(CONVOLUTION_NHWC_F32, setup_increasing_batch_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002506 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002507 ConvolutionOperatorTester()
2508 .batch_size(3)
2509 .next_batch_size(5)
2510 .input_height(8)
2511 .input_width(8)
2512 .kernel_height(3)
2513 .kernel_width(3)
2514 .groups(19)
2515 .group_input_channels(1)
2516 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002517 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002518}
2519
Marat Dukhanefc47b82019-11-18 09:25:38 -08002520TEST(CONVOLUTION_NHWC_F32, setup_decreasing_batch) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002521 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002522 ConvolutionOperatorTester()
2523 .batch_size(5)
2524 .next_batch_size(3)
2525 .input_height(8)
2526 .input_width(8)
2527 .kernel_height(5)
2528 .kernel_width(3)
2529 .group_input_channels(15)
2530 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002531 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002532}
2533
Marat Dukhanefc47b82019-11-18 09:25:38 -08002534TEST(CONVOLUTION_NHWC_F32, setup_decreasing_batch_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002535 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002536 ConvolutionOperatorTester()
2537 .batch_size(5)
2538 .next_batch_size(3)
2539 .input_height(8)
2540 .input_width(8)
2541 .kernel_height(5)
2542 .kernel_width(3)
2543 .groups(2)
2544 .group_input_channels(15)
2545 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002546 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002547}
2548
Marat Dukhanefc47b82019-11-18 09:25:38 -08002549TEST(CONVOLUTION_NHWC_F32, setup_decreasing_batch_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002550 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002551 ConvolutionOperatorTester()
2552 .batch_size(5)
2553 .next_batch_size(3)
2554 .input_height(8)
2555 .input_width(8)
2556 .kernel_height(3)
2557 .kernel_width(3)
2558 .groups(19)
2559 .group_input_channels(1)
2560 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002561 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002562}
2563
Marat Dukhanefc47b82019-11-18 09:25:38 -08002564TEST(CONVOLUTION_NHWC_F32, setup_changing_height) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002565 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002566 ConvolutionOperatorTester()
2567 .batch_size(3)
2568 .input_height(8)
2569 .input_width(8)
2570 .next_input_height(9)
2571 .kernel_height(5)
2572 .kernel_width(3)
2573 .group_input_channels(15)
2574 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002575 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002576 ConvolutionOperatorTester()
2577 .batch_size(3)
2578 .input_height(8)
2579 .input_width(8)
2580 .next_input_height(7)
2581 .kernel_height(5)
2582 .kernel_width(3)
2583 .group_input_channels(15)
2584 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002585 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002586}
2587
Marat Dukhanefc47b82019-11-18 09:25:38 -08002588TEST(CONVOLUTION_NHWC_F32, setup_changing_height_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002589 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002590 ConvolutionOperatorTester()
2591 .batch_size(3)
2592 .input_height(8)
2593 .input_width(8)
2594 .next_input_height(9)
2595 .kernel_height(5)
2596 .kernel_width(3)
2597 .groups(2)
2598 .group_input_channels(15)
2599 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002600 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002601 ConvolutionOperatorTester()
2602 .batch_size(3)
2603 .input_height(8)
2604 .input_width(8)
2605 .next_input_height(7)
2606 .kernel_height(5)
2607 .kernel_width(3)
2608 .groups(2)
2609 .group_input_channels(15)
2610 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002611 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002612}
2613
Marat Dukhanefc47b82019-11-18 09:25:38 -08002614TEST(CONVOLUTION_NHWC_F32, setup_changing_height_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002615 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002616 ConvolutionOperatorTester()
2617 .batch_size(3)
2618 .input_height(8)
2619 .input_width(8)
2620 .next_input_height(9)
2621 .kernel_height(3)
2622 .kernel_width(3)
2623 .groups(19)
2624 .group_input_channels(1)
2625 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002626 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002627 ConvolutionOperatorTester()
2628 .batch_size(3)
2629 .input_height(8)
2630 .input_width(8)
2631 .next_input_height(7)
2632 .kernel_height(3)
2633 .kernel_width(3)
2634 .groups(19)
2635 .group_input_channels(1)
2636 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002637 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002638}
2639
Marat Dukhanefc47b82019-11-18 09:25:38 -08002640TEST(CONVOLUTION_NHWC_F32, setup_changing_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002641 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002642 ConvolutionOperatorTester()
2643 .batch_size(3)
2644 .input_height(8)
2645 .input_width(8)
2646 .next_input_width(9)
2647 .kernel_height(5)
2648 .kernel_width(3)
2649 .group_input_channels(15)
2650 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002651 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002652 ConvolutionOperatorTester()
2653 .batch_size(3)
2654 .input_height(8)
2655 .input_width(8)
2656 .next_input_width(7)
2657 .kernel_height(5)
2658 .kernel_width(3)
2659 .group_input_channels(15)
2660 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002661 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002662}
2663
Marat Dukhanefc47b82019-11-18 09:25:38 -08002664TEST(CONVOLUTION_NHWC_F32, setup_changing_width_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002665 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002666 ConvolutionOperatorTester()
2667 .batch_size(3)
2668 .input_height(8)
2669 .input_width(8)
2670 .next_input_width(9)
2671 .kernel_height(5)
2672 .kernel_width(3)
2673 .groups(2)
2674 .group_input_channels(15)
2675 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002676 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002677 ConvolutionOperatorTester()
2678 .batch_size(3)
2679 .input_height(8)
2680 .input_width(8)
2681 .next_input_width(7)
2682 .kernel_height(5)
2683 .kernel_width(3)
2684 .groups(2)
2685 .group_input_channels(15)
2686 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002687 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002688}
2689
Marat Dukhanefc47b82019-11-18 09:25:38 -08002690TEST(CONVOLUTION_NHWC_F32, setup_changing_width_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002691 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002692 ConvolutionOperatorTester()
2693 .batch_size(3)
2694 .input_height(8)
2695 .input_width(8)
2696 .next_input_width(9)
2697 .kernel_height(3)
2698 .kernel_width(3)
2699 .groups(19)
2700 .group_input_channels(1)
2701 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002702 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002703 ConvolutionOperatorTester()
2704 .batch_size(3)
2705 .input_height(8)
2706 .input_width(8)
2707 .next_input_width(7)
2708 .kernel_height(3)
2709 .kernel_width(3)
2710 .groups(19)
2711 .group_input_channels(1)
2712 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002713 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002714}
2715
Marat Dukhanefc47b82019-11-18 09:25:38 -08002716TEST(CONVOLUTION_NHWC_F32, setup_swap_height_and_width) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002717 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002718 ConvolutionOperatorTester()
2719 .batch_size(3)
2720 .input_height(9)
2721 .input_width(8)
2722 .next_input_height(8)
2723 .next_input_width(9)
2724 .kernel_height(5)
2725 .kernel_width(3)
2726 .group_input_channels(15)
2727 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002728 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002729}
2730
Marat Dukhanefc47b82019-11-18 09:25:38 -08002731TEST(CONVOLUTION_NHWC_F32, setup_swap_height_and_width_grouped) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002732 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002733 ConvolutionOperatorTester()
2734 .batch_size(3)
2735 .input_height(9)
2736 .input_width(8)
2737 .next_input_height(8)
2738 .next_input_width(9)
2739 .kernel_height(5)
2740 .kernel_width(3)
2741 .groups(2)
2742 .group_input_channels(15)
2743 .group_output_channels(17)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002744 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002745}
2746
Marat Dukhanefc47b82019-11-18 09:25:38 -08002747TEST(CONVOLUTION_NHWC_F32, setup_swap_height_and_width_depthwise) {
Marat Dukhan04f03be2019-11-19 12:36:47 -08002748 ASSERT_EQ(xnn_status_success, xnn_initialize(nullptr /* allocator */));
XNNPACK Teamb455b122019-09-27 18:10:33 -07002749 ConvolutionOperatorTester()
2750 .batch_size(3)
2751 .input_height(9)
2752 .input_width(8)
2753 .next_input_height(8)
2754 .next_input_width(9)
2755 .kernel_height(3)
2756 .kernel_width(3)
2757 .groups(19)
2758 .group_input_channels(1)
2759 .group_output_channels(1)
Marat Dukhanefc47b82019-11-18 09:25:38 -08002760 .TestSetupNHWCxF32();
XNNPACK Teamb455b122019-09-27 18:10:33 -07002761}