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