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_ARCH_ARM64 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_fulltile)24 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_fulltile) { 25 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 26 GAvgPoolMicrokernelTester() 27 .rows(7) 28 .channels(8) 29 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 30 } 31 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_subtile)32 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_subtile) { 33 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 34 for (size_t rows = 1; rows < 7; rows++) { 35 GAvgPoolMicrokernelTester() 36 .rows(rows) 37 .channels(8) 38 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 39 } 40 } 41 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_fulltile_with_input_stride)42 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_fulltile_with_input_stride) { 43 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 44 GAvgPoolMicrokernelTester() 45 .rows(7) 46 .channels(8) 47 .input_stride(11) 48 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 49 } 50 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_fulltile_with_qmax)51 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_fulltile_with_qmax) { 52 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 53 GAvgPoolMicrokernelTester() 54 .rows(7) 55 .channels(8) 56 .qmax(128) 57 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 58 } 59 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_eq_8_fulltile_with_qmin)60 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_eq_8_fulltile_with_qmin) { 61 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 62 GAvgPoolMicrokernelTester() 63 .rows(7) 64 .channels(8) 65 .qmin(128) 66 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 67 } 68 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_div_8_fulltile)69 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_div_8_fulltile) { 70 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 71 for (size_t channels = 16; channels < 64; channels += 8) { 72 GAvgPoolMicrokernelTester() 73 .rows(7) 74 .channels(channels) 75 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 76 } 77 } 78 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_div_8_subtile)79 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_div_8_subtile) { 80 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 81 for (size_t channels = 16; channels < 64; channels += 8) { 82 for (size_t rows = 1; rows < 7; rows++) { 83 GAvgPoolMicrokernelTester() 84 .rows(rows) 85 .channels(channels) 86 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 87 } 88 } 89 } 90 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_lt_8_fulltile)91 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_lt_8_fulltile) { 92 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 93 for (size_t channels = 1; channels < 8; channels++) { 94 GAvgPoolMicrokernelTester() 95 .rows(7) 96 .channels(channels) 97 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 98 } 99 } 100 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_lt_8_subtile)101 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_lt_8_subtile) { 102 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 103 for (size_t channels = 1; channels < 8; channels++) { 104 for (size_t rows = 1; rows < 7; rows++) { 105 GAvgPoolMicrokernelTester() 106 .rows(rows) 107 .channels(channels) 108 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 109 } 110 } 111 } 112 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_lt_8_fulltile_with_qmax)113 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_lt_8_fulltile_with_qmax) { 114 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 115 for (size_t channels = 1; channels < 8; channels++) { 116 GAvgPoolMicrokernelTester() 117 .rows(7) 118 .channels(channels) 119 .qmax(128) 120 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 121 } 122 } 123 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_lt_8_fulltile_with_qmin)124 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_lt_8_fulltile_with_qmin) { 125 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 126 for (size_t channels = 1; channels < 8; channels++) { 127 GAvgPoolMicrokernelTester() 128 .rows(7) 129 .channels(channels) 130 .qmin(128) 131 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 132 } 133 } 134 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_gt_8_fulltile)135 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_gt_8_fulltile) { 136 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 137 for (size_t channels = 9; channels < 16; channels++) { 138 GAvgPoolMicrokernelTester() 139 .rows(7) 140 .channels(channels) 141 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 142 } 143 } 144 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_gt_8_subtile)145 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_gt_8_subtile) { 146 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 147 for (size_t channels = 9; channels < 16; channels++) { 148 for (size_t rows = 1; rows < 7; rows++) { 149 GAvgPoolMicrokernelTester() 150 .rows(rows) 151 .channels(channels) 152 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 153 } 154 } 155 } 156 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_gt_8_fulltile_with_qmax)157 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_gt_8_fulltile_with_qmax) { 158 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 159 for (size_t channels = 9; channels < 16; channels++) { 160 GAvgPoolMicrokernelTester() 161 .rows(7) 162 .channels(channels) 163 .qmax(128) 164 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 165 } 166 } 167 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8,channels_gt_8_fulltile_with_qmin)168 TEST(F16_GAVGPOOL_MINMAX_7X__NEONFP16ARITH_C8, channels_gt_8_fulltile_with_qmin) { 169 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 170 for (size_t channels = 9; channels < 16; channels++) { 171 GAvgPoolMicrokernelTester() 172 .rows(7) 173 .channels(channels) 174 .qmin(128) 175 .Test(xnn_f16_gavgpool_minmax_ukernel_7x__neonfp16arith_c8); 176 } 177 } 178 #endif // XNN_ARCH_ARM64 179 180 181 #if XNN_ARCH_ARM64 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_fulltile)182 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_fulltile) { 183 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 184 GAvgPoolMicrokernelTester() 185 .rows(14) 186 .channels(8) 187 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 188 } 189 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_fulltile_with_input_stride)190 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_fulltile_with_input_stride) { 191 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 192 GAvgPoolMicrokernelTester() 193 .rows(14) 194 .channels(8) 195 .input_stride(11) 196 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 197 } 198 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_fulltile_with_qmax)199 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_fulltile_with_qmax) { 200 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 201 GAvgPoolMicrokernelTester() 202 .rows(14) 203 .channels(8) 204 .qmax(128) 205 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 206 } 207 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_fulltile_with_qmin)208 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_fulltile_with_qmin) { 209 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 210 GAvgPoolMicrokernelTester() 211 .rows(14) 212 .channels(8) 213 .qmin(128) 214 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 215 } 216 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_subtile)217 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_subtile) { 218 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 219 for (size_t rows = 8; rows < 14; rows++) { 220 GAvgPoolMicrokernelTester() 221 .rows(rows) 222 .channels(8) 223 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 224 } 225 } 226 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_2pass_subtile_with_input_stride)227 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_2pass_subtile_with_input_stride) { 228 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 229 for (size_t rows = 8; rows < 14; rows++) { 230 GAvgPoolMicrokernelTester() 231 .rows(rows) 232 .channels(8) 233 .input_stride(11) 234 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 235 } 236 } 237 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_multipass_fulltile)238 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_multipass_fulltile) { 239 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 240 for (size_t rows = 14; rows <= 35; rows += 7) { 241 GAvgPoolMicrokernelTester() 242 .rows(rows) 243 .channels(8) 244 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 245 } 246 } 247 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_eq_8_multipass_fulltile_with_input_stride)248 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_eq_8_multipass_fulltile_with_input_stride) { 249 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 250 for (size_t rows = 14; rows <= 35; rows += 7) { 251 GAvgPoolMicrokernelTester() 252 .rows(rows) 253 .channels(8) 254 .input_stride(11) 255 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 256 } 257 } 258 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_div_8_2pass_fulltile)259 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_div_8_2pass_fulltile) { 260 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 261 for (size_t channels = 16; channels < 64; channels += 8) { 262 GAvgPoolMicrokernelTester() 263 .rows(14) 264 .channels(channels) 265 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 266 } 267 } 268 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_div_8_2pass_subtile)269 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_div_8_2pass_subtile) { 270 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 271 for (size_t channels = 16; channels < 64; channels += 8) { 272 for (size_t rows = 8; rows < 14; rows++) { 273 GAvgPoolMicrokernelTester() 274 .rows(rows) 275 .channels(channels) 276 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 277 } 278 } 279 } 280 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_div_8_multipass_fulltile)281 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_div_8_multipass_fulltile) { 282 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 283 for (size_t channels = 16; channels < 64; channels += 8) { 284 for (size_t rows = 14; rows <= 35; rows += 7) { 285 GAvgPoolMicrokernelTester() 286 .rows(rows) 287 .channels(channels) 288 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 289 } 290 } 291 } 292 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_div_8_multipass_fulltile_with_input_stride)293 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_div_8_multipass_fulltile_with_input_stride) { 294 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 295 for (size_t channels = 16; channels < 64; channels += 8) { 296 for (size_t rows = 14; rows <= 35; rows += 7) { 297 GAvgPoolMicrokernelTester() 298 .rows(rows) 299 .channels(channels) 300 .input_stride(131) 301 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 302 } 303 } 304 } 305 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_2pass_fulltile)306 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_2pass_fulltile) { 307 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 308 for (size_t channels = 1; channels < 8; channels++) { 309 GAvgPoolMicrokernelTester() 310 .rows(14) 311 .channels(channels) 312 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 313 } 314 } 315 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_2pass_fulltile_with_qmax)316 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_2pass_fulltile_with_qmax) { 317 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 318 for (size_t channels = 1; channels < 8; channels++) { 319 GAvgPoolMicrokernelTester() 320 .rows(14) 321 .channels(channels) 322 .qmax(128) 323 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 324 } 325 } 326 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_2pass_fulltile_with_qmin)327 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_2pass_fulltile_with_qmin) { 328 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 329 for (size_t channels = 1; channels < 8; channels++) { 330 GAvgPoolMicrokernelTester() 331 .rows(14) 332 .channels(channels) 333 .qmin(128) 334 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 335 } 336 } 337 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_2pass_subtile)338 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_2pass_subtile) { 339 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 340 for (size_t channels = 1; channels < 8; channels++) { 341 for (size_t rows = 8; rows < 14; rows++) { 342 GAvgPoolMicrokernelTester() 343 .rows(rows) 344 .channels(channels) 345 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 346 } 347 } 348 } 349 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_multipass_fulltile)350 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_multipass_fulltile) { 351 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 352 for (size_t channels = 1; channels < 8; channels++) { 353 for (size_t rows = 14; rows <= 35; rows += 7) { 354 GAvgPoolMicrokernelTester() 355 .rows(rows) 356 .channels(channels) 357 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 358 } 359 } 360 } 361 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_lt_8_multipass_fulltile_with_input_stride)362 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_lt_8_multipass_fulltile_with_input_stride) { 363 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 364 for (size_t channels = 1; channels < 8; channels++) { 365 for (size_t rows = 14; rows <= 35; rows += 7) { 366 GAvgPoolMicrokernelTester() 367 .rows(rows) 368 .channels(channels) 369 .input_stride(11) 370 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 371 } 372 } 373 } 374 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_2pass_fulltile)375 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_2pass_fulltile) { 376 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 377 for (size_t channels = 9; channels < 16; channels++) { 378 GAvgPoolMicrokernelTester() 379 .rows(14) 380 .channels(channels) 381 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 382 } 383 } 384 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_2pass_fulltile_with_qmax)385 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_2pass_fulltile_with_qmax) { 386 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 387 for (size_t channels = 9; channels < 16; channels++) { 388 GAvgPoolMicrokernelTester() 389 .rows(14) 390 .channels(channels) 391 .qmax(128) 392 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 393 } 394 } 395 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_2pass_fulltile_with_qmin)396 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_2pass_fulltile_with_qmin) { 397 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 398 for (size_t channels = 9; channels < 16; channels++) { 399 GAvgPoolMicrokernelTester() 400 .rows(14) 401 .channels(channels) 402 .qmin(128) 403 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 404 } 405 } 406 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_2pass_subtile)407 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_2pass_subtile) { 408 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 409 for (size_t channels = 9; channels < 16; channels++) { 410 for (size_t rows = 8; rows < 14; rows++) { 411 GAvgPoolMicrokernelTester() 412 .rows(rows) 413 .channels(channels) 414 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 415 } 416 } 417 } 418 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_multipass_fulltile)419 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_multipass_fulltile) { 420 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 421 for (size_t channels = 9; channels < 16; channels++) { 422 for (size_t rows = 14; rows < 35; rows += 14) { 423 GAvgPoolMicrokernelTester() 424 .rows(rows) 425 .channels(channels) 426 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 427 } 428 } 429 } 430 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8,channels_gt_8_multipass_fulltile_with_input_stride)431 TEST(F16_GAVGPOOL_MINMAX_7P7X__NEONFP16ARITH_C8, channels_gt_8_multipass_fulltile_with_input_stride) { 432 TEST_REQUIRES_ARM_NEON_FP16_ARITH; 433 for (size_t channels = 9; channels < 16; channels++) { 434 for (size_t rows = 14; rows < 35; rows += 14) { 435 GAvgPoolMicrokernelTester() 436 .rows(rows) 437 .channels(channels) 438 .input_stride(29) 439 .Test(xnn_f16_gavgpool_minmax_ukernel_7p7x__neonfp16arith_c8); 440 } 441 } 442 } 443 #endif // XNN_ARCH_ARM64 444