xref: /aosp_15_r20/external/XNNPACK/test/qs8-gavgpool-minmax-rndnu.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates.
2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved.
3*4bdc9457SAndroid Build Coastguard Worker //
4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2020 Google LLC
5*4bdc9457SAndroid Build Coastguard Worker //
6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the
7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree.
8*4bdc9457SAndroid Build Coastguard Worker //
9*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit!
10*4bdc9457SAndroid Build Coastguard Worker //   Specification: test/qs8-gavgpool-minmax-rndnu.yaml
11*4bdc9457SAndroid Build Coastguard Worker //   Generator: tools/generate-gavgpool-test.py
12*4bdc9457SAndroid Build Coastguard Worker 
13*4bdc9457SAndroid Build Coastguard Worker 
14*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h>
15*4bdc9457SAndroid Build Coastguard Worker 
16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h>
17*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h>
18*4bdc9457SAndroid Build Coastguard Worker 
19*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/gavgpool.h>
20*4bdc9457SAndroid Build Coastguard Worker #include "gavgpool-microkernel-tester.h"
21*4bdc9457SAndroid Build Coastguard Worker 
22*4bdc9457SAndroid Build Coastguard Worker 
23*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_eq_8_2pass_fulltile)24*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_eq_8_2pass_fulltile) {
25*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
26*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
27*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
28*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
29*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
30*4bdc9457SAndroid Build Coastguard Worker   }
31*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_eq_8_2pass_fulltile_with_input_stride)32*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_input_stride) {
33*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
34*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
35*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
36*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
37*4bdc9457SAndroid Build Coastguard Worker       .input_stride(11)
38*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
39*4bdc9457SAndroid Build Coastguard Worker   }
40*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_eq_8_2pass_fulltile_with_qmax)41*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_qmax) {
42*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
43*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
44*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
45*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
46*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
47*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
48*4bdc9457SAndroid Build Coastguard Worker   }
49*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_eq_8_2pass_fulltile_with_qmin)50*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_eq_8_2pass_fulltile_with_qmin) {
51*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
52*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
53*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
54*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
55*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
56*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
57*4bdc9457SAndroid Build Coastguard Worker   }
58*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_eq_8_2pass_subtile)59*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_eq_8_2pass_subtile) {
60*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
61*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 8; rows < 14; rows++) {
62*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
63*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
64*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
65*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
66*4bdc9457SAndroid Build Coastguard Worker     }
67*4bdc9457SAndroid Build Coastguard Worker   }
68*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_eq_8_2pass_subtile_with_input_stride)69*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_eq_8_2pass_subtile_with_input_stride) {
70*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
71*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 8; rows < 14; rows++) {
72*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
73*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
74*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
75*4bdc9457SAndroid Build Coastguard Worker         .input_stride(11)
76*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
77*4bdc9457SAndroid Build Coastguard Worker     }
78*4bdc9457SAndroid Build Coastguard Worker   }
79*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_eq_8_multipass_fulltile)80*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_eq_8_multipass_fulltile) {
81*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
82*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 14; rows <= 35; rows += 7) {
83*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
84*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
85*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
86*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
87*4bdc9457SAndroid Build Coastguard Worker     }
88*4bdc9457SAndroid Build Coastguard Worker   }
89*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_eq_8_multipass_fulltile_with_input_stride)90*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_eq_8_multipass_fulltile_with_input_stride) {
91*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
92*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 14; rows <= 35; rows += 7) {
93*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
94*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
95*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
96*4bdc9457SAndroid Build Coastguard Worker         .input_stride(11)
97*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
98*4bdc9457SAndroid Build Coastguard Worker     }
99*4bdc9457SAndroid Build Coastguard Worker   }
100*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_div_8_2pass_fulltile)101*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_div_8_2pass_fulltile) {
102*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
103*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
104*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
105*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
106*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
107*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
108*4bdc9457SAndroid Build Coastguard Worker     }
109*4bdc9457SAndroid Build Coastguard Worker   }
110*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_div_8_2pass_subtile)111*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_div_8_2pass_subtile) {
112*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
113*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
114*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
115*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
116*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
117*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
118*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
119*4bdc9457SAndroid Build Coastguard Worker       }
120*4bdc9457SAndroid Build Coastguard Worker     }
121*4bdc9457SAndroid Build Coastguard Worker   }
122*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_div_8_multipass_fulltile)123*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_div_8_multipass_fulltile) {
124*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
125*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
126*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
127*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
128*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
129*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
130*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
131*4bdc9457SAndroid Build Coastguard Worker       }
132*4bdc9457SAndroid Build Coastguard Worker     }
133*4bdc9457SAndroid Build Coastguard Worker   }
134*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_div_8_multipass_fulltile_with_input_stride)135*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_div_8_multipass_fulltile_with_input_stride) {
136*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
137*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
138*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
139*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
140*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
141*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
142*4bdc9457SAndroid Build Coastguard Worker           .input_stride(131)
143*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
144*4bdc9457SAndroid Build Coastguard Worker       }
145*4bdc9457SAndroid Build Coastguard Worker     }
146*4bdc9457SAndroid Build Coastguard Worker   }
147*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_lt_8_2pass_fulltile)148*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_lt_8_2pass_fulltile) {
149*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
150*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
151*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
152*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
153*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
154*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
155*4bdc9457SAndroid Build Coastguard Worker     }
156*4bdc9457SAndroid Build Coastguard Worker   }
157*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_lt_8_2pass_fulltile_with_qmax)158*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_lt_8_2pass_fulltile_with_qmax) {
159*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
160*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
161*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
162*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
163*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
164*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
165*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
166*4bdc9457SAndroid Build Coastguard Worker     }
167*4bdc9457SAndroid Build Coastguard Worker   }
168*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_lt_8_2pass_fulltile_with_qmin)169*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_lt_8_2pass_fulltile_with_qmin) {
170*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
171*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
172*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
173*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
174*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
175*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
176*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
177*4bdc9457SAndroid Build Coastguard Worker     }
178*4bdc9457SAndroid Build Coastguard Worker   }
179*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_lt_8_2pass_subtile)180*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_lt_8_2pass_subtile) {
181*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
182*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
183*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
184*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
185*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
186*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
187*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
188*4bdc9457SAndroid Build Coastguard Worker       }
189*4bdc9457SAndroid Build Coastguard Worker     }
190*4bdc9457SAndroid Build Coastguard Worker   }
191*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_lt_8_multipass_fulltile)192*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_lt_8_multipass_fulltile) {
193*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
194*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
195*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
196*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
197*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
198*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
199*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
200*4bdc9457SAndroid Build Coastguard Worker       }
201*4bdc9457SAndroid Build Coastguard Worker     }
202*4bdc9457SAndroid Build Coastguard Worker   }
203*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_lt_8_multipass_fulltile_with_input_stride)204*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_lt_8_multipass_fulltile_with_input_stride) {
205*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
206*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
207*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
208*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
209*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
210*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
211*4bdc9457SAndroid Build Coastguard Worker           .input_stride(11)
212*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
213*4bdc9457SAndroid Build Coastguard Worker       }
214*4bdc9457SAndroid Build Coastguard Worker     }
215*4bdc9457SAndroid Build Coastguard Worker   }
216*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_gt_8_2pass_fulltile)217*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_gt_8_2pass_fulltile) {
218*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
219*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
220*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
221*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
222*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
223*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
224*4bdc9457SAndroid Build Coastguard Worker     }
225*4bdc9457SAndroid Build Coastguard Worker   }
226*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_gt_8_2pass_fulltile_with_qmax)227*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_gt_8_2pass_fulltile_with_qmax) {
228*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
229*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
230*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
231*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
232*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
233*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
234*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
235*4bdc9457SAndroid Build Coastguard Worker     }
236*4bdc9457SAndroid Build Coastguard Worker   }
237*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_gt_8_2pass_fulltile_with_qmin)238*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_gt_8_2pass_fulltile_with_qmin) {
239*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
240*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
241*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
242*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
243*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
244*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
245*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
246*4bdc9457SAndroid Build Coastguard Worker     }
247*4bdc9457SAndroid Build Coastguard Worker   }
248*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_gt_8_2pass_subtile)249*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_gt_8_2pass_subtile) {
250*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
251*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
252*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
253*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
254*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
255*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
256*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
257*4bdc9457SAndroid Build Coastguard Worker       }
258*4bdc9457SAndroid Build Coastguard Worker     }
259*4bdc9457SAndroid Build Coastguard Worker   }
260*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_gt_8_multipass_fulltile)261*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_gt_8_multipass_fulltile) {
262*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
263*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
264*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows < 35; rows += 14) {
265*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
266*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
267*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
268*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
269*4bdc9457SAndroid Build Coastguard Worker       }
270*4bdc9457SAndroid Build Coastguard Worker     }
271*4bdc9457SAndroid Build Coastguard Worker   }
272*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8,channels_gt_8_multipass_fulltile_with_input_stride)273*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C8, channels_gt_8_multipass_fulltile_with_input_stride) {
274*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
275*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
276*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows < 35; rows += 14) {
277*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
278*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
279*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
280*4bdc9457SAndroid Build Coastguard Worker           .input_stride(29)
281*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
282*4bdc9457SAndroid Build Coastguard Worker       }
283*4bdc9457SAndroid Build Coastguard Worker     }
284*4bdc9457SAndroid Build Coastguard Worker   }
285*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
286*4bdc9457SAndroid Build Coastguard Worker 
287*4bdc9457SAndroid Build Coastguard Worker 
288*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_eq_16_2pass_fulltile)289*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_eq_16_2pass_fulltile) {
290*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
291*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
292*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
293*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
294*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
295*4bdc9457SAndroid Build Coastguard Worker   }
296*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_eq_16_2pass_fulltile_with_input_stride)297*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_input_stride) {
298*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
299*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
300*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
301*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
302*4bdc9457SAndroid Build Coastguard Worker       .input_stride(19)
303*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
304*4bdc9457SAndroid Build Coastguard Worker   }
305*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_eq_16_2pass_fulltile_with_qmax)306*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_qmax) {
307*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
308*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
309*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
310*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
311*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
312*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
313*4bdc9457SAndroid Build Coastguard Worker   }
314*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_eq_16_2pass_fulltile_with_qmin)315*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_eq_16_2pass_fulltile_with_qmin) {
316*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
317*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
318*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
319*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
320*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
321*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
322*4bdc9457SAndroid Build Coastguard Worker   }
323*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_eq_16_2pass_subtile)324*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_eq_16_2pass_subtile) {
325*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
326*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 8; rows < 14; rows++) {
327*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
328*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
329*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
330*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
331*4bdc9457SAndroid Build Coastguard Worker     }
332*4bdc9457SAndroid Build Coastguard Worker   }
333*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_eq_16_2pass_subtile_with_input_stride)334*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_eq_16_2pass_subtile_with_input_stride) {
335*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
336*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 8; rows < 14; rows++) {
337*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
338*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
339*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
340*4bdc9457SAndroid Build Coastguard Worker         .input_stride(19)
341*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
342*4bdc9457SAndroid Build Coastguard Worker     }
343*4bdc9457SAndroid Build Coastguard Worker   }
344*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_eq_16_multipass_fulltile)345*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_eq_16_multipass_fulltile) {
346*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
347*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 14; rows <= 35; rows += 7) {
348*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
349*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
350*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
351*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
352*4bdc9457SAndroid Build Coastguard Worker     }
353*4bdc9457SAndroid Build Coastguard Worker   }
354*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_eq_16_multipass_fulltile_with_input_stride)355*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_eq_16_multipass_fulltile_with_input_stride) {
356*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
357*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 14; rows <= 35; rows += 7) {
358*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
359*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
360*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
361*4bdc9457SAndroid Build Coastguard Worker         .input_stride(19)
362*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
363*4bdc9457SAndroid Build Coastguard Worker     }
364*4bdc9457SAndroid Build Coastguard Worker   }
365*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_div_16_2pass_fulltile)366*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_div_16_2pass_fulltile) {
367*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
368*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
369*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
370*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
371*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
372*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
373*4bdc9457SAndroid Build Coastguard Worker     }
374*4bdc9457SAndroid Build Coastguard Worker   }
375*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_div_16_2pass_subtile)376*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_div_16_2pass_subtile) {
377*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
378*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
379*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
380*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
381*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
382*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
383*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
384*4bdc9457SAndroid Build Coastguard Worker       }
385*4bdc9457SAndroid Build Coastguard Worker     }
386*4bdc9457SAndroid Build Coastguard Worker   }
387*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_div_16_multipass_fulltile)388*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_div_16_multipass_fulltile) {
389*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
390*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
391*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
392*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
393*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
394*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
395*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
396*4bdc9457SAndroid Build Coastguard Worker       }
397*4bdc9457SAndroid Build Coastguard Worker     }
398*4bdc9457SAndroid Build Coastguard Worker   }
399*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_div_16_multipass_fulltile_with_input_stride)400*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_div_16_multipass_fulltile_with_input_stride) {
401*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
402*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
403*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
404*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
405*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
406*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
407*4bdc9457SAndroid Build Coastguard Worker           .input_stride(263)
408*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
409*4bdc9457SAndroid Build Coastguard Worker       }
410*4bdc9457SAndroid Build Coastguard Worker     }
411*4bdc9457SAndroid Build Coastguard Worker   }
412*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_lt_16_2pass_fulltile)413*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_lt_16_2pass_fulltile) {
414*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
415*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
416*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
417*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
418*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
419*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
420*4bdc9457SAndroid Build Coastguard Worker     }
421*4bdc9457SAndroid Build Coastguard Worker   }
422*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_lt_16_2pass_fulltile_with_qmax)423*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_lt_16_2pass_fulltile_with_qmax) {
424*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
425*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
426*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
427*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
428*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
429*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
430*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
431*4bdc9457SAndroid Build Coastguard Worker     }
432*4bdc9457SAndroid Build Coastguard Worker   }
433*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_lt_16_2pass_fulltile_with_qmin)434*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_lt_16_2pass_fulltile_with_qmin) {
435*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
436*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
437*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
438*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
439*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
440*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
441*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
442*4bdc9457SAndroid Build Coastguard Worker     }
443*4bdc9457SAndroid Build Coastguard Worker   }
444*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_lt_16_2pass_subtile)445*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_lt_16_2pass_subtile) {
446*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
447*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
448*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
449*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
450*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
451*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
452*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
453*4bdc9457SAndroid Build Coastguard Worker       }
454*4bdc9457SAndroid Build Coastguard Worker     }
455*4bdc9457SAndroid Build Coastguard Worker   }
456*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_lt_16_multipass_fulltile)457*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_lt_16_multipass_fulltile) {
458*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
459*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
460*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
461*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
462*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
463*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
464*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
465*4bdc9457SAndroid Build Coastguard Worker       }
466*4bdc9457SAndroid Build Coastguard Worker     }
467*4bdc9457SAndroid Build Coastguard Worker   }
468*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_lt_16_multipass_fulltile_with_input_stride)469*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_lt_16_multipass_fulltile_with_input_stride) {
470*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
471*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
472*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
473*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
474*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
475*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
476*4bdc9457SAndroid Build Coastguard Worker           .input_stride(19)
477*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
478*4bdc9457SAndroid Build Coastguard Worker       }
479*4bdc9457SAndroid Build Coastguard Worker     }
480*4bdc9457SAndroid Build Coastguard Worker   }
481*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_gt_16_2pass_fulltile)482*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_gt_16_2pass_fulltile) {
483*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
484*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
485*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
486*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
487*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
488*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
489*4bdc9457SAndroid Build Coastguard Worker     }
490*4bdc9457SAndroid Build Coastguard Worker   }
491*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_gt_16_2pass_fulltile_with_qmax)492*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_gt_16_2pass_fulltile_with_qmax) {
493*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
494*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
495*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
496*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
497*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
498*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
499*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
500*4bdc9457SAndroid Build Coastguard Worker     }
501*4bdc9457SAndroid Build Coastguard Worker   }
502*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_gt_16_2pass_fulltile_with_qmin)503*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_gt_16_2pass_fulltile_with_qmin) {
504*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
505*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
506*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
507*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
508*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
509*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
510*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
511*4bdc9457SAndroid Build Coastguard Worker     }
512*4bdc9457SAndroid Build Coastguard Worker   }
513*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_gt_16_2pass_subtile)514*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_gt_16_2pass_subtile) {
515*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
516*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
517*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
518*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
519*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
520*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
521*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
522*4bdc9457SAndroid Build Coastguard Worker       }
523*4bdc9457SAndroid Build Coastguard Worker     }
524*4bdc9457SAndroid Build Coastguard Worker   }
525*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_gt_16_multipass_fulltile)526*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_gt_16_multipass_fulltile) {
527*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
528*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
529*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows < 35; rows += 14) {
530*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
531*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
532*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
533*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
534*4bdc9457SAndroid Build Coastguard Worker       }
535*4bdc9457SAndroid Build Coastguard Worker     }
536*4bdc9457SAndroid Build Coastguard Worker   }
537*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16,channels_gt_16_multipass_fulltile_with_input_stride)538*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C16, channels_gt_16_multipass_fulltile_with_input_stride) {
539*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
540*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
541*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows < 35; rows += 14) {
542*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
543*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
544*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
545*4bdc9457SAndroid Build Coastguard Worker           .input_stride(47)
546*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
547*4bdc9457SAndroid Build Coastguard Worker       }
548*4bdc9457SAndroid Build Coastguard Worker     }
549*4bdc9457SAndroid Build Coastguard Worker   }
550*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
551*4bdc9457SAndroid Build Coastguard Worker 
552*4bdc9457SAndroid Build Coastguard Worker 
553*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_eq_24_2pass_fulltile)554*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_eq_24_2pass_fulltile) {
555*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
556*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
557*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
558*4bdc9457SAndroid Build Coastguard Worker       .channels(24)
559*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
560*4bdc9457SAndroid Build Coastguard Worker   }
561*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_eq_24_2pass_fulltile_with_input_stride)562*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_input_stride) {
563*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
564*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
565*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
566*4bdc9457SAndroid Build Coastguard Worker       .channels(24)
567*4bdc9457SAndroid Build Coastguard Worker       .input_stride(29)
568*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
569*4bdc9457SAndroid Build Coastguard Worker   }
570*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_eq_24_2pass_fulltile_with_qmax)571*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_qmax) {
572*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
573*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
574*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
575*4bdc9457SAndroid Build Coastguard Worker       .channels(24)
576*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
577*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
578*4bdc9457SAndroid Build Coastguard Worker   }
579*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_eq_24_2pass_fulltile_with_qmin)580*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_eq_24_2pass_fulltile_with_qmin) {
581*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
582*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
583*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
584*4bdc9457SAndroid Build Coastguard Worker       .channels(24)
585*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
586*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
587*4bdc9457SAndroid Build Coastguard Worker   }
588*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_eq_24_2pass_subtile)589*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_eq_24_2pass_subtile) {
590*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
591*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 8; rows < 14; rows++) {
592*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
593*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
594*4bdc9457SAndroid Build Coastguard Worker         .channels(24)
595*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
596*4bdc9457SAndroid Build Coastguard Worker     }
597*4bdc9457SAndroid Build Coastguard Worker   }
598*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_eq_24_2pass_subtile_with_input_stride)599*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_eq_24_2pass_subtile_with_input_stride) {
600*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
601*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 8; rows < 14; rows++) {
602*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
603*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
604*4bdc9457SAndroid Build Coastguard Worker         .channels(24)
605*4bdc9457SAndroid Build Coastguard Worker         .input_stride(29)
606*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
607*4bdc9457SAndroid Build Coastguard Worker     }
608*4bdc9457SAndroid Build Coastguard Worker   }
609*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_eq_24_multipass_fulltile)610*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_eq_24_multipass_fulltile) {
611*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
612*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 14; rows <= 35; rows += 7) {
613*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
614*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
615*4bdc9457SAndroid Build Coastguard Worker         .channels(24)
616*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
617*4bdc9457SAndroid Build Coastguard Worker     }
618*4bdc9457SAndroid Build Coastguard Worker   }
619*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_eq_24_multipass_fulltile_with_input_stride)620*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_eq_24_multipass_fulltile_with_input_stride) {
621*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
622*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 14; rows <= 35; rows += 7) {
623*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
624*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
625*4bdc9457SAndroid Build Coastguard Worker         .channels(24)
626*4bdc9457SAndroid Build Coastguard Worker         .input_stride(29)
627*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
628*4bdc9457SAndroid Build Coastguard Worker     }
629*4bdc9457SAndroid Build Coastguard Worker   }
630*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_div_24_2pass_fulltile)631*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_div_24_2pass_fulltile) {
632*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
633*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 48; channels < 192; channels += 24) {
634*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
635*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
636*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
637*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
638*4bdc9457SAndroid Build Coastguard Worker     }
639*4bdc9457SAndroid Build Coastguard Worker   }
640*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_div_24_2pass_subtile)641*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_div_24_2pass_subtile) {
642*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
643*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 48; channels < 192; channels += 24) {
644*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
645*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
646*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
647*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
648*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
649*4bdc9457SAndroid Build Coastguard Worker       }
650*4bdc9457SAndroid Build Coastguard Worker     }
651*4bdc9457SAndroid Build Coastguard Worker   }
652*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_div_24_multipass_fulltile)653*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_div_24_multipass_fulltile) {
654*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
655*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 48; channels < 192; channels += 24) {
656*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
657*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
658*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
659*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
660*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
661*4bdc9457SAndroid Build Coastguard Worker       }
662*4bdc9457SAndroid Build Coastguard Worker     }
663*4bdc9457SAndroid Build Coastguard Worker   }
664*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_div_24_multipass_fulltile_with_input_stride)665*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_div_24_multipass_fulltile_with_input_stride) {
666*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
667*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 48; channels < 192; channels += 24) {
668*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
669*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
670*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
671*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
672*4bdc9457SAndroid Build Coastguard Worker           .input_stride(389)
673*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
674*4bdc9457SAndroid Build Coastguard Worker       }
675*4bdc9457SAndroid Build Coastguard Worker     }
676*4bdc9457SAndroid Build Coastguard Worker   }
677*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_lt_24_2pass_fulltile)678*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_lt_24_2pass_fulltile) {
679*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
680*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
681*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
682*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
683*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
684*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
685*4bdc9457SAndroid Build Coastguard Worker     }
686*4bdc9457SAndroid Build Coastguard Worker   }
687*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_lt_24_2pass_fulltile_with_qmax)688*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_lt_24_2pass_fulltile_with_qmax) {
689*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
690*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
691*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
692*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
693*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
694*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
695*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
696*4bdc9457SAndroid Build Coastguard Worker     }
697*4bdc9457SAndroid Build Coastguard Worker   }
698*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_lt_24_2pass_fulltile_with_qmin)699*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_lt_24_2pass_fulltile_with_qmin) {
700*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
701*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
702*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
703*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
704*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
705*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
706*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
707*4bdc9457SAndroid Build Coastguard Worker     }
708*4bdc9457SAndroid Build Coastguard Worker   }
709*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_lt_24_2pass_subtile)710*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_lt_24_2pass_subtile) {
711*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
712*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
713*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
714*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
715*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
716*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
717*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
718*4bdc9457SAndroid Build Coastguard Worker       }
719*4bdc9457SAndroid Build Coastguard Worker     }
720*4bdc9457SAndroid Build Coastguard Worker   }
721*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_lt_24_multipass_fulltile)722*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_lt_24_multipass_fulltile) {
723*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
724*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
725*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
726*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
727*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
728*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
729*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
730*4bdc9457SAndroid Build Coastguard Worker       }
731*4bdc9457SAndroid Build Coastguard Worker     }
732*4bdc9457SAndroid Build Coastguard Worker   }
733*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_lt_24_multipass_fulltile_with_input_stride)734*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_lt_24_multipass_fulltile_with_input_stride) {
735*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
736*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
737*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
738*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
739*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
740*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
741*4bdc9457SAndroid Build Coastguard Worker           .input_stride(29)
742*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
743*4bdc9457SAndroid Build Coastguard Worker       }
744*4bdc9457SAndroid Build Coastguard Worker     }
745*4bdc9457SAndroid Build Coastguard Worker   }
746*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_gt_24_2pass_fulltile)747*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_gt_24_2pass_fulltile) {
748*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
749*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
750*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
751*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
752*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
753*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
754*4bdc9457SAndroid Build Coastguard Worker     }
755*4bdc9457SAndroid Build Coastguard Worker   }
756*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_gt_24_2pass_fulltile_with_qmax)757*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_gt_24_2pass_fulltile_with_qmax) {
758*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
759*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
760*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
761*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
762*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
763*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
764*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
765*4bdc9457SAndroid Build Coastguard Worker     }
766*4bdc9457SAndroid Build Coastguard Worker   }
767*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_gt_24_2pass_fulltile_with_qmin)768*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_gt_24_2pass_fulltile_with_qmin) {
769*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
770*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
771*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
772*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
773*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
774*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
775*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
776*4bdc9457SAndroid Build Coastguard Worker     }
777*4bdc9457SAndroid Build Coastguard Worker   }
778*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_gt_24_2pass_subtile)779*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_gt_24_2pass_subtile) {
780*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
781*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
782*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
783*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
784*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
785*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
786*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
787*4bdc9457SAndroid Build Coastguard Worker       }
788*4bdc9457SAndroid Build Coastguard Worker     }
789*4bdc9457SAndroid Build Coastguard Worker   }
790*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_gt_24_multipass_fulltile)791*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_gt_24_multipass_fulltile) {
792*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
793*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
794*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows < 35; rows += 14) {
795*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
796*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
797*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
798*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
799*4bdc9457SAndroid Build Coastguard Worker       }
800*4bdc9457SAndroid Build Coastguard Worker     }
801*4bdc9457SAndroid Build Coastguard Worker   }
802*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24,channels_gt_24_multipass_fulltile_with_input_stride)803*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C24, channels_gt_24_multipass_fulltile_with_input_stride) {
804*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
805*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
806*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows < 35; rows += 14) {
807*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
808*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
809*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
810*4bdc9457SAndroid Build Coastguard Worker           .input_stride(61)
811*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
812*4bdc9457SAndroid Build Coastguard Worker       }
813*4bdc9457SAndroid Build Coastguard Worker     }
814*4bdc9457SAndroid Build Coastguard Worker   }
815*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
816*4bdc9457SAndroid Build Coastguard Worker 
817*4bdc9457SAndroid Build Coastguard Worker 
818*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_eq_32_2pass_fulltile)819*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_eq_32_2pass_fulltile) {
820*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
821*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
822*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
823*4bdc9457SAndroid Build Coastguard Worker       .channels(32)
824*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
825*4bdc9457SAndroid Build Coastguard Worker   }
826*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_eq_32_2pass_fulltile_with_input_stride)827*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_input_stride) {
828*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
829*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
830*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
831*4bdc9457SAndroid Build Coastguard Worker       .channels(32)
832*4bdc9457SAndroid Build Coastguard Worker       .input_stride(37)
833*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
834*4bdc9457SAndroid Build Coastguard Worker   }
835*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_eq_32_2pass_fulltile_with_qmax)836*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_qmax) {
837*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
838*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
839*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
840*4bdc9457SAndroid Build Coastguard Worker       .channels(32)
841*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
842*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
843*4bdc9457SAndroid Build Coastguard Worker   }
844*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_eq_32_2pass_fulltile_with_qmin)845*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_eq_32_2pass_fulltile_with_qmin) {
846*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
847*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
848*4bdc9457SAndroid Build Coastguard Worker       .rows(14)
849*4bdc9457SAndroid Build Coastguard Worker       .channels(32)
850*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
851*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
852*4bdc9457SAndroid Build Coastguard Worker   }
853*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_eq_32_2pass_subtile)854*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_eq_32_2pass_subtile) {
855*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
856*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 8; rows < 14; rows++) {
857*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
858*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
859*4bdc9457SAndroid Build Coastguard Worker         .channels(32)
860*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
861*4bdc9457SAndroid Build Coastguard Worker     }
862*4bdc9457SAndroid Build Coastguard Worker   }
863*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_eq_32_2pass_subtile_with_input_stride)864*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_eq_32_2pass_subtile_with_input_stride) {
865*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
866*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 8; rows < 14; rows++) {
867*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
868*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
869*4bdc9457SAndroid Build Coastguard Worker         .channels(32)
870*4bdc9457SAndroid Build Coastguard Worker         .input_stride(37)
871*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
872*4bdc9457SAndroid Build Coastguard Worker     }
873*4bdc9457SAndroid Build Coastguard Worker   }
874*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_eq_32_multipass_fulltile)875*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_eq_32_multipass_fulltile) {
876*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
877*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 14; rows <= 35; rows += 7) {
878*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
879*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
880*4bdc9457SAndroid Build Coastguard Worker         .channels(32)
881*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
882*4bdc9457SAndroid Build Coastguard Worker     }
883*4bdc9457SAndroid Build Coastguard Worker   }
884*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_eq_32_multipass_fulltile_with_input_stride)885*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_eq_32_multipass_fulltile_with_input_stride) {
886*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
887*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 14; rows <= 35; rows += 7) {
888*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
889*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
890*4bdc9457SAndroid Build Coastguard Worker         .channels(32)
891*4bdc9457SAndroid Build Coastguard Worker         .input_stride(37)
892*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
893*4bdc9457SAndroid Build Coastguard Worker     }
894*4bdc9457SAndroid Build Coastguard Worker   }
895*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_div_32_2pass_fulltile)896*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_div_32_2pass_fulltile) {
897*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
898*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 64; channels < 256; channels += 32) {
899*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
900*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
901*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
902*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
903*4bdc9457SAndroid Build Coastguard Worker     }
904*4bdc9457SAndroid Build Coastguard Worker   }
905*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_div_32_2pass_subtile)906*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_div_32_2pass_subtile) {
907*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
908*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 64; channels < 256; channels += 32) {
909*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
910*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
911*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
912*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
913*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
914*4bdc9457SAndroid Build Coastguard Worker       }
915*4bdc9457SAndroid Build Coastguard Worker     }
916*4bdc9457SAndroid Build Coastguard Worker   }
917*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_div_32_multipass_fulltile)918*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_div_32_multipass_fulltile) {
919*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
920*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 64; channels < 256; channels += 32) {
921*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
922*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
923*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
924*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
925*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
926*4bdc9457SAndroid Build Coastguard Worker       }
927*4bdc9457SAndroid Build Coastguard Worker     }
928*4bdc9457SAndroid Build Coastguard Worker   }
929*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_div_32_multipass_fulltile_with_input_stride)930*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_div_32_multipass_fulltile_with_input_stride) {
931*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
932*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 64; channels < 256; channels += 32) {
933*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
934*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
935*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
936*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
937*4bdc9457SAndroid Build Coastguard Worker           .input_stride(521)
938*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
939*4bdc9457SAndroid Build Coastguard Worker       }
940*4bdc9457SAndroid Build Coastguard Worker     }
941*4bdc9457SAndroid Build Coastguard Worker   }
942*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_lt_32_2pass_fulltile)943*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_lt_32_2pass_fulltile) {
944*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
945*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
946*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
947*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
948*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
949*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
950*4bdc9457SAndroid Build Coastguard Worker     }
951*4bdc9457SAndroid Build Coastguard Worker   }
952*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_lt_32_2pass_fulltile_with_qmax)953*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_lt_32_2pass_fulltile_with_qmax) {
954*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
955*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
956*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
957*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
958*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
959*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
960*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
961*4bdc9457SAndroid Build Coastguard Worker     }
962*4bdc9457SAndroid Build Coastguard Worker   }
963*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_lt_32_2pass_fulltile_with_qmin)964*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_lt_32_2pass_fulltile_with_qmin) {
965*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
966*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
967*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
968*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
969*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
970*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
971*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
972*4bdc9457SAndroid Build Coastguard Worker     }
973*4bdc9457SAndroid Build Coastguard Worker   }
974*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_lt_32_2pass_subtile)975*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_lt_32_2pass_subtile) {
976*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
977*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
978*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
979*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
980*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
981*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
982*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
983*4bdc9457SAndroid Build Coastguard Worker       }
984*4bdc9457SAndroid Build Coastguard Worker     }
985*4bdc9457SAndroid Build Coastguard Worker   }
986*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_lt_32_multipass_fulltile)987*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_lt_32_multipass_fulltile) {
988*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
989*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
990*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
991*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
992*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
993*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
994*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
995*4bdc9457SAndroid Build Coastguard Worker       }
996*4bdc9457SAndroid Build Coastguard Worker     }
997*4bdc9457SAndroid Build Coastguard Worker   }
998*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_lt_32_multipass_fulltile_with_input_stride)999*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_lt_32_multipass_fulltile_with_input_stride) {
1000*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1001*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
1002*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows <= 35; rows += 7) {
1003*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1004*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1005*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1006*4bdc9457SAndroid Build Coastguard Worker           .input_stride(37)
1007*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1008*4bdc9457SAndroid Build Coastguard Worker       }
1009*4bdc9457SAndroid Build Coastguard Worker     }
1010*4bdc9457SAndroid Build Coastguard Worker   }
1011*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_gt_32_2pass_fulltile)1012*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_gt_32_2pass_fulltile) {
1013*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1014*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1015*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1016*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
1017*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1018*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1019*4bdc9457SAndroid Build Coastguard Worker     }
1020*4bdc9457SAndroid Build Coastguard Worker   }
1021*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_gt_32_2pass_fulltile_with_qmax)1022*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_gt_32_2pass_fulltile_with_qmax) {
1023*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1024*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1025*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1026*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
1027*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1028*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1029*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1030*4bdc9457SAndroid Build Coastguard Worker     }
1031*4bdc9457SAndroid Build Coastguard Worker   }
1032*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_gt_32_2pass_fulltile_with_qmin)1033*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_gt_32_2pass_fulltile_with_qmin) {
1034*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1035*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1036*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1037*4bdc9457SAndroid Build Coastguard Worker         .rows(14)
1038*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1039*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1040*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1041*4bdc9457SAndroid Build Coastguard Worker     }
1042*4bdc9457SAndroid Build Coastguard Worker   }
1043*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_gt_32_2pass_subtile)1044*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_gt_32_2pass_subtile) {
1045*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1046*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1047*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 8; rows < 14; rows++) {
1048*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1049*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1050*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1051*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1052*4bdc9457SAndroid Build Coastguard Worker       }
1053*4bdc9457SAndroid Build Coastguard Worker     }
1054*4bdc9457SAndroid Build Coastguard Worker   }
1055*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_gt_32_multipass_fulltile)1056*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_gt_32_multipass_fulltile) {
1057*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1058*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1059*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows < 35; rows += 14) {
1060*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1061*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1062*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1063*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1064*4bdc9457SAndroid Build Coastguard Worker       }
1065*4bdc9457SAndroid Build Coastguard Worker     }
1066*4bdc9457SAndroid Build Coastguard Worker   }
1067*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32,channels_gt_32_multipass_fulltile_with_input_stride)1068*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7P7X__NEON_C32, channels_gt_32_multipass_fulltile_with_input_stride) {
1069*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1070*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1071*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 14; rows < 35; rows += 14) {
1072*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1073*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1074*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1075*4bdc9457SAndroid Build Coastguard Worker           .input_stride(79)
1076*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7p7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1077*4bdc9457SAndroid Build Coastguard Worker       }
1078*4bdc9457SAndroid Build Coastguard Worker     }
1079*4bdc9457SAndroid Build Coastguard Worker   }
1080*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1081*4bdc9457SAndroid Build Coastguard Worker 
1082*4bdc9457SAndroid Build Coastguard Worker 
1083*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_eq_8_fulltile)1084*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_eq_8_fulltile) {
1085*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1086*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1087*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1088*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1089*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1090*4bdc9457SAndroid Build Coastguard Worker   }
1091*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_eq_8_subtile)1092*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_eq_8_subtile) {
1093*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1094*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows < 7; rows++) {
1095*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1096*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1097*4bdc9457SAndroid Build Coastguard Worker         .channels(8)
1098*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1099*4bdc9457SAndroid Build Coastguard Worker     }
1100*4bdc9457SAndroid Build Coastguard Worker   }
1101*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_eq_8_fulltile_with_input_stride)1102*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_eq_8_fulltile_with_input_stride) {
1103*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1104*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1105*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1106*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1107*4bdc9457SAndroid Build Coastguard Worker       .input_stride(11)
1108*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1109*4bdc9457SAndroid Build Coastguard Worker   }
1110*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_eq_8_fulltile_with_qmax)1111*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_eq_8_fulltile_with_qmax) {
1112*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1113*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1114*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1115*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1116*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
1117*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1118*4bdc9457SAndroid Build Coastguard Worker   }
1119*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_eq_8_fulltile_with_qmin)1120*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_eq_8_fulltile_with_qmin) {
1121*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1122*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1123*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1124*4bdc9457SAndroid Build Coastguard Worker       .channels(8)
1125*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
1126*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1127*4bdc9457SAndroid Build Coastguard Worker   }
1128*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_div_8_fulltile)1129*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_div_8_fulltile) {
1130*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1131*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1132*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1133*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1134*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1135*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1136*4bdc9457SAndroid Build Coastguard Worker     }
1137*4bdc9457SAndroid Build Coastguard Worker   }
1138*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_div_8_subtile)1139*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_div_8_subtile) {
1140*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1141*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 16; channels < 64; channels += 8) {
1142*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1143*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1144*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1145*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1146*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1147*4bdc9457SAndroid Build Coastguard Worker       }
1148*4bdc9457SAndroid Build Coastguard Worker     }
1149*4bdc9457SAndroid Build Coastguard Worker   }
1150*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_lt_8_fulltile)1151*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_lt_8_fulltile) {
1152*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1153*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1154*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1155*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1156*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1157*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1158*4bdc9457SAndroid Build Coastguard Worker     }
1159*4bdc9457SAndroid Build Coastguard Worker   }
1160*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_lt_8_subtile)1161*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_lt_8_subtile) {
1162*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1163*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1164*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1165*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1166*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1167*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1168*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1169*4bdc9457SAndroid Build Coastguard Worker       }
1170*4bdc9457SAndroid Build Coastguard Worker     }
1171*4bdc9457SAndroid Build Coastguard Worker   }
1172*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_lt_8_fulltile_with_qmax)1173*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_lt_8_fulltile_with_qmax) {
1174*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1175*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1176*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1177*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1178*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1179*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1180*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1181*4bdc9457SAndroid Build Coastguard Worker     }
1182*4bdc9457SAndroid Build Coastguard Worker   }
1183*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_lt_8_fulltile_with_qmin)1184*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_lt_8_fulltile_with_qmin) {
1185*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1186*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 8; channels++) {
1187*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1188*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1189*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1190*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1191*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1192*4bdc9457SAndroid Build Coastguard Worker     }
1193*4bdc9457SAndroid Build Coastguard Worker   }
1194*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_gt_8_fulltile)1195*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_gt_8_fulltile) {
1196*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1197*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1198*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1199*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1200*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1201*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1202*4bdc9457SAndroid Build Coastguard Worker     }
1203*4bdc9457SAndroid Build Coastguard Worker   }
1204*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_gt_8_subtile)1205*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_gt_8_subtile) {
1206*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1207*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1208*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1209*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1210*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1211*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1212*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1213*4bdc9457SAndroid Build Coastguard Worker       }
1214*4bdc9457SAndroid Build Coastguard Worker     }
1215*4bdc9457SAndroid Build Coastguard Worker   }
1216*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_gt_8_fulltile_with_qmax)1217*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_gt_8_fulltile_with_qmax) {
1218*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1219*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1220*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1221*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1222*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1223*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1224*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1225*4bdc9457SAndroid Build Coastguard Worker     }
1226*4bdc9457SAndroid Build Coastguard Worker   }
1227*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8,channels_gt_8_fulltile_with_qmin)1228*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C8, channels_gt_8_fulltile_with_qmin) {
1229*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1230*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 9; channels < 16; channels++) {
1231*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1232*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1233*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1234*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1235*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c8, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1236*4bdc9457SAndroid Build Coastguard Worker     }
1237*4bdc9457SAndroid Build Coastguard Worker   }
1238*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1239*4bdc9457SAndroid Build Coastguard Worker 
1240*4bdc9457SAndroid Build Coastguard Worker 
1241*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_eq_16_fulltile)1242*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_eq_16_fulltile) {
1243*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1244*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1245*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1246*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1247*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1248*4bdc9457SAndroid Build Coastguard Worker   }
1249*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_eq_16_subtile)1250*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_eq_16_subtile) {
1251*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1252*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows < 7; rows++) {
1253*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1254*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1255*4bdc9457SAndroid Build Coastguard Worker         .channels(16)
1256*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1257*4bdc9457SAndroid Build Coastguard Worker     }
1258*4bdc9457SAndroid Build Coastguard Worker   }
1259*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_eq_16_fulltile_with_input_stride)1260*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_eq_16_fulltile_with_input_stride) {
1261*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1262*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1263*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1264*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1265*4bdc9457SAndroid Build Coastguard Worker       .input_stride(19)
1266*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1267*4bdc9457SAndroid Build Coastguard Worker   }
1268*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_eq_16_fulltile_with_qmax)1269*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_eq_16_fulltile_with_qmax) {
1270*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1271*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1272*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1273*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1274*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
1275*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1276*4bdc9457SAndroid Build Coastguard Worker   }
1277*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_eq_16_fulltile_with_qmin)1278*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_eq_16_fulltile_with_qmin) {
1279*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1280*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1281*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1282*4bdc9457SAndroid Build Coastguard Worker       .channels(16)
1283*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
1284*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1285*4bdc9457SAndroid Build Coastguard Worker   }
1286*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_div_16_fulltile)1287*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_div_16_fulltile) {
1288*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1289*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1290*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1291*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1292*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1293*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1294*4bdc9457SAndroid Build Coastguard Worker     }
1295*4bdc9457SAndroid Build Coastguard Worker   }
1296*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_div_16_subtile)1297*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_div_16_subtile) {
1298*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1299*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 32; channels < 128; channels += 16) {
1300*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1301*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1302*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1303*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1304*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1305*4bdc9457SAndroid Build Coastguard Worker       }
1306*4bdc9457SAndroid Build Coastguard Worker     }
1307*4bdc9457SAndroid Build Coastguard Worker   }
1308*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_lt_16_fulltile)1309*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_lt_16_fulltile) {
1310*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1311*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1312*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1313*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1314*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1315*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1316*4bdc9457SAndroid Build Coastguard Worker     }
1317*4bdc9457SAndroid Build Coastguard Worker   }
1318*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_lt_16_subtile)1319*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_lt_16_subtile) {
1320*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1321*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1322*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1323*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1324*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1325*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1326*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1327*4bdc9457SAndroid Build Coastguard Worker       }
1328*4bdc9457SAndroid Build Coastguard Worker     }
1329*4bdc9457SAndroid Build Coastguard Worker   }
1330*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_lt_16_fulltile_with_qmax)1331*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_lt_16_fulltile_with_qmax) {
1332*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1333*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1334*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1335*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1336*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1337*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1338*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1339*4bdc9457SAndroid Build Coastguard Worker     }
1340*4bdc9457SAndroid Build Coastguard Worker   }
1341*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_lt_16_fulltile_with_qmin)1342*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_lt_16_fulltile_with_qmin) {
1343*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1344*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 16; channels++) {
1345*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1346*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1347*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1348*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1349*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1350*4bdc9457SAndroid Build Coastguard Worker     }
1351*4bdc9457SAndroid Build Coastguard Worker   }
1352*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_gt_16_fulltile)1353*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_gt_16_fulltile) {
1354*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1355*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1356*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1357*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1358*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1359*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1360*4bdc9457SAndroid Build Coastguard Worker     }
1361*4bdc9457SAndroid Build Coastguard Worker   }
1362*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_gt_16_subtile)1363*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_gt_16_subtile) {
1364*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1365*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1366*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1367*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1368*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1369*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1370*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1371*4bdc9457SAndroid Build Coastguard Worker       }
1372*4bdc9457SAndroid Build Coastguard Worker     }
1373*4bdc9457SAndroid Build Coastguard Worker   }
1374*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_gt_16_fulltile_with_qmax)1375*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_gt_16_fulltile_with_qmax) {
1376*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1377*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1378*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1379*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1380*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1381*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1382*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1383*4bdc9457SAndroid Build Coastguard Worker     }
1384*4bdc9457SAndroid Build Coastguard Worker   }
1385*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16,channels_gt_16_fulltile_with_qmin)1386*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C16, channels_gt_16_fulltile_with_qmin) {
1387*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1388*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 17; channels < 32; channels++) {
1389*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1390*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1391*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1392*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1393*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c16, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1394*4bdc9457SAndroid Build Coastguard Worker     }
1395*4bdc9457SAndroid Build Coastguard Worker   }
1396*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1397*4bdc9457SAndroid Build Coastguard Worker 
1398*4bdc9457SAndroid Build Coastguard Worker 
1399*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_eq_24_fulltile)1400*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_eq_24_fulltile) {
1401*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1402*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1403*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1404*4bdc9457SAndroid Build Coastguard Worker       .channels(24)
1405*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1406*4bdc9457SAndroid Build Coastguard Worker   }
1407*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_eq_24_subtile)1408*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_eq_24_subtile) {
1409*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1410*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows < 7; rows++) {
1411*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1412*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1413*4bdc9457SAndroid Build Coastguard Worker         .channels(24)
1414*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1415*4bdc9457SAndroid Build Coastguard Worker     }
1416*4bdc9457SAndroid Build Coastguard Worker   }
1417*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_eq_24_fulltile_with_input_stride)1418*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_eq_24_fulltile_with_input_stride) {
1419*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1420*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1421*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1422*4bdc9457SAndroid Build Coastguard Worker       .channels(24)
1423*4bdc9457SAndroid Build Coastguard Worker       .input_stride(29)
1424*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1425*4bdc9457SAndroid Build Coastguard Worker   }
1426*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_eq_24_fulltile_with_qmax)1427*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_eq_24_fulltile_with_qmax) {
1428*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1429*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1430*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1431*4bdc9457SAndroid Build Coastguard Worker       .channels(24)
1432*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
1433*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1434*4bdc9457SAndroid Build Coastguard Worker   }
1435*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_eq_24_fulltile_with_qmin)1436*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_eq_24_fulltile_with_qmin) {
1437*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1438*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1439*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1440*4bdc9457SAndroid Build Coastguard Worker       .channels(24)
1441*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
1442*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1443*4bdc9457SAndroid Build Coastguard Worker   }
1444*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_div_24_fulltile)1445*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_div_24_fulltile) {
1446*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1447*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 48; channels < 192; channels += 24) {
1448*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1449*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1450*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1451*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1452*4bdc9457SAndroid Build Coastguard Worker     }
1453*4bdc9457SAndroid Build Coastguard Worker   }
1454*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_div_24_subtile)1455*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_div_24_subtile) {
1456*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1457*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 48; channels < 192; channels += 24) {
1458*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1459*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1460*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1461*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1462*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1463*4bdc9457SAndroid Build Coastguard Worker       }
1464*4bdc9457SAndroid Build Coastguard Worker     }
1465*4bdc9457SAndroid Build Coastguard Worker   }
1466*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_lt_24_fulltile)1467*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_lt_24_fulltile) {
1468*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1469*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
1470*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1471*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1472*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1473*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1474*4bdc9457SAndroid Build Coastguard Worker     }
1475*4bdc9457SAndroid Build Coastguard Worker   }
1476*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_lt_24_subtile)1477*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_lt_24_subtile) {
1478*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1479*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
1480*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1481*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1482*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1483*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1484*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1485*4bdc9457SAndroid Build Coastguard Worker       }
1486*4bdc9457SAndroid Build Coastguard Worker     }
1487*4bdc9457SAndroid Build Coastguard Worker   }
1488*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_lt_24_fulltile_with_qmax)1489*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_lt_24_fulltile_with_qmax) {
1490*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1491*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
1492*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1493*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1494*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1495*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1496*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1497*4bdc9457SAndroid Build Coastguard Worker     }
1498*4bdc9457SAndroid Build Coastguard Worker   }
1499*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_lt_24_fulltile_with_qmin)1500*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_lt_24_fulltile_with_qmin) {
1501*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1502*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 24; channels++) {
1503*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1504*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1505*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1506*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1507*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1508*4bdc9457SAndroid Build Coastguard Worker     }
1509*4bdc9457SAndroid Build Coastguard Worker   }
1510*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_gt_24_fulltile)1511*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_gt_24_fulltile) {
1512*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1513*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
1514*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1515*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1516*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1517*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1518*4bdc9457SAndroid Build Coastguard Worker     }
1519*4bdc9457SAndroid Build Coastguard Worker   }
1520*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_gt_24_subtile)1521*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_gt_24_subtile) {
1522*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1523*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
1524*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1525*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1526*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1527*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1528*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1529*4bdc9457SAndroid Build Coastguard Worker       }
1530*4bdc9457SAndroid Build Coastguard Worker     }
1531*4bdc9457SAndroid Build Coastguard Worker   }
1532*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_gt_24_fulltile_with_qmax)1533*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_gt_24_fulltile_with_qmax) {
1534*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1535*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
1536*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1537*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1538*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1539*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1540*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1541*4bdc9457SAndroid Build Coastguard Worker     }
1542*4bdc9457SAndroid Build Coastguard Worker   }
1543*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24,channels_gt_24_fulltile_with_qmin)1544*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C24, channels_gt_24_fulltile_with_qmin) {
1545*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1546*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 25; channels < 48; channels++) {
1547*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1548*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1549*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1550*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1551*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c24, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1552*4bdc9457SAndroid Build Coastguard Worker     }
1553*4bdc9457SAndroid Build Coastguard Worker   }
1554*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1555*4bdc9457SAndroid Build Coastguard Worker 
1556*4bdc9457SAndroid Build Coastguard Worker 
1557*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_eq_32_fulltile)1558*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_eq_32_fulltile) {
1559*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1560*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1561*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1562*4bdc9457SAndroid Build Coastguard Worker       .channels(32)
1563*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1564*4bdc9457SAndroid Build Coastguard Worker   }
1565*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_eq_32_subtile)1566*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_eq_32_subtile) {
1567*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1568*4bdc9457SAndroid Build Coastguard Worker     for (size_t rows = 1; rows < 7; rows++) {
1569*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1570*4bdc9457SAndroid Build Coastguard Worker         .rows(rows)
1571*4bdc9457SAndroid Build Coastguard Worker         .channels(32)
1572*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1573*4bdc9457SAndroid Build Coastguard Worker     }
1574*4bdc9457SAndroid Build Coastguard Worker   }
1575*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_eq_32_fulltile_with_input_stride)1576*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_eq_32_fulltile_with_input_stride) {
1577*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1578*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1579*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1580*4bdc9457SAndroid Build Coastguard Worker       .channels(32)
1581*4bdc9457SAndroid Build Coastguard Worker       .input_stride(37)
1582*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1583*4bdc9457SAndroid Build Coastguard Worker   }
1584*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_eq_32_fulltile_with_qmax)1585*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_eq_32_fulltile_with_qmax) {
1586*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1587*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1588*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1589*4bdc9457SAndroid Build Coastguard Worker       .channels(32)
1590*4bdc9457SAndroid Build Coastguard Worker       .qmax(128)
1591*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1592*4bdc9457SAndroid Build Coastguard Worker   }
1593*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_eq_32_fulltile_with_qmin)1594*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_eq_32_fulltile_with_qmin) {
1595*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1596*4bdc9457SAndroid Build Coastguard Worker     GAvgPoolMicrokernelTester()
1597*4bdc9457SAndroid Build Coastguard Worker       .rows(7)
1598*4bdc9457SAndroid Build Coastguard Worker       .channels(32)
1599*4bdc9457SAndroid Build Coastguard Worker       .qmin(128)
1600*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1601*4bdc9457SAndroid Build Coastguard Worker   }
1602*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_div_32_fulltile)1603*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_div_32_fulltile) {
1604*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1605*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 64; channels < 256; channels += 32) {
1606*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1607*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1608*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1609*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1610*4bdc9457SAndroid Build Coastguard Worker     }
1611*4bdc9457SAndroid Build Coastguard Worker   }
1612*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_div_32_subtile)1613*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_div_32_subtile) {
1614*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1615*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 64; channels < 256; channels += 32) {
1616*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1617*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1618*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1619*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1620*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1621*4bdc9457SAndroid Build Coastguard Worker       }
1622*4bdc9457SAndroid Build Coastguard Worker     }
1623*4bdc9457SAndroid Build Coastguard Worker   }
1624*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_lt_32_fulltile)1625*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_lt_32_fulltile) {
1626*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1627*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
1628*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1629*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1630*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1631*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1632*4bdc9457SAndroid Build Coastguard Worker     }
1633*4bdc9457SAndroid Build Coastguard Worker   }
1634*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_lt_32_subtile)1635*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_lt_32_subtile) {
1636*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1637*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
1638*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1639*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1640*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1641*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1642*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1643*4bdc9457SAndroid Build Coastguard Worker       }
1644*4bdc9457SAndroid Build Coastguard Worker     }
1645*4bdc9457SAndroid Build Coastguard Worker   }
1646*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_lt_32_fulltile_with_qmax)1647*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_lt_32_fulltile_with_qmax) {
1648*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1649*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
1650*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1651*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1652*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1653*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1654*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1655*4bdc9457SAndroid Build Coastguard Worker     }
1656*4bdc9457SAndroid Build Coastguard Worker   }
1657*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_lt_32_fulltile_with_qmin)1658*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_lt_32_fulltile_with_qmin) {
1659*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1660*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 1; channels < 32; channels++) {
1661*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1662*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1663*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1664*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1665*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1666*4bdc9457SAndroid Build Coastguard Worker     }
1667*4bdc9457SAndroid Build Coastguard Worker   }
1668*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_gt_32_fulltile)1669*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_gt_32_fulltile) {
1670*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1671*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1672*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1673*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1674*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1675*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1676*4bdc9457SAndroid Build Coastguard Worker     }
1677*4bdc9457SAndroid Build Coastguard Worker   }
1678*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_gt_32_subtile)1679*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_gt_32_subtile) {
1680*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1681*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1682*4bdc9457SAndroid Build Coastguard Worker       for (size_t rows = 1; rows < 7; rows++) {
1683*4bdc9457SAndroid Build Coastguard Worker         GAvgPoolMicrokernelTester()
1684*4bdc9457SAndroid Build Coastguard Worker           .rows(rows)
1685*4bdc9457SAndroid Build Coastguard Worker           .channels(channels)
1686*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1687*4bdc9457SAndroid Build Coastguard Worker       }
1688*4bdc9457SAndroid Build Coastguard Worker     }
1689*4bdc9457SAndroid Build Coastguard Worker   }
1690*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_gt_32_fulltile_with_qmax)1691*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_gt_32_fulltile_with_qmax) {
1692*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1693*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1694*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1695*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1696*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1697*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
1698*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1699*4bdc9457SAndroid Build Coastguard Worker     }
1700*4bdc9457SAndroid Build Coastguard Worker   }
1701*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32,channels_gt_32_fulltile_with_qmin)1702*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_GAVGPOOL_MINMAX_RNDNU_7X__NEON_C32, channels_gt_32_fulltile_with_qmin) {
1703*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
1704*4bdc9457SAndroid Build Coastguard Worker     for (size_t channels = 33; channels < 64; channels++) {
1705*4bdc9457SAndroid Build Coastguard Worker       GAvgPoolMicrokernelTester()
1706*4bdc9457SAndroid Build Coastguard Worker         .rows(7)
1707*4bdc9457SAndroid Build Coastguard Worker         .channels(channels)
1708*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
1709*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_gavgpool_minmax_rndnu_ukernel_7x__neon_c32, xnn_init_qs8_avgpool_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
1710*4bdc9457SAndroid Build Coastguard Worker     }
1711*4bdc9457SAndroid Build Coastguard Worker   }
1712*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
1713