1 // Copyright (c) Facebook, Inc. and its affiliates. 2 // All rights reserved. 3 // 4 // Copyright 2020 Google LLC 5 // 6 // This source code is licensed under the BSD-style license found in the 7 // LICENSE file in the root directory of this source tree. 8 // 9 // Auto-generated file. Do not edit! 10 // Specification: test/f16-gavgpool-minmax.yaml 11 // Generator: tools/generate-gavgpool-test.py 12 13 14 #include <gtest/gtest.h> 15 16 #include <xnnpack/common.h> 17 #include <xnnpack/isa-checks.h> 18 19 #include <xnnpack/gavgpool.h> 20 #include "gavgpool-microkernel-tester.h" 21 22 23 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_fulltile)24 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_fulltile) { 25 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 26 GAvgPoolMicrokernelTester() 27 .rows(14) 28 .channels(8) 29 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 30 } 31 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_fulltile_with_input_stride)32 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_fulltile_with_input_stride) { 33 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 34 GAvgPoolMicrokernelTester() 35 .rows(14) 36 .channels(8) 37 .input_stride(11) 38 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 39 } 40 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_fulltile_with_qmax)41 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_fulltile_with_qmax) { 42 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 43 GAvgPoolMicrokernelTester() 44 .rows(14) 45 .channels(8) 46 .qmax(128) 47 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 48 } 49 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_fulltile_with_qmin)50 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_fulltile_with_qmin) { 51 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 52 GAvgPoolMicrokernelTester() 53 .rows(14) 54 .channels(8) 55 .qmin(128) 56 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 57 } 58 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_subtile)59 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_subtile) { 60 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 61 for (size_t rows = 8; rows < 14; rows++) { 62 GAvgPoolMicrokernelTester() 63 .rows(rows) 64 .channels(8) 65 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 66 } 67 } 68 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_subtile_with_input_stride)69 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_subtile_with_input_stride) { 70 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 71 for (size_t rows = 8; rows < 14; rows++) { 72 GAvgPoolMicrokernelTester() 73 .rows(rows) 74 .channels(8) 75 .input_stride(11) 76 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 77 } 78 } 79 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_multipass_fulltile)80 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_multipass_fulltile) { 81 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 82 for (size_t rows = 14; rows <= 35; rows += 7) { 83 GAvgPoolMicrokernelTester() 84 .rows(rows) 85 .channels(8) 86 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 87 } 88 } 89 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_multipass_fulltile_with_input_stride)90 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_multipass_fulltile_with_input_stride) { 91 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 92 for (size_t rows = 14; rows <= 35; rows += 7) { 93 GAvgPoolMicrokernelTester() 94 .rows(rows) 95 .channels(8) 96 .input_stride(11) 97 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 98 } 99 } 100 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_div_8_2pass_fulltile)101 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_div_8_2pass_fulltile) { 102 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 103 for (size_t channels = 16; channels < 64; channels += 8) { 104 GAvgPoolMicrokernelTester() 105 .rows(14) 106 .channels(channels) 107 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 108 } 109 } 110 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_div_8_2pass_subtile)111 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_div_8_2pass_subtile) { 112 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 113 for (size_t channels = 16; channels < 64; channels += 8) { 114 for (size_t rows = 8; rows < 14; rows++) { 115 GAvgPoolMicrokernelTester() 116 .rows(rows) 117 .channels(channels) 118 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 119 } 120 } 121 } 122 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_div_8_multipass_fulltile)123 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_div_8_multipass_fulltile) { 124 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 125 for (size_t channels = 16; channels < 64; channels += 8) { 126 for (size_t rows = 14; rows <= 35; rows += 7) { 127 GAvgPoolMicrokernelTester() 128 .rows(rows) 129 .channels(channels) 130 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 131 } 132 } 133 } 134 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_div_8_multipass_fulltile_with_input_stride)135 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_div_8_multipass_fulltile_with_input_stride) { 136 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 137 for (size_t channels = 16; channels < 64; channels += 8) { 138 for (size_t rows = 14; rows <= 35; rows += 7) { 139 GAvgPoolMicrokernelTester() 140 .rows(rows) 141 .channels(channels) 142 .input_stride(131) 143 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 144 } 145 } 146 } 147 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_2pass_fulltile)148 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_2pass_fulltile) { 149 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 150 for (size_t channels = 1; channels < 8; channels++) { 151 GAvgPoolMicrokernelTester() 152 .rows(14) 153 .channels(channels) 154 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 155 } 156 } 157 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_2pass_fulltile_with_qmax)158 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_2pass_fulltile_with_qmax) { 159 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 160 for (size_t channels = 1; channels < 8; channels++) { 161 GAvgPoolMicrokernelTester() 162 .rows(14) 163 .channels(channels) 164 .qmax(128) 165 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 166 } 167 } 168 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_2pass_fulltile_with_qmin)169 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_2pass_fulltile_with_qmin) { 170 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 171 for (size_t channels = 1; channels < 8; channels++) { 172 GAvgPoolMicrokernelTester() 173 .rows(14) 174 .channels(channels) 175 .qmin(128) 176 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 177 } 178 } 179 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_2pass_subtile)180 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_2pass_subtile) { 181 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 182 for (size_t channels = 1; channels < 8; channels++) { 183 for (size_t rows = 8; rows < 14; rows++) { 184 GAvgPoolMicrokernelTester() 185 .rows(rows) 186 .channels(channels) 187 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 188 } 189 } 190 } 191 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_multipass_fulltile)192 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_multipass_fulltile) { 193 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 194 for (size_t channels = 1; channels < 8; channels++) { 195 for (size_t rows = 14; rows <= 35; rows += 7) { 196 GAvgPoolMicrokernelTester() 197 .rows(rows) 198 .channels(channels) 199 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 200 } 201 } 202 } 203 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_multipass_fulltile_with_input_stride)204 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_multipass_fulltile_with_input_stride) { 205 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 206 for (size_t channels = 1; channels < 8; channels++) { 207 for (size_t rows = 14; rows <= 35; rows += 7) { 208 GAvgPoolMicrokernelTester() 209 .rows(rows) 210 .channels(channels) 211 .input_stride(11) 212 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 213 } 214 } 215 } 216 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_2pass_fulltile)217 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_2pass_fulltile) { 218 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 219 for (size_t channels = 9; channels < 16; channels++) { 220 GAvgPoolMicrokernelTester() 221 .rows(14) 222 .channels(channels) 223 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 224 } 225 } 226 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_2pass_fulltile_with_qmax)227 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_2pass_fulltile_with_qmax) { 228 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 229 for (size_t channels = 9; channels < 16; channels++) { 230 GAvgPoolMicrokernelTester() 231 .rows(14) 232 .channels(channels) 233 .qmax(128) 234 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 235 } 236 } 237 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_2pass_fulltile_with_qmin)238 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_2pass_fulltile_with_qmin) { 239 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 240 for (size_t channels = 9; channels < 16; channels++) { 241 GAvgPoolMicrokernelTester() 242 .rows(14) 243 .channels(channels) 244 .qmin(128) 245 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 246 } 247 } 248 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_2pass_subtile)249 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_2pass_subtile) { 250 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 251 for (size_t channels = 9; channels < 16; channels++) { 252 for (size_t rows = 8; rows < 14; rows++) { 253 GAvgPoolMicrokernelTester() 254 .rows(rows) 255 .channels(channels) 256 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 257 } 258 } 259 } 260 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_multipass_fulltile)261 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_multipass_fulltile) { 262 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 263 for (size_t channels = 9; channels < 16; channels++) { 264 for (size_t rows = 14; rows < 35; rows += 14) { 265 GAvgPoolMicrokernelTester() 266 .rows(rows) 267 .channels(channels) 268 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 269 } 270 } 271 } 272 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_multipass_fulltile_with_input_stride)273 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_multipass_fulltile_with_input_stride) { 274 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 275 for (size_t channels = 9; channels < 16; channels++) { 276 for (size_t rows = 14; rows < 35; rows += 14) { 277 GAvgPoolMicrokernelTester() 278 .rows(rows) 279 .channels(channels) 280 .input_stride(29) 281 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 282 } 283 } 284 } 285 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 286 287 288 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_eq_16_2pass_fulltile)289 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_eq_16_2pass_fulltile) { 290 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 291 GAvgPoolMicrokernelTester() 292 .rows(14) 293 .channels(16) 294 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 295 } 296 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_eq_16_2pass_fulltile_with_input_stride)297 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_eq_16_2pass_fulltile_with_input_stride) { 298 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 299 GAvgPoolMicrokernelTester() 300 .rows(14) 301 .channels(16) 302 .input_stride(19) 303 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 304 } 305 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_eq_16_2pass_fulltile_with_qmax)306 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_eq_16_2pass_fulltile_with_qmax) { 307 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 308 GAvgPoolMicrokernelTester() 309 .rows(14) 310 .channels(16) 311 .qmax(128) 312 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 313 } 314 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_eq_16_2pass_fulltile_with_qmin)315 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_eq_16_2pass_fulltile_with_qmin) { 316 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 317 GAvgPoolMicrokernelTester() 318 .rows(14) 319 .channels(16) 320 .qmin(128) 321 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 322 } 323 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_eq_16_2pass_subtile)324 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_eq_16_2pass_subtile) { 325 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 326 for (size_t rows = 8; rows < 14; rows++) { 327 GAvgPoolMicrokernelTester() 328 .rows(rows) 329 .channels(16) 330 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 331 } 332 } 333 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_eq_16_2pass_subtile_with_input_stride)334 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_eq_16_2pass_subtile_with_input_stride) { 335 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 336 for (size_t rows = 8; rows < 14; rows++) { 337 GAvgPoolMicrokernelTester() 338 .rows(rows) 339 .channels(16) 340 .input_stride(19) 341 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 342 } 343 } 344 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_eq_16_multipass_fulltile)345 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_eq_16_multipass_fulltile) { 346 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 347 for (size_t rows = 14; rows <= 35; rows += 7) { 348 GAvgPoolMicrokernelTester() 349 .rows(rows) 350 .channels(16) 351 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 352 } 353 } 354 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_eq_16_multipass_fulltile_with_input_stride)355 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_eq_16_multipass_fulltile_with_input_stride) { 356 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 357 for (size_t rows = 14; rows <= 35; rows += 7) { 358 GAvgPoolMicrokernelTester() 359 .rows(rows) 360 .channels(16) 361 .input_stride(19) 362 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 363 } 364 } 365 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_div_16_2pass_fulltile)366 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_div_16_2pass_fulltile) { 367 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 368 for (size_t channels = 32; channels < 128; channels += 16) { 369 GAvgPoolMicrokernelTester() 370 .rows(14) 371 .channels(channels) 372 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 373 } 374 } 375 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_div_16_2pass_subtile)376 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_div_16_2pass_subtile) { 377 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 378 for (size_t channels = 32; channels < 128; channels += 16) { 379 for (size_t rows = 8; rows < 14; rows++) { 380 GAvgPoolMicrokernelTester() 381 .rows(rows) 382 .channels(channels) 383 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 384 } 385 } 386 } 387 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_div_16_multipass_fulltile)388 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_div_16_multipass_fulltile) { 389 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 390 for (size_t channels = 32; channels < 128; channels += 16) { 391 for (size_t rows = 14; rows <= 35; rows += 7) { 392 GAvgPoolMicrokernelTester() 393 .rows(rows) 394 .channels(channels) 395 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 396 } 397 } 398 } 399 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_div_16_multipass_fulltile_with_input_stride)400 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_div_16_multipass_fulltile_with_input_stride) { 401 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 402 for (size_t channels = 32; channels < 128; channels += 16) { 403 for (size_t rows = 14; rows <= 35; rows += 7) { 404 GAvgPoolMicrokernelTester() 405 .rows(rows) 406 .channels(channels) 407 .input_stride(263) 408 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 409 } 410 } 411 } 412 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_lt_16_2pass_fulltile)413 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_lt_16_2pass_fulltile) { 414 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 415 for (size_t channels = 1; channels < 16; channels++) { 416 GAvgPoolMicrokernelTester() 417 .rows(14) 418 .channels(channels) 419 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 420 } 421 } 422 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_lt_16_2pass_fulltile_with_qmax)423 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_lt_16_2pass_fulltile_with_qmax) { 424 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 425 for (size_t channels = 1; channels < 16; channels++) { 426 GAvgPoolMicrokernelTester() 427 .rows(14) 428 .channels(channels) 429 .qmax(128) 430 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 431 } 432 } 433 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_lt_16_2pass_fulltile_with_qmin)434 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_lt_16_2pass_fulltile_with_qmin) { 435 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 436 for (size_t channels = 1; channels < 16; channels++) { 437 GAvgPoolMicrokernelTester() 438 .rows(14) 439 .channels(channels) 440 .qmin(128) 441 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 442 } 443 } 444 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_lt_16_2pass_subtile)445 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_lt_16_2pass_subtile) { 446 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 447 for (size_t channels = 1; channels < 16; channels++) { 448 for (size_t rows = 8; rows < 14; rows++) { 449 GAvgPoolMicrokernelTester() 450 .rows(rows) 451 .channels(channels) 452 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 453 } 454 } 455 } 456 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_lt_16_multipass_fulltile)457 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_lt_16_multipass_fulltile) { 458 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 459 for (size_t channels = 1; channels < 16; channels++) { 460 for (size_t rows = 14; rows <= 35; rows += 7) { 461 GAvgPoolMicrokernelTester() 462 .rows(rows) 463 .channels(channels) 464 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 465 } 466 } 467 } 468 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_lt_16_multipass_fulltile_with_input_stride)469 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_lt_16_multipass_fulltile_with_input_stride) { 470 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 471 for (size_t channels = 1; channels < 16; channels++) { 472 for (size_t rows = 14; rows <= 35; rows += 7) { 473 GAvgPoolMicrokernelTester() 474 .rows(rows) 475 .channels(channels) 476 .input_stride(19) 477 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 478 } 479 } 480 } 481 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_gt_16_2pass_fulltile)482 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_gt_16_2pass_fulltile) { 483 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 484 for (size_t channels = 17; channels < 32; channels++) { 485 GAvgPoolMicrokernelTester() 486 .rows(14) 487 .channels(channels) 488 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 489 } 490 } 491 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_gt_16_2pass_fulltile_with_qmax)492 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_gt_16_2pass_fulltile_with_qmax) { 493 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 494 for (size_t channels = 17; channels < 32; channels++) { 495 GAvgPoolMicrokernelTester() 496 .rows(14) 497 .channels(channels) 498 .qmax(128) 499 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 500 } 501 } 502 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_gt_16_2pass_fulltile_with_qmin)503 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_gt_16_2pass_fulltile_with_qmin) { 504 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 505 for (size_t channels = 17; channels < 32; channels++) { 506 GAvgPoolMicrokernelTester() 507 .rows(14) 508 .channels(channels) 509 .qmin(128) 510 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 511 } 512 } 513 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_gt_16_2pass_subtile)514 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_gt_16_2pass_subtile) { 515 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 516 for (size_t channels = 17; channels < 32; channels++) { 517 for (size_t rows = 8; rows < 14; rows++) { 518 GAvgPoolMicrokernelTester() 519 .rows(rows) 520 .channels(channels) 521 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 522 } 523 } 524 } 525 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_gt_16_multipass_fulltile)526 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_gt_16_multipass_fulltile) { 527 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 528 for (size_t channels = 17; channels < 32; channels++) { 529 for (size_t rows = 14; rows < 35; rows += 14) { 530 GAvgPoolMicrokernelTester() 531 .rows(rows) 532 .channels(channels) 533 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 534 } 535 } 536 } 537 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16,channels_gt_16_multipass_fulltile_with_input_stride)538 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C16, channels_gt_16_multipass_fulltile_with_input_stride) { 539 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 540 for (size_t channels = 17; channels < 32; channels++) { 541 for (size_t rows = 14; rows < 35; rows += 14) { 542 GAvgPoolMicrokernelTester() 543 .rows(rows) 544 .channels(channels) 545 .input_stride(47) 546 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 547 } 548 } 549 } 550 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 551 552 553 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_eq_24_2pass_fulltile)554 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_eq_24_2pass_fulltile) { 555 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 556 GAvgPoolMicrokernelTester() 557 .rows(14) 558 .channels(24) 559 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 560 } 561 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_eq_24_2pass_fulltile_with_input_stride)562 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_eq_24_2pass_fulltile_with_input_stride) { 563 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 564 GAvgPoolMicrokernelTester() 565 .rows(14) 566 .channels(24) 567 .input_stride(29) 568 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 569 } 570 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_eq_24_2pass_fulltile_with_qmax)571 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_eq_24_2pass_fulltile_with_qmax) { 572 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 573 GAvgPoolMicrokernelTester() 574 .rows(14) 575 .channels(24) 576 .qmax(128) 577 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 578 } 579 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_eq_24_2pass_fulltile_with_qmin)580 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_eq_24_2pass_fulltile_with_qmin) { 581 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 582 GAvgPoolMicrokernelTester() 583 .rows(14) 584 .channels(24) 585 .qmin(128) 586 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 587 } 588 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_eq_24_2pass_subtile)589 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_eq_24_2pass_subtile) { 590 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 591 for (size_t rows = 8; rows < 14; rows++) { 592 GAvgPoolMicrokernelTester() 593 .rows(rows) 594 .channels(24) 595 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 596 } 597 } 598 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_eq_24_2pass_subtile_with_input_stride)599 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_eq_24_2pass_subtile_with_input_stride) { 600 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 601 for (size_t rows = 8; rows < 14; rows++) { 602 GAvgPoolMicrokernelTester() 603 .rows(rows) 604 .channels(24) 605 .input_stride(29) 606 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 607 } 608 } 609 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_eq_24_multipass_fulltile)610 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_eq_24_multipass_fulltile) { 611 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 612 for (size_t rows = 14; rows <= 35; rows += 7) { 613 GAvgPoolMicrokernelTester() 614 .rows(rows) 615 .channels(24) 616 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 617 } 618 } 619 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_eq_24_multipass_fulltile_with_input_stride)620 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_eq_24_multipass_fulltile_with_input_stride) { 621 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 622 for (size_t rows = 14; rows <= 35; rows += 7) { 623 GAvgPoolMicrokernelTester() 624 .rows(rows) 625 .channels(24) 626 .input_stride(29) 627 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 628 } 629 } 630 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_div_24_2pass_fulltile)631 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_div_24_2pass_fulltile) { 632 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 633 for (size_t channels = 48; channels < 192; channels += 24) { 634 GAvgPoolMicrokernelTester() 635 .rows(14) 636 .channels(channels) 637 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 638 } 639 } 640 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_div_24_2pass_subtile)641 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_div_24_2pass_subtile) { 642 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 643 for (size_t channels = 48; channels < 192; channels += 24) { 644 for (size_t rows = 8; rows < 14; rows++) { 645 GAvgPoolMicrokernelTester() 646 .rows(rows) 647 .channels(channels) 648 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 649 } 650 } 651 } 652 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_div_24_multipass_fulltile)653 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_div_24_multipass_fulltile) { 654 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 655 for (size_t channels = 48; channels < 192; channels += 24) { 656 for (size_t rows = 14; rows <= 35; rows += 7) { 657 GAvgPoolMicrokernelTester() 658 .rows(rows) 659 .channels(channels) 660 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 661 } 662 } 663 } 664 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_div_24_multipass_fulltile_with_input_stride)665 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_div_24_multipass_fulltile_with_input_stride) { 666 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 667 for (size_t channels = 48; channels < 192; channels += 24) { 668 for (size_t rows = 14; rows <= 35; rows += 7) { 669 GAvgPoolMicrokernelTester() 670 .rows(rows) 671 .channels(channels) 672 .input_stride(389) 673 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 674 } 675 } 676 } 677 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_lt_24_2pass_fulltile)678 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_lt_24_2pass_fulltile) { 679 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 680 for (size_t channels = 1; channels < 24; channels++) { 681 GAvgPoolMicrokernelTester() 682 .rows(14) 683 .channels(channels) 684 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 685 } 686 } 687 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_lt_24_2pass_fulltile_with_qmax)688 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_lt_24_2pass_fulltile_with_qmax) { 689 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 690 for (size_t channels = 1; channels < 24; channels++) { 691 GAvgPoolMicrokernelTester() 692 .rows(14) 693 .channels(channels) 694 .qmax(128) 695 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 696 } 697 } 698 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_lt_24_2pass_fulltile_with_qmin)699 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_lt_24_2pass_fulltile_with_qmin) { 700 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 701 for (size_t channels = 1; channels < 24; channels++) { 702 GAvgPoolMicrokernelTester() 703 .rows(14) 704 .channels(channels) 705 .qmin(128) 706 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 707 } 708 } 709 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_lt_24_2pass_subtile)710 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_lt_24_2pass_subtile) { 711 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 712 for (size_t channels = 1; channels < 24; channels++) { 713 for (size_t rows = 8; rows < 14; rows++) { 714 GAvgPoolMicrokernelTester() 715 .rows(rows) 716 .channels(channels) 717 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 718 } 719 } 720 } 721 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_lt_24_multipass_fulltile)722 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_lt_24_multipass_fulltile) { 723 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 724 for (size_t channels = 1; channels < 24; channels++) { 725 for (size_t rows = 14; rows <= 35; rows += 7) { 726 GAvgPoolMicrokernelTester() 727 .rows(rows) 728 .channels(channels) 729 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 730 } 731 } 732 } 733 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_lt_24_multipass_fulltile_with_input_stride)734 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_lt_24_multipass_fulltile_with_input_stride) { 735 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 736 for (size_t channels = 1; channels < 24; channels++) { 737 for (size_t rows = 14; rows <= 35; rows += 7) { 738 GAvgPoolMicrokernelTester() 739 .rows(rows) 740 .channels(channels) 741 .input_stride(29) 742 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 743 } 744 } 745 } 746 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_gt_24_2pass_fulltile)747 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_gt_24_2pass_fulltile) { 748 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 749 for (size_t channels = 25; channels < 48; channels++) { 750 GAvgPoolMicrokernelTester() 751 .rows(14) 752 .channels(channels) 753 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 754 } 755 } 756 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_gt_24_2pass_fulltile_with_qmax)757 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_gt_24_2pass_fulltile_with_qmax) { 758 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 759 for (size_t channels = 25; channels < 48; channels++) { 760 GAvgPoolMicrokernelTester() 761 .rows(14) 762 .channels(channels) 763 .qmax(128) 764 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 765 } 766 } 767 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_gt_24_2pass_fulltile_with_qmin)768 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_gt_24_2pass_fulltile_with_qmin) { 769 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 770 for (size_t channels = 25; channels < 48; channels++) { 771 GAvgPoolMicrokernelTester() 772 .rows(14) 773 .channels(channels) 774 .qmin(128) 775 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 776 } 777 } 778 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_gt_24_2pass_subtile)779 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_gt_24_2pass_subtile) { 780 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 781 for (size_t channels = 25; channels < 48; channels++) { 782 for (size_t rows = 8; rows < 14; rows++) { 783 GAvgPoolMicrokernelTester() 784 .rows(rows) 785 .channels(channels) 786 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 787 } 788 } 789 } 790 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_gt_24_multipass_fulltile)791 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_gt_24_multipass_fulltile) { 792 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 793 for (size_t channels = 25; channels < 48; channels++) { 794 for (size_t rows = 14; rows < 35; rows += 14) { 795 GAvgPoolMicrokernelTester() 796 .rows(rows) 797 .channels(channels) 798 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 799 } 800 } 801 } 802 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24,channels_gt_24_multipass_fulltile_with_input_stride)803 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C24, channels_gt_24_multipass_fulltile_with_input_stride) { 804 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 805 for (size_t channels = 25; channels < 48; channels++) { 806 for (size_t rows = 14; rows < 35; rows += 14) { 807 GAvgPoolMicrokernelTester() 808 .rows(rows) 809 .channels(channels) 810 .input_stride(61) 811 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 812 } 813 } 814 } 815 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 816 817 818 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_eq_32_2pass_fulltile)819 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_eq_32_2pass_fulltile) { 820 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 821 GAvgPoolMicrokernelTester() 822 .rows(14) 823 .channels(32) 824 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 825 } 826 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_eq_32_2pass_fulltile_with_input_stride)827 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_eq_32_2pass_fulltile_with_input_stride) { 828 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 829 GAvgPoolMicrokernelTester() 830 .rows(14) 831 .channels(32) 832 .input_stride(37) 833 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 834 } 835 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_eq_32_2pass_fulltile_with_qmax)836 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_eq_32_2pass_fulltile_with_qmax) { 837 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 838 GAvgPoolMicrokernelTester() 839 .rows(14) 840 .channels(32) 841 .qmax(128) 842 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 843 } 844 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_eq_32_2pass_fulltile_with_qmin)845 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_eq_32_2pass_fulltile_with_qmin) { 846 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 847 GAvgPoolMicrokernelTester() 848 .rows(14) 849 .channels(32) 850 .qmin(128) 851 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 852 } 853 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_eq_32_2pass_subtile)854 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_eq_32_2pass_subtile) { 855 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 856 for (size_t rows = 8; rows < 14; rows++) { 857 GAvgPoolMicrokernelTester() 858 .rows(rows) 859 .channels(32) 860 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 861 } 862 } 863 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_eq_32_2pass_subtile_with_input_stride)864 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_eq_32_2pass_subtile_with_input_stride) { 865 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 866 for (size_t rows = 8; rows < 14; rows++) { 867 GAvgPoolMicrokernelTester() 868 .rows(rows) 869 .channels(32) 870 .input_stride(37) 871 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 872 } 873 } 874 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_eq_32_multipass_fulltile)875 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_eq_32_multipass_fulltile) { 876 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 877 for (size_t rows = 14; rows <= 35; rows += 7) { 878 GAvgPoolMicrokernelTester() 879 .rows(rows) 880 .channels(32) 881 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 882 } 883 } 884 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_eq_32_multipass_fulltile_with_input_stride)885 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_eq_32_multipass_fulltile_with_input_stride) { 886 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 887 for (size_t rows = 14; rows <= 35; rows += 7) { 888 GAvgPoolMicrokernelTester() 889 .rows(rows) 890 .channels(32) 891 .input_stride(37) 892 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 893 } 894 } 895 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_div_32_2pass_fulltile)896 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_div_32_2pass_fulltile) { 897 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 898 for (size_t channels = 64; channels < 256; channels += 32) { 899 GAvgPoolMicrokernelTester() 900 .rows(14) 901 .channels(channels) 902 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 903 } 904 } 905 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_div_32_2pass_subtile)906 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_div_32_2pass_subtile) { 907 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 908 for (size_t channels = 64; channels < 256; channels += 32) { 909 for (size_t rows = 8; rows < 14; rows++) { 910 GAvgPoolMicrokernelTester() 911 .rows(rows) 912 .channels(channels) 913 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 914 } 915 } 916 } 917 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_div_32_multipass_fulltile)918 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_div_32_multipass_fulltile) { 919 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 920 for (size_t channels = 64; channels < 256; channels += 32) { 921 for (size_t rows = 14; rows <= 35; rows += 7) { 922 GAvgPoolMicrokernelTester() 923 .rows(rows) 924 .channels(channels) 925 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 926 } 927 } 928 } 929 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_div_32_multipass_fulltile_with_input_stride)930 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_div_32_multipass_fulltile_with_input_stride) { 931 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 932 for (size_t channels = 64; channels < 256; channels += 32) { 933 for (size_t rows = 14; rows <= 35; rows += 7) { 934 GAvgPoolMicrokernelTester() 935 .rows(rows) 936 .channels(channels) 937 .input_stride(521) 938 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 939 } 940 } 941 } 942 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_lt_32_2pass_fulltile)943 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_lt_32_2pass_fulltile) { 944 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 945 for (size_t channels = 1; channels < 32; channels++) { 946 GAvgPoolMicrokernelTester() 947 .rows(14) 948 .channels(channels) 949 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 950 } 951 } 952 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_lt_32_2pass_fulltile_with_qmax)953 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_lt_32_2pass_fulltile_with_qmax) { 954 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 955 for (size_t channels = 1; channels < 32; channels++) { 956 GAvgPoolMicrokernelTester() 957 .rows(14) 958 .channels(channels) 959 .qmax(128) 960 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 961 } 962 } 963 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_lt_32_2pass_fulltile_with_qmin)964 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_lt_32_2pass_fulltile_with_qmin) { 965 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 966 for (size_t channels = 1; channels < 32; channels++) { 967 GAvgPoolMicrokernelTester() 968 .rows(14) 969 .channels(channels) 970 .qmin(128) 971 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 972 } 973 } 974 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_lt_32_2pass_subtile)975 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_lt_32_2pass_subtile) { 976 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 977 for (size_t channels = 1; channels < 32; channels++) { 978 for (size_t rows = 8; rows < 14; rows++) { 979 GAvgPoolMicrokernelTester() 980 .rows(rows) 981 .channels(channels) 982 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 983 } 984 } 985 } 986 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_lt_32_multipass_fulltile)987 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_lt_32_multipass_fulltile) { 988 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 989 for (size_t channels = 1; channels < 32; channels++) { 990 for (size_t rows = 14; rows <= 35; rows += 7) { 991 GAvgPoolMicrokernelTester() 992 .rows(rows) 993 .channels(channels) 994 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 995 } 996 } 997 } 998 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_lt_32_multipass_fulltile_with_input_stride)999 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_lt_32_multipass_fulltile_with_input_stride) { 1000 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1001 for (size_t channels = 1; channels < 32; channels++) { 1002 for (size_t rows = 14; rows <= 35; rows += 7) { 1003 GAvgPoolMicrokernelTester() 1004 .rows(rows) 1005 .channels(channels) 1006 .input_stride(37) 1007 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1008 } 1009 } 1010 } 1011 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_gt_32_2pass_fulltile)1012 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_gt_32_2pass_fulltile) { 1013 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1014 for (size_t channels = 33; channels < 64; channels++) { 1015 GAvgPoolMicrokernelTester() 1016 .rows(14) 1017 .channels(channels) 1018 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1019 } 1020 } 1021 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_gt_32_2pass_fulltile_with_qmax)1022 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_gt_32_2pass_fulltile_with_qmax) { 1023 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1024 for (size_t channels = 33; channels < 64; channels++) { 1025 GAvgPoolMicrokernelTester() 1026 .rows(14) 1027 .channels(channels) 1028 .qmax(128) 1029 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1030 } 1031 } 1032 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_gt_32_2pass_fulltile_with_qmin)1033 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_gt_32_2pass_fulltile_with_qmin) { 1034 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1035 for (size_t channels = 33; channels < 64; channels++) { 1036 GAvgPoolMicrokernelTester() 1037 .rows(14) 1038 .channels(channels) 1039 .qmin(128) 1040 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1041 } 1042 } 1043 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_gt_32_2pass_subtile)1044 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_gt_32_2pass_subtile) { 1045 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1046 for (size_t channels = 33; channels < 64; channels++) { 1047 for (size_t rows = 8; rows < 14; rows++) { 1048 GAvgPoolMicrokernelTester() 1049 .rows(rows) 1050 .channels(channels) 1051 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1052 } 1053 } 1054 } 1055 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_gt_32_multipass_fulltile)1056 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_gt_32_multipass_fulltile) { 1057 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1058 for (size_t channels = 33; channels < 64; channels++) { 1059 for (size_t rows = 14; rows < 35; rows += 14) { 1060 GAvgPoolMicrokernelTester() 1061 .rows(rows) 1062 .channels(channels) 1063 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1064 } 1065 } 1066 } 1067 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32,channels_gt_32_multipass_fulltile_with_input_stride)1068 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C32, channels_gt_32_multipass_fulltile_with_input_stride) { 1069 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1070 for (size_t channels = 33; channels < 64; channels++) { 1071 for (size_t rows = 14; rows < 35; rows += 14) { 1072 GAvgPoolMicrokernelTester() 1073 .rows(rows) 1074 .channels(channels) 1075 .input_stride(79) 1076 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1077 } 1078 } 1079 } 1080 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1081 1082 1083 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_fulltile)1084 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_fulltile) { 1085 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1086 GAvgPoolMicrokernelTester() 1087 .rows(7) 1088 .channels(8) 1089 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1090 } 1091 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_subtile)1092 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_subtile) { 1093 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1094 for (size_t rows = 1; rows < 7; rows++) { 1095 GAvgPoolMicrokernelTester() 1096 .rows(rows) 1097 .channels(8) 1098 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1099 } 1100 } 1101 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_fulltile_with_input_stride)1102 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_fulltile_with_input_stride) { 1103 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1104 GAvgPoolMicrokernelTester() 1105 .rows(7) 1106 .channels(8) 1107 .input_stride(11) 1108 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1109 } 1110 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_fulltile_with_qmax)1111 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_fulltile_with_qmax) { 1112 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1113 GAvgPoolMicrokernelTester() 1114 .rows(7) 1115 .channels(8) 1116 .qmax(128) 1117 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1118 } 1119 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_fulltile_with_qmin)1120 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_fulltile_with_qmin) { 1121 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1122 GAvgPoolMicrokernelTester() 1123 .rows(7) 1124 .channels(8) 1125 .qmin(128) 1126 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1127 } 1128 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_div_8_fulltile)1129 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_div_8_fulltile) { 1130 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1131 for (size_t channels = 16; channels < 64; channels += 8) { 1132 GAvgPoolMicrokernelTester() 1133 .rows(7) 1134 .channels(channels) 1135 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1136 } 1137 } 1138 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_div_8_subtile)1139 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_div_8_subtile) { 1140 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1141 for (size_t channels = 16; channels < 64; channels += 8) { 1142 for (size_t rows = 1; rows < 7; rows++) { 1143 GAvgPoolMicrokernelTester() 1144 .rows(rows) 1145 .channels(channels) 1146 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1147 } 1148 } 1149 } 1150 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_lt_8_fulltile)1151 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_lt_8_fulltile) { 1152 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1153 for (size_t channels = 1; channels < 8; channels++) { 1154 GAvgPoolMicrokernelTester() 1155 .rows(7) 1156 .channels(channels) 1157 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1158 } 1159 } 1160 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_lt_8_subtile)1161 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_lt_8_subtile) { 1162 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1163 for (size_t channels = 1; channels < 8; channels++) { 1164 for (size_t rows = 1; rows < 7; rows++) { 1165 GAvgPoolMicrokernelTester() 1166 .rows(rows) 1167 .channels(channels) 1168 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1169 } 1170 } 1171 } 1172 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_lt_8_fulltile_with_qmax)1173 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_lt_8_fulltile_with_qmax) { 1174 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1175 for (size_t channels = 1; channels < 8; channels++) { 1176 GAvgPoolMicrokernelTester() 1177 .rows(7) 1178 .channels(channels) 1179 .qmax(128) 1180 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1181 } 1182 } 1183 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_lt_8_fulltile_with_qmin)1184 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_lt_8_fulltile_with_qmin) { 1185 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1186 for (size_t channels = 1; channels < 8; channels++) { 1187 GAvgPoolMicrokernelTester() 1188 .rows(7) 1189 .channels(channels) 1190 .qmin(128) 1191 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1192 } 1193 } 1194 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_gt_8_fulltile)1195 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_gt_8_fulltile) { 1196 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1197 for (size_t channels = 9; channels < 16; channels++) { 1198 GAvgPoolMicrokernelTester() 1199 .rows(7) 1200 .channels(channels) 1201 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1202 } 1203 } 1204 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_gt_8_subtile)1205 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_gt_8_subtile) { 1206 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1207 for (size_t channels = 9; channels < 16; channels++) { 1208 for (size_t rows = 1; rows < 7; rows++) { 1209 GAvgPoolMicrokernelTester() 1210 .rows(rows) 1211 .channels(channels) 1212 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1213 } 1214 } 1215 } 1216 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_gt_8_fulltile_with_qmax)1217 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_gt_8_fulltile_with_qmax) { 1218 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1219 for (size_t channels = 9; channels < 16; channels++) { 1220 GAvgPoolMicrokernelTester() 1221 .rows(7) 1222 .channels(channels) 1223 .qmax(128) 1224 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1225 } 1226 } 1227 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_gt_8_fulltile_with_qmin)1228 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_gt_8_fulltile_with_qmin) { 1229 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1230 for (size_t channels = 9; channels < 16; channels++) { 1231 GAvgPoolMicrokernelTester() 1232 .rows(7) 1233 .channels(channels) 1234 .qmin(128) 1235 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8, xnn_init_f16_scaleminmax_neon_params); 1236 } 1237 } 1238 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1239 1240 1241 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_eq_16_fulltile)1242 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_eq_16_fulltile) { 1243 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1244 GAvgPoolMicrokernelTester() 1245 .rows(7) 1246 .channels(16) 1247 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1248 } 1249 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_eq_16_subtile)1250 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_eq_16_subtile) { 1251 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1252 for (size_t rows = 1; rows < 7; rows++) { 1253 GAvgPoolMicrokernelTester() 1254 .rows(rows) 1255 .channels(16) 1256 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1257 } 1258 } 1259 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_eq_16_fulltile_with_input_stride)1260 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_eq_16_fulltile_with_input_stride) { 1261 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1262 GAvgPoolMicrokernelTester() 1263 .rows(7) 1264 .channels(16) 1265 .input_stride(19) 1266 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1267 } 1268 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_eq_16_fulltile_with_qmax)1269 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_eq_16_fulltile_with_qmax) { 1270 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1271 GAvgPoolMicrokernelTester() 1272 .rows(7) 1273 .channels(16) 1274 .qmax(128) 1275 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1276 } 1277 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_eq_16_fulltile_with_qmin)1278 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_eq_16_fulltile_with_qmin) { 1279 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1280 GAvgPoolMicrokernelTester() 1281 .rows(7) 1282 .channels(16) 1283 .qmin(128) 1284 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1285 } 1286 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_div_16_fulltile)1287 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_div_16_fulltile) { 1288 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1289 for (size_t channels = 32; channels < 128; channels += 16) { 1290 GAvgPoolMicrokernelTester() 1291 .rows(7) 1292 .channels(channels) 1293 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1294 } 1295 } 1296 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_div_16_subtile)1297 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_div_16_subtile) { 1298 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1299 for (size_t channels = 32; channels < 128; channels += 16) { 1300 for (size_t rows = 1; rows < 7; rows++) { 1301 GAvgPoolMicrokernelTester() 1302 .rows(rows) 1303 .channels(channels) 1304 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1305 } 1306 } 1307 } 1308 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_lt_16_fulltile)1309 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_lt_16_fulltile) { 1310 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1311 for (size_t channels = 1; channels < 16; channels++) { 1312 GAvgPoolMicrokernelTester() 1313 .rows(7) 1314 .channels(channels) 1315 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1316 } 1317 } 1318 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_lt_16_subtile)1319 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_lt_16_subtile) { 1320 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1321 for (size_t channels = 1; channels < 16; channels++) { 1322 for (size_t rows = 1; rows < 7; rows++) { 1323 GAvgPoolMicrokernelTester() 1324 .rows(rows) 1325 .channels(channels) 1326 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1327 } 1328 } 1329 } 1330 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_lt_16_fulltile_with_qmax)1331 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_lt_16_fulltile_with_qmax) { 1332 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1333 for (size_t channels = 1; channels < 16; channels++) { 1334 GAvgPoolMicrokernelTester() 1335 .rows(7) 1336 .channels(channels) 1337 .qmax(128) 1338 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1339 } 1340 } 1341 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_lt_16_fulltile_with_qmin)1342 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_lt_16_fulltile_with_qmin) { 1343 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1344 for (size_t channels = 1; channels < 16; channels++) { 1345 GAvgPoolMicrokernelTester() 1346 .rows(7) 1347 .channels(channels) 1348 .qmin(128) 1349 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1350 } 1351 } 1352 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_gt_16_fulltile)1353 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_gt_16_fulltile) { 1354 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1355 for (size_t channels = 17; channels < 32; channels++) { 1356 GAvgPoolMicrokernelTester() 1357 .rows(7) 1358 .channels(channels) 1359 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1360 } 1361 } 1362 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_gt_16_subtile)1363 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_gt_16_subtile) { 1364 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1365 for (size_t channels = 17; channels < 32; channels++) { 1366 for (size_t rows = 1; rows < 7; rows++) { 1367 GAvgPoolMicrokernelTester() 1368 .rows(rows) 1369 .channels(channels) 1370 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1371 } 1372 } 1373 } 1374 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_gt_16_fulltile_with_qmax)1375 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_gt_16_fulltile_with_qmax) { 1376 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1377 for (size_t channels = 17; channels < 32; channels++) { 1378 GAvgPoolMicrokernelTester() 1379 .rows(7) 1380 .channels(channels) 1381 .qmax(128) 1382 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1383 } 1384 } 1385 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16,channels_gt_16_fulltile_with_qmin)1386 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C16, channels_gt_16_fulltile_with_qmin) { 1387 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1388 for (size_t channels = 17; channels < 32; channels++) { 1389 GAvgPoolMicrokernelTester() 1390 .rows(7) 1391 .channels(channels) 1392 .qmin(128) 1393 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c16, xnn_init_f16_scaleminmax_neon_params); 1394 } 1395 } 1396 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1397 1398 1399 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_eq_24_fulltile)1400 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_eq_24_fulltile) { 1401 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1402 GAvgPoolMicrokernelTester() 1403 .rows(7) 1404 .channels(24) 1405 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1406 } 1407 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_eq_24_subtile)1408 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_eq_24_subtile) { 1409 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1410 for (size_t rows = 1; rows < 7; rows++) { 1411 GAvgPoolMicrokernelTester() 1412 .rows(rows) 1413 .channels(24) 1414 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1415 } 1416 } 1417 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_eq_24_fulltile_with_input_stride)1418 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_eq_24_fulltile_with_input_stride) { 1419 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1420 GAvgPoolMicrokernelTester() 1421 .rows(7) 1422 .channels(24) 1423 .input_stride(29) 1424 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1425 } 1426 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_eq_24_fulltile_with_qmax)1427 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_eq_24_fulltile_with_qmax) { 1428 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1429 GAvgPoolMicrokernelTester() 1430 .rows(7) 1431 .channels(24) 1432 .qmax(128) 1433 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1434 } 1435 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_eq_24_fulltile_with_qmin)1436 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_eq_24_fulltile_with_qmin) { 1437 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1438 GAvgPoolMicrokernelTester() 1439 .rows(7) 1440 .channels(24) 1441 .qmin(128) 1442 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1443 } 1444 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_div_24_fulltile)1445 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_div_24_fulltile) { 1446 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1447 for (size_t channels = 48; channels < 192; channels += 24) { 1448 GAvgPoolMicrokernelTester() 1449 .rows(7) 1450 .channels(channels) 1451 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1452 } 1453 } 1454 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_div_24_subtile)1455 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_div_24_subtile) { 1456 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1457 for (size_t channels = 48; channels < 192; channels += 24) { 1458 for (size_t rows = 1; rows < 7; rows++) { 1459 GAvgPoolMicrokernelTester() 1460 .rows(rows) 1461 .channels(channels) 1462 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1463 } 1464 } 1465 } 1466 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_lt_24_fulltile)1467 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_lt_24_fulltile) { 1468 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1469 for (size_t channels = 1; channels < 24; channels++) { 1470 GAvgPoolMicrokernelTester() 1471 .rows(7) 1472 .channels(channels) 1473 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1474 } 1475 } 1476 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_lt_24_subtile)1477 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_lt_24_subtile) { 1478 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1479 for (size_t channels = 1; channels < 24; channels++) { 1480 for (size_t rows = 1; rows < 7; rows++) { 1481 GAvgPoolMicrokernelTester() 1482 .rows(rows) 1483 .channels(channels) 1484 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1485 } 1486 } 1487 } 1488 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_lt_24_fulltile_with_qmax)1489 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_lt_24_fulltile_with_qmax) { 1490 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1491 for (size_t channels = 1; channels < 24; channels++) { 1492 GAvgPoolMicrokernelTester() 1493 .rows(7) 1494 .channels(channels) 1495 .qmax(128) 1496 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1497 } 1498 } 1499 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_lt_24_fulltile_with_qmin)1500 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_lt_24_fulltile_with_qmin) { 1501 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1502 for (size_t channels = 1; channels < 24; channels++) { 1503 GAvgPoolMicrokernelTester() 1504 .rows(7) 1505 .channels(channels) 1506 .qmin(128) 1507 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1508 } 1509 } 1510 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_gt_24_fulltile)1511 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_gt_24_fulltile) { 1512 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1513 for (size_t channels = 25; channels < 48; channels++) { 1514 GAvgPoolMicrokernelTester() 1515 .rows(7) 1516 .channels(channels) 1517 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1518 } 1519 } 1520 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_gt_24_subtile)1521 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_gt_24_subtile) { 1522 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1523 for (size_t channels = 25; channels < 48; channels++) { 1524 for (size_t rows = 1; rows < 7; rows++) { 1525 GAvgPoolMicrokernelTester() 1526 .rows(rows) 1527 .channels(channels) 1528 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1529 } 1530 } 1531 } 1532 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_gt_24_fulltile_with_qmax)1533 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_gt_24_fulltile_with_qmax) { 1534 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1535 for (size_t channels = 25; channels < 48; channels++) { 1536 GAvgPoolMicrokernelTester() 1537 .rows(7) 1538 .channels(channels) 1539 .qmax(128) 1540 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1541 } 1542 } 1543 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24,channels_gt_24_fulltile_with_qmin)1544 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C24, channels_gt_24_fulltile_with_qmin) { 1545 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1546 for (size_t channels = 25; channels < 48; channels++) { 1547 GAvgPoolMicrokernelTester() 1548 .rows(7) 1549 .channels(channels) 1550 .qmin(128) 1551 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c24, xnn_init_f16_scaleminmax_neon_params); 1552 } 1553 } 1554 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1555 1556 1557 #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_eq_32_fulltile)1558 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_eq_32_fulltile) { 1559 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1560 GAvgPoolMicrokernelTester() 1561 .rows(7) 1562 .channels(32) 1563 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1564 } 1565 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_eq_32_subtile)1566 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_eq_32_subtile) { 1567 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1568 for (size_t rows = 1; rows < 7; rows++) { 1569 GAvgPoolMicrokernelTester() 1570 .rows(rows) 1571 .channels(32) 1572 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1573 } 1574 } 1575 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_eq_32_fulltile_with_input_stride)1576 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_eq_32_fulltile_with_input_stride) { 1577 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1578 GAvgPoolMicrokernelTester() 1579 .rows(7) 1580 .channels(32) 1581 .input_stride(37) 1582 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1583 } 1584 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_eq_32_fulltile_with_qmax)1585 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_eq_32_fulltile_with_qmax) { 1586 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1587 GAvgPoolMicrokernelTester() 1588 .rows(7) 1589 .channels(32) 1590 .qmax(128) 1591 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1592 } 1593 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_eq_32_fulltile_with_qmin)1594 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_eq_32_fulltile_with_qmin) { 1595 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1596 GAvgPoolMicrokernelTester() 1597 .rows(7) 1598 .channels(32) 1599 .qmin(128) 1600 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1601 } 1602 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_div_32_fulltile)1603 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_div_32_fulltile) { 1604 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1605 for (size_t channels = 64; channels < 256; channels += 32) { 1606 GAvgPoolMicrokernelTester() 1607 .rows(7) 1608 .channels(channels) 1609 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1610 } 1611 } 1612 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_div_32_subtile)1613 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_div_32_subtile) { 1614 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1615 for (size_t channels = 64; channels < 256; channels += 32) { 1616 for (size_t rows = 1; rows < 7; rows++) { 1617 GAvgPoolMicrokernelTester() 1618 .rows(rows) 1619 .channels(channels) 1620 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1621 } 1622 } 1623 } 1624 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_lt_32_fulltile)1625 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_lt_32_fulltile) { 1626 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1627 for (size_t channels = 1; channels < 32; channels++) { 1628 GAvgPoolMicrokernelTester() 1629 .rows(7) 1630 .channels(channels) 1631 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1632 } 1633 } 1634 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_lt_32_subtile)1635 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_lt_32_subtile) { 1636 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1637 for (size_t channels = 1; channels < 32; channels++) { 1638 for (size_t rows = 1; rows < 7; rows++) { 1639 GAvgPoolMicrokernelTester() 1640 .rows(rows) 1641 .channels(channels) 1642 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1643 } 1644 } 1645 } 1646 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_lt_32_fulltile_with_qmax)1647 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_lt_32_fulltile_with_qmax) { 1648 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1649 for (size_t channels = 1; channels < 32; channels++) { 1650 GAvgPoolMicrokernelTester() 1651 .rows(7) 1652 .channels(channels) 1653 .qmax(128) 1654 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1655 } 1656 } 1657 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_lt_32_fulltile_with_qmin)1658 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_lt_32_fulltile_with_qmin) { 1659 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1660 for (size_t channels = 1; channels < 32; channels++) { 1661 GAvgPoolMicrokernelTester() 1662 .rows(7) 1663 .channels(channels) 1664 .qmin(128) 1665 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1666 } 1667 } 1668 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_gt_32_fulltile)1669 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_gt_32_fulltile) { 1670 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1671 for (size_t channels = 33; channels < 64; channels++) { 1672 GAvgPoolMicrokernelTester() 1673 .rows(7) 1674 .channels(channels) 1675 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1676 } 1677 } 1678 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_gt_32_subtile)1679 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_gt_32_subtile) { 1680 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1681 for (size_t channels = 33; channels < 64; channels++) { 1682 for (size_t rows = 1; rows < 7; rows++) { 1683 GAvgPoolMicrokernelTester() 1684 .rows(rows) 1685 .channels(channels) 1686 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1687 } 1688 } 1689 } 1690 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_gt_32_fulltile_with_qmax)1691 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_gt_32_fulltile_with_qmax) { 1692 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1693 for (size_t channels = 33; channels < 64; channels++) { 1694 GAvgPoolMicrokernelTester() 1695 .rows(7) 1696 .channels(channels) 1697 .qmax(128) 1698 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1699 } 1700 } 1701 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32,channels_gt_32_fulltile_with_qmin)1702 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C32, channels_gt_32_fulltile_with_qmin) { 1703 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1704 for (size_t channels = 33; channels < 64; channels++) { 1705 GAvgPoolMicrokernelTester() 1706 .rows(7) 1707 .channels(channels) 1708 .qmin(128) 1709 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c32, xnn_init_f16_scaleminmax_neon_params); 1710 } 1711 } 1712 #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1713 1714 1715 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_eq_8_2pass_fulltile)1716 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_eq_8_2pass_fulltile) { 1717 TEST_REQUIRES_X86_F16C; 1718 GAvgPoolMicrokernelTester() 1719 .rows(14) 1720 .channels(8) 1721 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1722 } 1723 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_eq_8_2pass_fulltile_with_input_stride)1724 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_eq_8_2pass_fulltile_with_input_stride) { 1725 TEST_REQUIRES_X86_F16C; 1726 GAvgPoolMicrokernelTester() 1727 .rows(14) 1728 .channels(8) 1729 .input_stride(11) 1730 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1731 } 1732 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_eq_8_2pass_fulltile_with_qmax)1733 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_eq_8_2pass_fulltile_with_qmax) { 1734 TEST_REQUIRES_X86_F16C; 1735 GAvgPoolMicrokernelTester() 1736 .rows(14) 1737 .channels(8) 1738 .qmax(128) 1739 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1740 } 1741 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_eq_8_2pass_fulltile_with_qmin)1742 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_eq_8_2pass_fulltile_with_qmin) { 1743 TEST_REQUIRES_X86_F16C; 1744 GAvgPoolMicrokernelTester() 1745 .rows(14) 1746 .channels(8) 1747 .qmin(128) 1748 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1749 } 1750 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_eq_8_2pass_subtile)1751 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_eq_8_2pass_subtile) { 1752 TEST_REQUIRES_X86_F16C; 1753 for (size_t rows = 8; rows < 14; rows++) { 1754 GAvgPoolMicrokernelTester() 1755 .rows(rows) 1756 .channels(8) 1757 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1758 } 1759 } 1760 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_eq_8_2pass_subtile_with_input_stride)1761 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_eq_8_2pass_subtile_with_input_stride) { 1762 TEST_REQUIRES_X86_F16C; 1763 for (size_t rows = 8; rows < 14; rows++) { 1764 GAvgPoolMicrokernelTester() 1765 .rows(rows) 1766 .channels(8) 1767 .input_stride(11) 1768 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1769 } 1770 } 1771 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_eq_8_multipass_fulltile)1772 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_eq_8_multipass_fulltile) { 1773 TEST_REQUIRES_X86_F16C; 1774 for (size_t rows = 14; rows <= 35; rows += 7) { 1775 GAvgPoolMicrokernelTester() 1776 .rows(rows) 1777 .channels(8) 1778 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1779 } 1780 } 1781 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_eq_8_multipass_fulltile_with_input_stride)1782 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_eq_8_multipass_fulltile_with_input_stride) { 1783 TEST_REQUIRES_X86_F16C; 1784 for (size_t rows = 14; rows <= 35; rows += 7) { 1785 GAvgPoolMicrokernelTester() 1786 .rows(rows) 1787 .channels(8) 1788 .input_stride(11) 1789 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1790 } 1791 } 1792 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_div_8_2pass_fulltile)1793 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_div_8_2pass_fulltile) { 1794 TEST_REQUIRES_X86_F16C; 1795 for (size_t channels = 16; channels < 64; channels += 8) { 1796 GAvgPoolMicrokernelTester() 1797 .rows(14) 1798 .channels(channels) 1799 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1800 } 1801 } 1802 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_div_8_2pass_subtile)1803 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_div_8_2pass_subtile) { 1804 TEST_REQUIRES_X86_F16C; 1805 for (size_t channels = 16; channels < 64; channels += 8) { 1806 for (size_t rows = 8; rows < 14; rows++) { 1807 GAvgPoolMicrokernelTester() 1808 .rows(rows) 1809 .channels(channels) 1810 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1811 } 1812 } 1813 } 1814 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_div_8_multipass_fulltile)1815 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_div_8_multipass_fulltile) { 1816 TEST_REQUIRES_X86_F16C; 1817 for (size_t channels = 16; channels < 64; channels += 8) { 1818 for (size_t rows = 14; rows <= 35; rows += 7) { 1819 GAvgPoolMicrokernelTester() 1820 .rows(rows) 1821 .channels(channels) 1822 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1823 } 1824 } 1825 } 1826 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_div_8_multipass_fulltile_with_input_stride)1827 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_div_8_multipass_fulltile_with_input_stride) { 1828 TEST_REQUIRES_X86_F16C; 1829 for (size_t channels = 16; channels < 64; channels += 8) { 1830 for (size_t rows = 14; rows <= 35; rows += 7) { 1831 GAvgPoolMicrokernelTester() 1832 .rows(rows) 1833 .channels(channels) 1834 .input_stride(131) 1835 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1836 } 1837 } 1838 } 1839 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_lt_8_2pass_fulltile)1840 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_lt_8_2pass_fulltile) { 1841 TEST_REQUIRES_X86_F16C; 1842 for (size_t channels = 1; channels < 8; channels++) { 1843 GAvgPoolMicrokernelTester() 1844 .rows(14) 1845 .channels(channels) 1846 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1847 } 1848 } 1849 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_lt_8_2pass_fulltile_with_qmax)1850 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_lt_8_2pass_fulltile_with_qmax) { 1851 TEST_REQUIRES_X86_F16C; 1852 for (size_t channels = 1; channels < 8; channels++) { 1853 GAvgPoolMicrokernelTester() 1854 .rows(14) 1855 .channels(channels) 1856 .qmax(128) 1857 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1858 } 1859 } 1860 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_lt_8_2pass_fulltile_with_qmin)1861 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_lt_8_2pass_fulltile_with_qmin) { 1862 TEST_REQUIRES_X86_F16C; 1863 for (size_t channels = 1; channels < 8; channels++) { 1864 GAvgPoolMicrokernelTester() 1865 .rows(14) 1866 .channels(channels) 1867 .qmin(128) 1868 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1869 } 1870 } 1871 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_lt_8_2pass_subtile)1872 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_lt_8_2pass_subtile) { 1873 TEST_REQUIRES_X86_F16C; 1874 for (size_t channels = 1; channels < 8; channels++) { 1875 for (size_t rows = 8; rows < 14; rows++) { 1876 GAvgPoolMicrokernelTester() 1877 .rows(rows) 1878 .channels(channels) 1879 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1880 } 1881 } 1882 } 1883 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_lt_8_multipass_fulltile)1884 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_lt_8_multipass_fulltile) { 1885 TEST_REQUIRES_X86_F16C; 1886 for (size_t channels = 1; channels < 8; channels++) { 1887 for (size_t rows = 14; rows <= 35; rows += 7) { 1888 GAvgPoolMicrokernelTester() 1889 .rows(rows) 1890 .channels(channels) 1891 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1892 } 1893 } 1894 } 1895 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_lt_8_multipass_fulltile_with_input_stride)1896 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_lt_8_multipass_fulltile_with_input_stride) { 1897 TEST_REQUIRES_X86_F16C; 1898 for (size_t channels = 1; channels < 8; channels++) { 1899 for (size_t rows = 14; rows <= 35; rows += 7) { 1900 GAvgPoolMicrokernelTester() 1901 .rows(rows) 1902 .channels(channels) 1903 .input_stride(11) 1904 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1905 } 1906 } 1907 } 1908 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_gt_8_2pass_fulltile)1909 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_gt_8_2pass_fulltile) { 1910 TEST_REQUIRES_X86_F16C; 1911 for (size_t channels = 9; channels < 16; channels++) { 1912 GAvgPoolMicrokernelTester() 1913 .rows(14) 1914 .channels(channels) 1915 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1916 } 1917 } 1918 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_gt_8_2pass_fulltile_with_qmax)1919 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_gt_8_2pass_fulltile_with_qmax) { 1920 TEST_REQUIRES_X86_F16C; 1921 for (size_t channels = 9; channels < 16; channels++) { 1922 GAvgPoolMicrokernelTester() 1923 .rows(14) 1924 .channels(channels) 1925 .qmax(128) 1926 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1927 } 1928 } 1929 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_gt_8_2pass_fulltile_with_qmin)1930 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_gt_8_2pass_fulltile_with_qmin) { 1931 TEST_REQUIRES_X86_F16C; 1932 for (size_t channels = 9; channels < 16; channels++) { 1933 GAvgPoolMicrokernelTester() 1934 .rows(14) 1935 .channels(channels) 1936 .qmin(128) 1937 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1938 } 1939 } 1940 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_gt_8_2pass_subtile)1941 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_gt_8_2pass_subtile) { 1942 TEST_REQUIRES_X86_F16C; 1943 for (size_t channels = 9; channels < 16; channels++) { 1944 for (size_t rows = 8; rows < 14; rows++) { 1945 GAvgPoolMicrokernelTester() 1946 .rows(rows) 1947 .channels(channels) 1948 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1949 } 1950 } 1951 } 1952 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_gt_8_multipass_fulltile)1953 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_gt_8_multipass_fulltile) { 1954 TEST_REQUIRES_X86_F16C; 1955 for (size_t channels = 9; channels < 16; channels++) { 1956 for (size_t rows = 14; rows < 35; rows += 14) { 1957 GAvgPoolMicrokernelTester() 1958 .rows(rows) 1959 .channels(channels) 1960 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1961 } 1962 } 1963 } 1964 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8,channels_gt_8_multipass_fulltile_with_input_stride)1965 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C8, channels_gt_8_multipass_fulltile_with_input_stride) { 1966 TEST_REQUIRES_X86_F16C; 1967 for (size_t channels = 9; channels < 16; channels++) { 1968 for (size_t rows = 14; rows < 35; rows += 14) { 1969 GAvgPoolMicrokernelTester() 1970 .rows(rows) 1971 .channels(channels) 1972 .input_stride(29) 1973 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 1974 } 1975 } 1976 } 1977 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 1978 1979 1980 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_eq_16_2pass_fulltile)1981 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_eq_16_2pass_fulltile) { 1982 TEST_REQUIRES_X86_F16C; 1983 GAvgPoolMicrokernelTester() 1984 .rows(14) 1985 .channels(16) 1986 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 1987 } 1988 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_eq_16_2pass_fulltile_with_input_stride)1989 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_eq_16_2pass_fulltile_with_input_stride) { 1990 TEST_REQUIRES_X86_F16C; 1991 GAvgPoolMicrokernelTester() 1992 .rows(14) 1993 .channels(16) 1994 .input_stride(19) 1995 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 1996 } 1997 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_eq_16_2pass_fulltile_with_qmax)1998 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_eq_16_2pass_fulltile_with_qmax) { 1999 TEST_REQUIRES_X86_F16C; 2000 GAvgPoolMicrokernelTester() 2001 .rows(14) 2002 .channels(16) 2003 .qmax(128) 2004 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2005 } 2006 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_eq_16_2pass_fulltile_with_qmin)2007 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_eq_16_2pass_fulltile_with_qmin) { 2008 TEST_REQUIRES_X86_F16C; 2009 GAvgPoolMicrokernelTester() 2010 .rows(14) 2011 .channels(16) 2012 .qmin(128) 2013 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2014 } 2015 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_eq_16_2pass_subtile)2016 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_eq_16_2pass_subtile) { 2017 TEST_REQUIRES_X86_F16C; 2018 for (size_t rows = 8; rows < 14; rows++) { 2019 GAvgPoolMicrokernelTester() 2020 .rows(rows) 2021 .channels(16) 2022 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2023 } 2024 } 2025 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_eq_16_2pass_subtile_with_input_stride)2026 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_eq_16_2pass_subtile_with_input_stride) { 2027 TEST_REQUIRES_X86_F16C; 2028 for (size_t rows = 8; rows < 14; rows++) { 2029 GAvgPoolMicrokernelTester() 2030 .rows(rows) 2031 .channels(16) 2032 .input_stride(19) 2033 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2034 } 2035 } 2036 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_eq_16_multipass_fulltile)2037 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_eq_16_multipass_fulltile) { 2038 TEST_REQUIRES_X86_F16C; 2039 for (size_t rows = 14; rows <= 35; rows += 7) { 2040 GAvgPoolMicrokernelTester() 2041 .rows(rows) 2042 .channels(16) 2043 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2044 } 2045 } 2046 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_eq_16_multipass_fulltile_with_input_stride)2047 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_eq_16_multipass_fulltile_with_input_stride) { 2048 TEST_REQUIRES_X86_F16C; 2049 for (size_t rows = 14; rows <= 35; rows += 7) { 2050 GAvgPoolMicrokernelTester() 2051 .rows(rows) 2052 .channels(16) 2053 .input_stride(19) 2054 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2055 } 2056 } 2057 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_div_16_2pass_fulltile)2058 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_div_16_2pass_fulltile) { 2059 TEST_REQUIRES_X86_F16C; 2060 for (size_t channels = 32; channels < 128; channels += 16) { 2061 GAvgPoolMicrokernelTester() 2062 .rows(14) 2063 .channels(channels) 2064 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2065 } 2066 } 2067 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_div_16_2pass_subtile)2068 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_div_16_2pass_subtile) { 2069 TEST_REQUIRES_X86_F16C; 2070 for (size_t channels = 32; channels < 128; channels += 16) { 2071 for (size_t rows = 8; rows < 14; rows++) { 2072 GAvgPoolMicrokernelTester() 2073 .rows(rows) 2074 .channels(channels) 2075 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2076 } 2077 } 2078 } 2079 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_div_16_multipass_fulltile)2080 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_div_16_multipass_fulltile) { 2081 TEST_REQUIRES_X86_F16C; 2082 for (size_t channels = 32; channels < 128; channels += 16) { 2083 for (size_t rows = 14; rows <= 35; rows += 7) { 2084 GAvgPoolMicrokernelTester() 2085 .rows(rows) 2086 .channels(channels) 2087 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2088 } 2089 } 2090 } 2091 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_div_16_multipass_fulltile_with_input_stride)2092 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_div_16_multipass_fulltile_with_input_stride) { 2093 TEST_REQUIRES_X86_F16C; 2094 for (size_t channels = 32; channels < 128; channels += 16) { 2095 for (size_t rows = 14; rows <= 35; rows += 7) { 2096 GAvgPoolMicrokernelTester() 2097 .rows(rows) 2098 .channels(channels) 2099 .input_stride(263) 2100 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2101 } 2102 } 2103 } 2104 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_lt_16_2pass_fulltile)2105 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_lt_16_2pass_fulltile) { 2106 TEST_REQUIRES_X86_F16C; 2107 for (size_t channels = 1; channels < 16; channels++) { 2108 GAvgPoolMicrokernelTester() 2109 .rows(14) 2110 .channels(channels) 2111 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2112 } 2113 } 2114 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_lt_16_2pass_fulltile_with_qmax)2115 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_lt_16_2pass_fulltile_with_qmax) { 2116 TEST_REQUIRES_X86_F16C; 2117 for (size_t channels = 1; channels < 16; channels++) { 2118 GAvgPoolMicrokernelTester() 2119 .rows(14) 2120 .channels(channels) 2121 .qmax(128) 2122 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2123 } 2124 } 2125 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_lt_16_2pass_fulltile_with_qmin)2126 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_lt_16_2pass_fulltile_with_qmin) { 2127 TEST_REQUIRES_X86_F16C; 2128 for (size_t channels = 1; channels < 16; channels++) { 2129 GAvgPoolMicrokernelTester() 2130 .rows(14) 2131 .channels(channels) 2132 .qmin(128) 2133 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2134 } 2135 } 2136 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_lt_16_2pass_subtile)2137 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_lt_16_2pass_subtile) { 2138 TEST_REQUIRES_X86_F16C; 2139 for (size_t channels = 1; channels < 16; channels++) { 2140 for (size_t rows = 8; rows < 14; rows++) { 2141 GAvgPoolMicrokernelTester() 2142 .rows(rows) 2143 .channels(channels) 2144 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2145 } 2146 } 2147 } 2148 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_lt_16_multipass_fulltile)2149 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_lt_16_multipass_fulltile) { 2150 TEST_REQUIRES_X86_F16C; 2151 for (size_t channels = 1; channels < 16; channels++) { 2152 for (size_t rows = 14; rows <= 35; rows += 7) { 2153 GAvgPoolMicrokernelTester() 2154 .rows(rows) 2155 .channels(channels) 2156 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2157 } 2158 } 2159 } 2160 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_lt_16_multipass_fulltile_with_input_stride)2161 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_lt_16_multipass_fulltile_with_input_stride) { 2162 TEST_REQUIRES_X86_F16C; 2163 for (size_t channels = 1; channels < 16; channels++) { 2164 for (size_t rows = 14; rows <= 35; rows += 7) { 2165 GAvgPoolMicrokernelTester() 2166 .rows(rows) 2167 .channels(channels) 2168 .input_stride(19) 2169 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2170 } 2171 } 2172 } 2173 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_gt_16_2pass_fulltile)2174 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_gt_16_2pass_fulltile) { 2175 TEST_REQUIRES_X86_F16C; 2176 for (size_t channels = 17; channels < 32; channels++) { 2177 GAvgPoolMicrokernelTester() 2178 .rows(14) 2179 .channels(channels) 2180 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2181 } 2182 } 2183 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_gt_16_2pass_fulltile_with_qmax)2184 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_gt_16_2pass_fulltile_with_qmax) { 2185 TEST_REQUIRES_X86_F16C; 2186 for (size_t channels = 17; channels < 32; channels++) { 2187 GAvgPoolMicrokernelTester() 2188 .rows(14) 2189 .channels(channels) 2190 .qmax(128) 2191 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2192 } 2193 } 2194 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_gt_16_2pass_fulltile_with_qmin)2195 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_gt_16_2pass_fulltile_with_qmin) { 2196 TEST_REQUIRES_X86_F16C; 2197 for (size_t channels = 17; channels < 32; channels++) { 2198 GAvgPoolMicrokernelTester() 2199 .rows(14) 2200 .channels(channels) 2201 .qmin(128) 2202 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2203 } 2204 } 2205 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_gt_16_2pass_subtile)2206 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_gt_16_2pass_subtile) { 2207 TEST_REQUIRES_X86_F16C; 2208 for (size_t channels = 17; channels < 32; channels++) { 2209 for (size_t rows = 8; rows < 14; rows++) { 2210 GAvgPoolMicrokernelTester() 2211 .rows(rows) 2212 .channels(channels) 2213 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2214 } 2215 } 2216 } 2217 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_gt_16_multipass_fulltile)2218 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_gt_16_multipass_fulltile) { 2219 TEST_REQUIRES_X86_F16C; 2220 for (size_t channels = 17; channels < 32; channels++) { 2221 for (size_t rows = 14; rows < 35; rows += 14) { 2222 GAvgPoolMicrokernelTester() 2223 .rows(rows) 2224 .channels(channels) 2225 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2226 } 2227 } 2228 } 2229 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16,channels_gt_16_multipass_fulltile_with_input_stride)2230 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C16, channels_gt_16_multipass_fulltile_with_input_stride) { 2231 TEST_REQUIRES_X86_F16C; 2232 for (size_t channels = 17; channels < 32; channels++) { 2233 for (size_t rows = 14; rows < 35; rows += 14) { 2234 GAvgPoolMicrokernelTester() 2235 .rows(rows) 2236 .channels(channels) 2237 .input_stride(47) 2238 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2239 } 2240 } 2241 } 2242 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 2243 2244 2245 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_eq_24_2pass_fulltile)2246 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_eq_24_2pass_fulltile) { 2247 TEST_REQUIRES_X86_F16C; 2248 GAvgPoolMicrokernelTester() 2249 .rows(14) 2250 .channels(24) 2251 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2252 } 2253 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_eq_24_2pass_fulltile_with_input_stride)2254 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_eq_24_2pass_fulltile_with_input_stride) { 2255 TEST_REQUIRES_X86_F16C; 2256 GAvgPoolMicrokernelTester() 2257 .rows(14) 2258 .channels(24) 2259 .input_stride(29) 2260 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2261 } 2262 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_eq_24_2pass_fulltile_with_qmax)2263 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_eq_24_2pass_fulltile_with_qmax) { 2264 TEST_REQUIRES_X86_F16C; 2265 GAvgPoolMicrokernelTester() 2266 .rows(14) 2267 .channels(24) 2268 .qmax(128) 2269 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2270 } 2271 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_eq_24_2pass_fulltile_with_qmin)2272 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_eq_24_2pass_fulltile_with_qmin) { 2273 TEST_REQUIRES_X86_F16C; 2274 GAvgPoolMicrokernelTester() 2275 .rows(14) 2276 .channels(24) 2277 .qmin(128) 2278 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2279 } 2280 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_eq_24_2pass_subtile)2281 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_eq_24_2pass_subtile) { 2282 TEST_REQUIRES_X86_F16C; 2283 for (size_t rows = 8; rows < 14; rows++) { 2284 GAvgPoolMicrokernelTester() 2285 .rows(rows) 2286 .channels(24) 2287 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2288 } 2289 } 2290 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_eq_24_2pass_subtile_with_input_stride)2291 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_eq_24_2pass_subtile_with_input_stride) { 2292 TEST_REQUIRES_X86_F16C; 2293 for (size_t rows = 8; rows < 14; rows++) { 2294 GAvgPoolMicrokernelTester() 2295 .rows(rows) 2296 .channels(24) 2297 .input_stride(29) 2298 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2299 } 2300 } 2301 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_eq_24_multipass_fulltile)2302 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_eq_24_multipass_fulltile) { 2303 TEST_REQUIRES_X86_F16C; 2304 for (size_t rows = 14; rows <= 35; rows += 7) { 2305 GAvgPoolMicrokernelTester() 2306 .rows(rows) 2307 .channels(24) 2308 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2309 } 2310 } 2311 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_eq_24_multipass_fulltile_with_input_stride)2312 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_eq_24_multipass_fulltile_with_input_stride) { 2313 TEST_REQUIRES_X86_F16C; 2314 for (size_t rows = 14; rows <= 35; rows += 7) { 2315 GAvgPoolMicrokernelTester() 2316 .rows(rows) 2317 .channels(24) 2318 .input_stride(29) 2319 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2320 } 2321 } 2322 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_div_24_2pass_fulltile)2323 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_div_24_2pass_fulltile) { 2324 TEST_REQUIRES_X86_F16C; 2325 for (size_t channels = 48; channels < 192; channels += 24) { 2326 GAvgPoolMicrokernelTester() 2327 .rows(14) 2328 .channels(channels) 2329 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2330 } 2331 } 2332 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_div_24_2pass_subtile)2333 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_div_24_2pass_subtile) { 2334 TEST_REQUIRES_X86_F16C; 2335 for (size_t channels = 48; channels < 192; channels += 24) { 2336 for (size_t rows = 8; rows < 14; rows++) { 2337 GAvgPoolMicrokernelTester() 2338 .rows(rows) 2339 .channels(channels) 2340 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2341 } 2342 } 2343 } 2344 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_div_24_multipass_fulltile)2345 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_div_24_multipass_fulltile) { 2346 TEST_REQUIRES_X86_F16C; 2347 for (size_t channels = 48; channels < 192; channels += 24) { 2348 for (size_t rows = 14; rows <= 35; rows += 7) { 2349 GAvgPoolMicrokernelTester() 2350 .rows(rows) 2351 .channels(channels) 2352 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2353 } 2354 } 2355 } 2356 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_div_24_multipass_fulltile_with_input_stride)2357 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_div_24_multipass_fulltile_with_input_stride) { 2358 TEST_REQUIRES_X86_F16C; 2359 for (size_t channels = 48; channels < 192; channels += 24) { 2360 for (size_t rows = 14; rows <= 35; rows += 7) { 2361 GAvgPoolMicrokernelTester() 2362 .rows(rows) 2363 .channels(channels) 2364 .input_stride(389) 2365 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2366 } 2367 } 2368 } 2369 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_lt_24_2pass_fulltile)2370 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_lt_24_2pass_fulltile) { 2371 TEST_REQUIRES_X86_F16C; 2372 for (size_t channels = 1; channels < 24; channels++) { 2373 GAvgPoolMicrokernelTester() 2374 .rows(14) 2375 .channels(channels) 2376 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2377 } 2378 } 2379 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_lt_24_2pass_fulltile_with_qmax)2380 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_lt_24_2pass_fulltile_with_qmax) { 2381 TEST_REQUIRES_X86_F16C; 2382 for (size_t channels = 1; channels < 24; channels++) { 2383 GAvgPoolMicrokernelTester() 2384 .rows(14) 2385 .channels(channels) 2386 .qmax(128) 2387 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2388 } 2389 } 2390 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_lt_24_2pass_fulltile_with_qmin)2391 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_lt_24_2pass_fulltile_with_qmin) { 2392 TEST_REQUIRES_X86_F16C; 2393 for (size_t channels = 1; channels < 24; channels++) { 2394 GAvgPoolMicrokernelTester() 2395 .rows(14) 2396 .channels(channels) 2397 .qmin(128) 2398 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2399 } 2400 } 2401 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_lt_24_2pass_subtile)2402 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_lt_24_2pass_subtile) { 2403 TEST_REQUIRES_X86_F16C; 2404 for (size_t channels = 1; channels < 24; channels++) { 2405 for (size_t rows = 8; rows < 14; rows++) { 2406 GAvgPoolMicrokernelTester() 2407 .rows(rows) 2408 .channels(channels) 2409 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2410 } 2411 } 2412 } 2413 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_lt_24_multipass_fulltile)2414 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_lt_24_multipass_fulltile) { 2415 TEST_REQUIRES_X86_F16C; 2416 for (size_t channels = 1; channels < 24; channels++) { 2417 for (size_t rows = 14; rows <= 35; rows += 7) { 2418 GAvgPoolMicrokernelTester() 2419 .rows(rows) 2420 .channels(channels) 2421 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2422 } 2423 } 2424 } 2425 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_lt_24_multipass_fulltile_with_input_stride)2426 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_lt_24_multipass_fulltile_with_input_stride) { 2427 TEST_REQUIRES_X86_F16C; 2428 for (size_t channels = 1; channels < 24; channels++) { 2429 for (size_t rows = 14; rows <= 35; rows += 7) { 2430 GAvgPoolMicrokernelTester() 2431 .rows(rows) 2432 .channels(channels) 2433 .input_stride(29) 2434 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2435 } 2436 } 2437 } 2438 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_gt_24_2pass_fulltile)2439 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_gt_24_2pass_fulltile) { 2440 TEST_REQUIRES_X86_F16C; 2441 for (size_t channels = 25; channels < 48; channels++) { 2442 GAvgPoolMicrokernelTester() 2443 .rows(14) 2444 .channels(channels) 2445 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2446 } 2447 } 2448 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_gt_24_2pass_fulltile_with_qmax)2449 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_gt_24_2pass_fulltile_with_qmax) { 2450 TEST_REQUIRES_X86_F16C; 2451 for (size_t channels = 25; channels < 48; channels++) { 2452 GAvgPoolMicrokernelTester() 2453 .rows(14) 2454 .channels(channels) 2455 .qmax(128) 2456 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2457 } 2458 } 2459 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_gt_24_2pass_fulltile_with_qmin)2460 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_gt_24_2pass_fulltile_with_qmin) { 2461 TEST_REQUIRES_X86_F16C; 2462 for (size_t channels = 25; channels < 48; channels++) { 2463 GAvgPoolMicrokernelTester() 2464 .rows(14) 2465 .channels(channels) 2466 .qmin(128) 2467 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2468 } 2469 } 2470 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_gt_24_2pass_subtile)2471 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_gt_24_2pass_subtile) { 2472 TEST_REQUIRES_X86_F16C; 2473 for (size_t channels = 25; channels < 48; channels++) { 2474 for (size_t rows = 8; rows < 14; rows++) { 2475 GAvgPoolMicrokernelTester() 2476 .rows(rows) 2477 .channels(channels) 2478 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2479 } 2480 } 2481 } 2482 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_gt_24_multipass_fulltile)2483 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_gt_24_multipass_fulltile) { 2484 TEST_REQUIRES_X86_F16C; 2485 for (size_t channels = 25; channels < 48; channels++) { 2486 for (size_t rows = 14; rows < 35; rows += 14) { 2487 GAvgPoolMicrokernelTester() 2488 .rows(rows) 2489 .channels(channels) 2490 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2491 } 2492 } 2493 } 2494 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24,channels_gt_24_multipass_fulltile_with_input_stride)2495 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C24, channels_gt_24_multipass_fulltile_with_input_stride) { 2496 TEST_REQUIRES_X86_F16C; 2497 for (size_t channels = 25; channels < 48; channels++) { 2498 for (size_t rows = 14; rows < 35; rows += 14) { 2499 GAvgPoolMicrokernelTester() 2500 .rows(rows) 2501 .channels(channels) 2502 .input_stride(61) 2503 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 2504 } 2505 } 2506 } 2507 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 2508 2509 2510 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_eq_32_2pass_fulltile)2511 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_eq_32_2pass_fulltile) { 2512 TEST_REQUIRES_X86_F16C; 2513 GAvgPoolMicrokernelTester() 2514 .rows(14) 2515 .channels(32) 2516 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2517 } 2518 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_eq_32_2pass_fulltile_with_input_stride)2519 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_eq_32_2pass_fulltile_with_input_stride) { 2520 TEST_REQUIRES_X86_F16C; 2521 GAvgPoolMicrokernelTester() 2522 .rows(14) 2523 .channels(32) 2524 .input_stride(37) 2525 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2526 } 2527 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_eq_32_2pass_fulltile_with_qmax)2528 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_eq_32_2pass_fulltile_with_qmax) { 2529 TEST_REQUIRES_X86_F16C; 2530 GAvgPoolMicrokernelTester() 2531 .rows(14) 2532 .channels(32) 2533 .qmax(128) 2534 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2535 } 2536 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_eq_32_2pass_fulltile_with_qmin)2537 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_eq_32_2pass_fulltile_with_qmin) { 2538 TEST_REQUIRES_X86_F16C; 2539 GAvgPoolMicrokernelTester() 2540 .rows(14) 2541 .channels(32) 2542 .qmin(128) 2543 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2544 } 2545 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_eq_32_2pass_subtile)2546 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_eq_32_2pass_subtile) { 2547 TEST_REQUIRES_X86_F16C; 2548 for (size_t rows = 8; rows < 14; rows++) { 2549 GAvgPoolMicrokernelTester() 2550 .rows(rows) 2551 .channels(32) 2552 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2553 } 2554 } 2555 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_eq_32_2pass_subtile_with_input_stride)2556 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_eq_32_2pass_subtile_with_input_stride) { 2557 TEST_REQUIRES_X86_F16C; 2558 for (size_t rows = 8; rows < 14; rows++) { 2559 GAvgPoolMicrokernelTester() 2560 .rows(rows) 2561 .channels(32) 2562 .input_stride(37) 2563 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2564 } 2565 } 2566 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_eq_32_multipass_fulltile)2567 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_eq_32_multipass_fulltile) { 2568 TEST_REQUIRES_X86_F16C; 2569 for (size_t rows = 14; rows <= 35; rows += 7) { 2570 GAvgPoolMicrokernelTester() 2571 .rows(rows) 2572 .channels(32) 2573 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2574 } 2575 } 2576 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_eq_32_multipass_fulltile_with_input_stride)2577 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_eq_32_multipass_fulltile_with_input_stride) { 2578 TEST_REQUIRES_X86_F16C; 2579 for (size_t rows = 14; rows <= 35; rows += 7) { 2580 GAvgPoolMicrokernelTester() 2581 .rows(rows) 2582 .channels(32) 2583 .input_stride(37) 2584 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2585 } 2586 } 2587 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_div_32_2pass_fulltile)2588 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_div_32_2pass_fulltile) { 2589 TEST_REQUIRES_X86_F16C; 2590 for (size_t channels = 64; channels < 256; channels += 32) { 2591 GAvgPoolMicrokernelTester() 2592 .rows(14) 2593 .channels(channels) 2594 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2595 } 2596 } 2597 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_div_32_2pass_subtile)2598 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_div_32_2pass_subtile) { 2599 TEST_REQUIRES_X86_F16C; 2600 for (size_t channels = 64; channels < 256; channels += 32) { 2601 for (size_t rows = 8; rows < 14; rows++) { 2602 GAvgPoolMicrokernelTester() 2603 .rows(rows) 2604 .channels(channels) 2605 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2606 } 2607 } 2608 } 2609 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_div_32_multipass_fulltile)2610 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_div_32_multipass_fulltile) { 2611 TEST_REQUIRES_X86_F16C; 2612 for (size_t channels = 64; channels < 256; channels += 32) { 2613 for (size_t rows = 14; rows <= 35; rows += 7) { 2614 GAvgPoolMicrokernelTester() 2615 .rows(rows) 2616 .channels(channels) 2617 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2618 } 2619 } 2620 } 2621 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_div_32_multipass_fulltile_with_input_stride)2622 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_div_32_multipass_fulltile_with_input_stride) { 2623 TEST_REQUIRES_X86_F16C; 2624 for (size_t channels = 64; channels < 256; channels += 32) { 2625 for (size_t rows = 14; rows <= 35; rows += 7) { 2626 GAvgPoolMicrokernelTester() 2627 .rows(rows) 2628 .channels(channels) 2629 .input_stride(521) 2630 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2631 } 2632 } 2633 } 2634 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_lt_32_2pass_fulltile)2635 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_lt_32_2pass_fulltile) { 2636 TEST_REQUIRES_X86_F16C; 2637 for (size_t channels = 1; channels < 32; channels++) { 2638 GAvgPoolMicrokernelTester() 2639 .rows(14) 2640 .channels(channels) 2641 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2642 } 2643 } 2644 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_lt_32_2pass_fulltile_with_qmax)2645 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_lt_32_2pass_fulltile_with_qmax) { 2646 TEST_REQUIRES_X86_F16C; 2647 for (size_t channels = 1; channels < 32; channels++) { 2648 GAvgPoolMicrokernelTester() 2649 .rows(14) 2650 .channels(channels) 2651 .qmax(128) 2652 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2653 } 2654 } 2655 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_lt_32_2pass_fulltile_with_qmin)2656 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_lt_32_2pass_fulltile_with_qmin) { 2657 TEST_REQUIRES_X86_F16C; 2658 for (size_t channels = 1; channels < 32; channels++) { 2659 GAvgPoolMicrokernelTester() 2660 .rows(14) 2661 .channels(channels) 2662 .qmin(128) 2663 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2664 } 2665 } 2666 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_lt_32_2pass_subtile)2667 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_lt_32_2pass_subtile) { 2668 TEST_REQUIRES_X86_F16C; 2669 for (size_t channels = 1; channels < 32; channels++) { 2670 for (size_t rows = 8; rows < 14; rows++) { 2671 GAvgPoolMicrokernelTester() 2672 .rows(rows) 2673 .channels(channels) 2674 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2675 } 2676 } 2677 } 2678 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_lt_32_multipass_fulltile)2679 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_lt_32_multipass_fulltile) { 2680 TEST_REQUIRES_X86_F16C; 2681 for (size_t channels = 1; channels < 32; channels++) { 2682 for (size_t rows = 14; rows <= 35; rows += 7) { 2683 GAvgPoolMicrokernelTester() 2684 .rows(rows) 2685 .channels(channels) 2686 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2687 } 2688 } 2689 } 2690 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_lt_32_multipass_fulltile_with_input_stride)2691 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_lt_32_multipass_fulltile_with_input_stride) { 2692 TEST_REQUIRES_X86_F16C; 2693 for (size_t channels = 1; channels < 32; channels++) { 2694 for (size_t rows = 14; rows <= 35; rows += 7) { 2695 GAvgPoolMicrokernelTester() 2696 .rows(rows) 2697 .channels(channels) 2698 .input_stride(37) 2699 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2700 } 2701 } 2702 } 2703 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_gt_32_2pass_fulltile)2704 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_gt_32_2pass_fulltile) { 2705 TEST_REQUIRES_X86_F16C; 2706 for (size_t channels = 33; channels < 64; channels++) { 2707 GAvgPoolMicrokernelTester() 2708 .rows(14) 2709 .channels(channels) 2710 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2711 } 2712 } 2713 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_gt_32_2pass_fulltile_with_qmax)2714 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_gt_32_2pass_fulltile_with_qmax) { 2715 TEST_REQUIRES_X86_F16C; 2716 for (size_t channels = 33; channels < 64; channels++) { 2717 GAvgPoolMicrokernelTester() 2718 .rows(14) 2719 .channels(channels) 2720 .qmax(128) 2721 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2722 } 2723 } 2724 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_gt_32_2pass_fulltile_with_qmin)2725 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_gt_32_2pass_fulltile_with_qmin) { 2726 TEST_REQUIRES_X86_F16C; 2727 for (size_t channels = 33; channels < 64; channels++) { 2728 GAvgPoolMicrokernelTester() 2729 .rows(14) 2730 .channels(channels) 2731 .qmin(128) 2732 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2733 } 2734 } 2735 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_gt_32_2pass_subtile)2736 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_gt_32_2pass_subtile) { 2737 TEST_REQUIRES_X86_F16C; 2738 for (size_t channels = 33; channels < 64; channels++) { 2739 for (size_t rows = 8; rows < 14; rows++) { 2740 GAvgPoolMicrokernelTester() 2741 .rows(rows) 2742 .channels(channels) 2743 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2744 } 2745 } 2746 } 2747 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_gt_32_multipass_fulltile)2748 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_gt_32_multipass_fulltile) { 2749 TEST_REQUIRES_X86_F16C; 2750 for (size_t channels = 33; channels < 64; channels++) { 2751 for (size_t rows = 14; rows < 35; rows += 14) { 2752 GAvgPoolMicrokernelTester() 2753 .rows(rows) 2754 .channels(channels) 2755 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2756 } 2757 } 2758 } 2759 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32,channels_gt_32_multipass_fulltile_with_input_stride)2760 TEST(F16_GAVGPOOL_MINMAX_7P7X__F16C_C32, channels_gt_32_multipass_fulltile_with_input_stride) { 2761 TEST_REQUIRES_X86_F16C; 2762 for (size_t channels = 33; channels < 64; channels++) { 2763 for (size_t rows = 14; rows < 35; rows += 14) { 2764 GAvgPoolMicrokernelTester() 2765 .rows(rows) 2766 .channels(channels) 2767 .input_stride(79) 2768 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 2769 } 2770 } 2771 } 2772 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 2773 2774 2775 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_eq_8_fulltile)2776 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_eq_8_fulltile) { 2777 TEST_REQUIRES_X86_F16C; 2778 GAvgPoolMicrokernelTester() 2779 .rows(7) 2780 .channels(8) 2781 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2782 } 2783 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_eq_8_subtile)2784 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_eq_8_subtile) { 2785 TEST_REQUIRES_X86_F16C; 2786 for (size_t rows = 1; rows < 7; rows++) { 2787 GAvgPoolMicrokernelTester() 2788 .rows(rows) 2789 .channels(8) 2790 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2791 } 2792 } 2793 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_eq_8_fulltile_with_input_stride)2794 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_eq_8_fulltile_with_input_stride) { 2795 TEST_REQUIRES_X86_F16C; 2796 GAvgPoolMicrokernelTester() 2797 .rows(7) 2798 .channels(8) 2799 .input_stride(11) 2800 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2801 } 2802 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_eq_8_fulltile_with_qmax)2803 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_eq_8_fulltile_with_qmax) { 2804 TEST_REQUIRES_X86_F16C; 2805 GAvgPoolMicrokernelTester() 2806 .rows(7) 2807 .channels(8) 2808 .qmax(128) 2809 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2810 } 2811 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_eq_8_fulltile_with_qmin)2812 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_eq_8_fulltile_with_qmin) { 2813 TEST_REQUIRES_X86_F16C; 2814 GAvgPoolMicrokernelTester() 2815 .rows(7) 2816 .channels(8) 2817 .qmin(128) 2818 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2819 } 2820 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_div_8_fulltile)2821 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_div_8_fulltile) { 2822 TEST_REQUIRES_X86_F16C; 2823 for (size_t channels = 16; channels < 64; channels += 8) { 2824 GAvgPoolMicrokernelTester() 2825 .rows(7) 2826 .channels(channels) 2827 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2828 } 2829 } 2830 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_div_8_subtile)2831 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_div_8_subtile) { 2832 TEST_REQUIRES_X86_F16C; 2833 for (size_t channels = 16; channels < 64; channels += 8) { 2834 for (size_t rows = 1; rows < 7; rows++) { 2835 GAvgPoolMicrokernelTester() 2836 .rows(rows) 2837 .channels(channels) 2838 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2839 } 2840 } 2841 } 2842 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_lt_8_fulltile)2843 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_lt_8_fulltile) { 2844 TEST_REQUIRES_X86_F16C; 2845 for (size_t channels = 1; channels < 8; channels++) { 2846 GAvgPoolMicrokernelTester() 2847 .rows(7) 2848 .channels(channels) 2849 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2850 } 2851 } 2852 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_lt_8_subtile)2853 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_lt_8_subtile) { 2854 TEST_REQUIRES_X86_F16C; 2855 for (size_t channels = 1; channels < 8; channels++) { 2856 for (size_t rows = 1; rows < 7; rows++) { 2857 GAvgPoolMicrokernelTester() 2858 .rows(rows) 2859 .channels(channels) 2860 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2861 } 2862 } 2863 } 2864 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_lt_8_fulltile_with_qmax)2865 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_lt_8_fulltile_with_qmax) { 2866 TEST_REQUIRES_X86_F16C; 2867 for (size_t channels = 1; channels < 8; channels++) { 2868 GAvgPoolMicrokernelTester() 2869 .rows(7) 2870 .channels(channels) 2871 .qmax(128) 2872 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2873 } 2874 } 2875 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_lt_8_fulltile_with_qmin)2876 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_lt_8_fulltile_with_qmin) { 2877 TEST_REQUIRES_X86_F16C; 2878 for (size_t channels = 1; channels < 8; channels++) { 2879 GAvgPoolMicrokernelTester() 2880 .rows(7) 2881 .channels(channels) 2882 .qmin(128) 2883 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2884 } 2885 } 2886 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_gt_8_fulltile)2887 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_gt_8_fulltile) { 2888 TEST_REQUIRES_X86_F16C; 2889 for (size_t channels = 9; channels < 16; channels++) { 2890 GAvgPoolMicrokernelTester() 2891 .rows(7) 2892 .channels(channels) 2893 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2894 } 2895 } 2896 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_gt_8_subtile)2897 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_gt_8_subtile) { 2898 TEST_REQUIRES_X86_F16C; 2899 for (size_t channels = 9; channels < 16; channels++) { 2900 for (size_t rows = 1; rows < 7; rows++) { 2901 GAvgPoolMicrokernelTester() 2902 .rows(rows) 2903 .channels(channels) 2904 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2905 } 2906 } 2907 } 2908 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_gt_8_fulltile_with_qmax)2909 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_gt_8_fulltile_with_qmax) { 2910 TEST_REQUIRES_X86_F16C; 2911 for (size_t channels = 9; channels < 16; channels++) { 2912 GAvgPoolMicrokernelTester() 2913 .rows(7) 2914 .channels(channels) 2915 .qmax(128) 2916 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2917 } 2918 } 2919 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8,channels_gt_8_fulltile_with_qmin)2920 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C8, channels_gt_8_fulltile_with_qmin) { 2921 TEST_REQUIRES_X86_F16C; 2922 for (size_t channels = 9; channels < 16; channels++) { 2923 GAvgPoolMicrokernelTester() 2924 .rows(7) 2925 .channels(channels) 2926 .qmin(128) 2927 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c8, xnn_init_f16_scaleminmax_avx_params); 2928 } 2929 } 2930 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 2931 2932 2933 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_eq_16_fulltile)2934 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_eq_16_fulltile) { 2935 TEST_REQUIRES_X86_F16C; 2936 GAvgPoolMicrokernelTester() 2937 .rows(7) 2938 .channels(16) 2939 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2940 } 2941 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_eq_16_subtile)2942 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_eq_16_subtile) { 2943 TEST_REQUIRES_X86_F16C; 2944 for (size_t rows = 1; rows < 7; rows++) { 2945 GAvgPoolMicrokernelTester() 2946 .rows(rows) 2947 .channels(16) 2948 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2949 } 2950 } 2951 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_eq_16_fulltile_with_input_stride)2952 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_eq_16_fulltile_with_input_stride) { 2953 TEST_REQUIRES_X86_F16C; 2954 GAvgPoolMicrokernelTester() 2955 .rows(7) 2956 .channels(16) 2957 .input_stride(19) 2958 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2959 } 2960 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_eq_16_fulltile_with_qmax)2961 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_eq_16_fulltile_with_qmax) { 2962 TEST_REQUIRES_X86_F16C; 2963 GAvgPoolMicrokernelTester() 2964 .rows(7) 2965 .channels(16) 2966 .qmax(128) 2967 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2968 } 2969 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_eq_16_fulltile_with_qmin)2970 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_eq_16_fulltile_with_qmin) { 2971 TEST_REQUIRES_X86_F16C; 2972 GAvgPoolMicrokernelTester() 2973 .rows(7) 2974 .channels(16) 2975 .qmin(128) 2976 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2977 } 2978 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_div_16_fulltile)2979 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_div_16_fulltile) { 2980 TEST_REQUIRES_X86_F16C; 2981 for (size_t channels = 32; channels < 128; channels += 16) { 2982 GAvgPoolMicrokernelTester() 2983 .rows(7) 2984 .channels(channels) 2985 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2986 } 2987 } 2988 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_div_16_subtile)2989 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_div_16_subtile) { 2990 TEST_REQUIRES_X86_F16C; 2991 for (size_t channels = 32; channels < 128; channels += 16) { 2992 for (size_t rows = 1; rows < 7; rows++) { 2993 GAvgPoolMicrokernelTester() 2994 .rows(rows) 2995 .channels(channels) 2996 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 2997 } 2998 } 2999 } 3000 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_lt_16_fulltile)3001 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_lt_16_fulltile) { 3002 TEST_REQUIRES_X86_F16C; 3003 for (size_t channels = 1; channels < 16; channels++) { 3004 GAvgPoolMicrokernelTester() 3005 .rows(7) 3006 .channels(channels) 3007 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 3008 } 3009 } 3010 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_lt_16_subtile)3011 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_lt_16_subtile) { 3012 TEST_REQUIRES_X86_F16C; 3013 for (size_t channels = 1; channels < 16; channels++) { 3014 for (size_t rows = 1; rows < 7; rows++) { 3015 GAvgPoolMicrokernelTester() 3016 .rows(rows) 3017 .channels(channels) 3018 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 3019 } 3020 } 3021 } 3022 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_lt_16_fulltile_with_qmax)3023 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_lt_16_fulltile_with_qmax) { 3024 TEST_REQUIRES_X86_F16C; 3025 for (size_t channels = 1; channels < 16; channels++) { 3026 GAvgPoolMicrokernelTester() 3027 .rows(7) 3028 .channels(channels) 3029 .qmax(128) 3030 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 3031 } 3032 } 3033 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_lt_16_fulltile_with_qmin)3034 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_lt_16_fulltile_with_qmin) { 3035 TEST_REQUIRES_X86_F16C; 3036 for (size_t channels = 1; channels < 16; channels++) { 3037 GAvgPoolMicrokernelTester() 3038 .rows(7) 3039 .channels(channels) 3040 .qmin(128) 3041 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 3042 } 3043 } 3044 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_gt_16_fulltile)3045 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_gt_16_fulltile) { 3046 TEST_REQUIRES_X86_F16C; 3047 for (size_t channels = 17; channels < 32; channels++) { 3048 GAvgPoolMicrokernelTester() 3049 .rows(7) 3050 .channels(channels) 3051 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 3052 } 3053 } 3054 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_gt_16_subtile)3055 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_gt_16_subtile) { 3056 TEST_REQUIRES_X86_F16C; 3057 for (size_t channels = 17; channels < 32; channels++) { 3058 for (size_t rows = 1; rows < 7; rows++) { 3059 GAvgPoolMicrokernelTester() 3060 .rows(rows) 3061 .channels(channels) 3062 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 3063 } 3064 } 3065 } 3066 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_gt_16_fulltile_with_qmax)3067 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_gt_16_fulltile_with_qmax) { 3068 TEST_REQUIRES_X86_F16C; 3069 for (size_t channels = 17; channels < 32; channels++) { 3070 GAvgPoolMicrokernelTester() 3071 .rows(7) 3072 .channels(channels) 3073 .qmax(128) 3074 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 3075 } 3076 } 3077 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16,channels_gt_16_fulltile_with_qmin)3078 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C16, channels_gt_16_fulltile_with_qmin) { 3079 TEST_REQUIRES_X86_F16C; 3080 for (size_t channels = 17; channels < 32; channels++) { 3081 GAvgPoolMicrokernelTester() 3082 .rows(7) 3083 .channels(channels) 3084 .qmin(128) 3085 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c16, xnn_init_f16_scaleminmax_avx_params); 3086 } 3087 } 3088 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 3089 3090 3091 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_eq_24_fulltile)3092 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_eq_24_fulltile) { 3093 TEST_REQUIRES_X86_F16C; 3094 GAvgPoolMicrokernelTester() 3095 .rows(7) 3096 .channels(24) 3097 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3098 } 3099 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_eq_24_subtile)3100 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_eq_24_subtile) { 3101 TEST_REQUIRES_X86_F16C; 3102 for (size_t rows = 1; rows < 7; rows++) { 3103 GAvgPoolMicrokernelTester() 3104 .rows(rows) 3105 .channels(24) 3106 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3107 } 3108 } 3109 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_eq_24_fulltile_with_input_stride)3110 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_eq_24_fulltile_with_input_stride) { 3111 TEST_REQUIRES_X86_F16C; 3112 GAvgPoolMicrokernelTester() 3113 .rows(7) 3114 .channels(24) 3115 .input_stride(29) 3116 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3117 } 3118 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_eq_24_fulltile_with_qmax)3119 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_eq_24_fulltile_with_qmax) { 3120 TEST_REQUIRES_X86_F16C; 3121 GAvgPoolMicrokernelTester() 3122 .rows(7) 3123 .channels(24) 3124 .qmax(128) 3125 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3126 } 3127 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_eq_24_fulltile_with_qmin)3128 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_eq_24_fulltile_with_qmin) { 3129 TEST_REQUIRES_X86_F16C; 3130 GAvgPoolMicrokernelTester() 3131 .rows(7) 3132 .channels(24) 3133 .qmin(128) 3134 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3135 } 3136 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_div_24_fulltile)3137 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_div_24_fulltile) { 3138 TEST_REQUIRES_X86_F16C; 3139 for (size_t channels = 48; channels < 192; channels += 24) { 3140 GAvgPoolMicrokernelTester() 3141 .rows(7) 3142 .channels(channels) 3143 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3144 } 3145 } 3146 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_div_24_subtile)3147 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_div_24_subtile) { 3148 TEST_REQUIRES_X86_F16C; 3149 for (size_t channels = 48; channels < 192; channels += 24) { 3150 for (size_t rows = 1; rows < 7; rows++) { 3151 GAvgPoolMicrokernelTester() 3152 .rows(rows) 3153 .channels(channels) 3154 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3155 } 3156 } 3157 } 3158 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_lt_24_fulltile)3159 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_lt_24_fulltile) { 3160 TEST_REQUIRES_X86_F16C; 3161 for (size_t channels = 1; channels < 24; channels++) { 3162 GAvgPoolMicrokernelTester() 3163 .rows(7) 3164 .channels(channels) 3165 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3166 } 3167 } 3168 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_lt_24_subtile)3169 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_lt_24_subtile) { 3170 TEST_REQUIRES_X86_F16C; 3171 for (size_t channels = 1; channels < 24; channels++) { 3172 for (size_t rows = 1; rows < 7; rows++) { 3173 GAvgPoolMicrokernelTester() 3174 .rows(rows) 3175 .channels(channels) 3176 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3177 } 3178 } 3179 } 3180 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_lt_24_fulltile_with_qmax)3181 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_lt_24_fulltile_with_qmax) { 3182 TEST_REQUIRES_X86_F16C; 3183 for (size_t channels = 1; channels < 24; channels++) { 3184 GAvgPoolMicrokernelTester() 3185 .rows(7) 3186 .channels(channels) 3187 .qmax(128) 3188 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3189 } 3190 } 3191 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_lt_24_fulltile_with_qmin)3192 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_lt_24_fulltile_with_qmin) { 3193 TEST_REQUIRES_X86_F16C; 3194 for (size_t channels = 1; channels < 24; channels++) { 3195 GAvgPoolMicrokernelTester() 3196 .rows(7) 3197 .channels(channels) 3198 .qmin(128) 3199 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3200 } 3201 } 3202 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_gt_24_fulltile)3203 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_gt_24_fulltile) { 3204 TEST_REQUIRES_X86_F16C; 3205 for (size_t channels = 25; channels < 48; channels++) { 3206 GAvgPoolMicrokernelTester() 3207 .rows(7) 3208 .channels(channels) 3209 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3210 } 3211 } 3212 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_gt_24_subtile)3213 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_gt_24_subtile) { 3214 TEST_REQUIRES_X86_F16C; 3215 for (size_t channels = 25; channels < 48; channels++) { 3216 for (size_t rows = 1; rows < 7; rows++) { 3217 GAvgPoolMicrokernelTester() 3218 .rows(rows) 3219 .channels(channels) 3220 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3221 } 3222 } 3223 } 3224 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_gt_24_fulltile_with_qmax)3225 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_gt_24_fulltile_with_qmax) { 3226 TEST_REQUIRES_X86_F16C; 3227 for (size_t channels = 25; channels < 48; channels++) { 3228 GAvgPoolMicrokernelTester() 3229 .rows(7) 3230 .channels(channels) 3231 .qmax(128) 3232 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3233 } 3234 } 3235 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24,channels_gt_24_fulltile_with_qmin)3236 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C24, channels_gt_24_fulltile_with_qmin) { 3237 TEST_REQUIRES_X86_F16C; 3238 for (size_t channels = 25; channels < 48; channels++) { 3239 GAvgPoolMicrokernelTester() 3240 .rows(7) 3241 .channels(channels) 3242 .qmin(128) 3243 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c24, xnn_init_f16_scaleminmax_avx_params); 3244 } 3245 } 3246 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 3247 3248 3249 #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_eq_32_fulltile)3250 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_eq_32_fulltile) { 3251 TEST_REQUIRES_X86_F16C; 3252 GAvgPoolMicrokernelTester() 3253 .rows(7) 3254 .channels(32) 3255 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3256 } 3257 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_eq_32_subtile)3258 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_eq_32_subtile) { 3259 TEST_REQUIRES_X86_F16C; 3260 for (size_t rows = 1; rows < 7; rows++) { 3261 GAvgPoolMicrokernelTester() 3262 .rows(rows) 3263 .channels(32) 3264 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3265 } 3266 } 3267 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_eq_32_fulltile_with_input_stride)3268 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_eq_32_fulltile_with_input_stride) { 3269 TEST_REQUIRES_X86_F16C; 3270 GAvgPoolMicrokernelTester() 3271 .rows(7) 3272 .channels(32) 3273 .input_stride(37) 3274 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3275 } 3276 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_eq_32_fulltile_with_qmax)3277 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_eq_32_fulltile_with_qmax) { 3278 TEST_REQUIRES_X86_F16C; 3279 GAvgPoolMicrokernelTester() 3280 .rows(7) 3281 .channels(32) 3282 .qmax(128) 3283 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3284 } 3285 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_eq_32_fulltile_with_qmin)3286 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_eq_32_fulltile_with_qmin) { 3287 TEST_REQUIRES_X86_F16C; 3288 GAvgPoolMicrokernelTester() 3289 .rows(7) 3290 .channels(32) 3291 .qmin(128) 3292 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3293 } 3294 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_div_32_fulltile)3295 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_div_32_fulltile) { 3296 TEST_REQUIRES_X86_F16C; 3297 for (size_t channels = 64; channels < 256; channels += 32) { 3298 GAvgPoolMicrokernelTester() 3299 .rows(7) 3300 .channels(channels) 3301 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3302 } 3303 } 3304 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_div_32_subtile)3305 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_div_32_subtile) { 3306 TEST_REQUIRES_X86_F16C; 3307 for (size_t channels = 64; channels < 256; channels += 32) { 3308 for (size_t rows = 1; rows < 7; rows++) { 3309 GAvgPoolMicrokernelTester() 3310 .rows(rows) 3311 .channels(channels) 3312 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3313 } 3314 } 3315 } 3316 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_lt_32_fulltile)3317 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_lt_32_fulltile) { 3318 TEST_REQUIRES_X86_F16C; 3319 for (size_t channels = 1; channels < 32; channels++) { 3320 GAvgPoolMicrokernelTester() 3321 .rows(7) 3322 .channels(channels) 3323 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3324 } 3325 } 3326 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_lt_32_subtile)3327 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_lt_32_subtile) { 3328 TEST_REQUIRES_X86_F16C; 3329 for (size_t channels = 1; channels < 32; channels++) { 3330 for (size_t rows = 1; rows < 7; rows++) { 3331 GAvgPoolMicrokernelTester() 3332 .rows(rows) 3333 .channels(channels) 3334 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3335 } 3336 } 3337 } 3338 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_lt_32_fulltile_with_qmax)3339 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_lt_32_fulltile_with_qmax) { 3340 TEST_REQUIRES_X86_F16C; 3341 for (size_t channels = 1; channels < 32; channels++) { 3342 GAvgPoolMicrokernelTester() 3343 .rows(7) 3344 .channels(channels) 3345 .qmax(128) 3346 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3347 } 3348 } 3349 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_lt_32_fulltile_with_qmin)3350 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_lt_32_fulltile_with_qmin) { 3351 TEST_REQUIRES_X86_F16C; 3352 for (size_t channels = 1; channels < 32; channels++) { 3353 GAvgPoolMicrokernelTester() 3354 .rows(7) 3355 .channels(channels) 3356 .qmin(128) 3357 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3358 } 3359 } 3360 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_gt_32_fulltile)3361 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_gt_32_fulltile) { 3362 TEST_REQUIRES_X86_F16C; 3363 for (size_t channels = 33; channels < 64; channels++) { 3364 GAvgPoolMicrokernelTester() 3365 .rows(7) 3366 .channels(channels) 3367 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3368 } 3369 } 3370 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_gt_32_subtile)3371 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_gt_32_subtile) { 3372 TEST_REQUIRES_X86_F16C; 3373 for (size_t channels = 33; channels < 64; channels++) { 3374 for (size_t rows = 1; rows < 7; rows++) { 3375 GAvgPoolMicrokernelTester() 3376 .rows(rows) 3377 .channels(channels) 3378 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3379 } 3380 } 3381 } 3382 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_gt_32_fulltile_with_qmax)3383 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_gt_32_fulltile_with_qmax) { 3384 TEST_REQUIRES_X86_F16C; 3385 for (size_t channels = 33; channels < 64; channels++) { 3386 GAvgPoolMicrokernelTester() 3387 .rows(7) 3388 .channels(channels) 3389 .qmax(128) 3390 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3391 } 3392 } 3393 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32,channels_gt_32_fulltile_with_qmin)3394 TEST(F16_GAVGPOOL_MINMAX_7X__F16C_C32, channels_gt_32_fulltile_with_qmin) { 3395 TEST_REQUIRES_X86_F16C; 3396 for (size_t channels = 33; channels < 64; channels++) { 3397 GAvgPoolMicrokernelTester() 3398 .rows(7) 3399 .channels(channels) 3400 .qmin(128) 3401 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__f16c_c32, xnn_init_f16_scaleminmax_avx_params); 3402 } 3403 } 3404 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 3405