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-dwconv-minmax.yaml 11*4bdc9457SAndroid Build Coastguard Worker // Generator: tools/generate-dwconv-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/dwconv.h> 20*4bdc9457SAndroid Build Coastguard Worker #include "dwconv-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_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,c_eq_8)24*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, c_eq_8) { 25*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 26*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 27*4bdc9457SAndroid Build Coastguard Worker .cr(8) 28*4bdc9457SAndroid Build Coastguard Worker .kr(3) 29*4bdc9457SAndroid Build Coastguard Worker .channels(8) 30*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 31*4bdc9457SAndroid Build Coastguard Worker } 32*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,c_div_8)33*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, c_div_8) { 34*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 35*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 36*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 37*4bdc9457SAndroid Build Coastguard Worker .cr(8) 38*4bdc9457SAndroid Build Coastguard Worker .kr(3) 39*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 40*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 41*4bdc9457SAndroid Build Coastguard Worker } 42*4bdc9457SAndroid Build Coastguard Worker } 43*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,c_div_8_with_qmin)44*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, c_div_8_with_qmin) { 45*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 46*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 47*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 48*4bdc9457SAndroid Build Coastguard Worker .cr(8) 49*4bdc9457SAndroid Build Coastguard Worker .kr(3) 50*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 51*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 52*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 53*4bdc9457SAndroid Build Coastguard Worker } 54*4bdc9457SAndroid Build Coastguard Worker } 55*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,c_div_8_with_qmax)56*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, c_div_8_with_qmax) { 57*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 58*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 59*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 60*4bdc9457SAndroid Build Coastguard Worker .cr(8) 61*4bdc9457SAndroid Build Coastguard Worker .kr(3) 62*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 63*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 64*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 65*4bdc9457SAndroid Build Coastguard Worker } 66*4bdc9457SAndroid Build Coastguard Worker } 67*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,c_lt_8)68*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, c_lt_8) { 69*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 70*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 71*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 72*4bdc9457SAndroid Build Coastguard Worker .cr(8) 73*4bdc9457SAndroid Build Coastguard Worker .kr(3) 74*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 75*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 76*4bdc9457SAndroid Build Coastguard Worker } 77*4bdc9457SAndroid Build Coastguard Worker } 78*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,c_gt_8)79*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, c_gt_8) { 80*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 81*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 82*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 83*4bdc9457SAndroid Build Coastguard Worker .cr(8) 84*4bdc9457SAndroid Build Coastguard Worker .kr(3) 85*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 86*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 87*4bdc9457SAndroid Build Coastguard Worker } 88*4bdc9457SAndroid Build Coastguard Worker } 89*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,c_gt_8_with_qmin)90*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, c_gt_8_with_qmin) { 91*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 92*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 93*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 94*4bdc9457SAndroid Build Coastguard Worker .cr(8) 95*4bdc9457SAndroid Build Coastguard Worker .kr(3) 96*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 97*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 98*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 99*4bdc9457SAndroid Build Coastguard Worker } 100*4bdc9457SAndroid Build Coastguard Worker } 101*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,c_gt_8_with_qmax)102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, c_gt_8_with_qmax) { 103*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 104*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 105*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 106*4bdc9457SAndroid Build Coastguard Worker .cr(8) 107*4bdc9457SAndroid Build Coastguard Worker .kr(3) 108*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 109*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 110*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 111*4bdc9457SAndroid Build Coastguard Worker } 112*4bdc9457SAndroid Build Coastguard Worker } 113*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,multipixel)114*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, multipixel) { 115*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 116*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 117*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 118*4bdc9457SAndroid Build Coastguard Worker .cr(8) 119*4bdc9457SAndroid Build Coastguard Worker .kr(3) 120*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 121*4bdc9457SAndroid Build Coastguard Worker .width(3) 122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 123*4bdc9457SAndroid Build Coastguard Worker } 124*4bdc9457SAndroid Build Coastguard Worker } 125*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,multipixel_with_step)126*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, multipixel_with_step) { 127*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 128*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 129*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 130*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 131*4bdc9457SAndroid Build Coastguard Worker .cr(8) 132*4bdc9457SAndroid Build Coastguard Worker .kr(3) 133*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 134*4bdc9457SAndroid Build Coastguard Worker .width(3) 135*4bdc9457SAndroid Build Coastguard Worker .step(step) 136*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 137*4bdc9457SAndroid Build Coastguard Worker } 138*4bdc9457SAndroid Build Coastguard Worker } 139*4bdc9457SAndroid Build Coastguard Worker } 140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,multipixel_with_output_stride)141*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, multipixel_with_output_stride) { 142*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 143*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 144*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 145*4bdc9457SAndroid Build Coastguard Worker .cr(8) 146*4bdc9457SAndroid Build Coastguard Worker .kr(3) 147*4bdc9457SAndroid Build Coastguard Worker .channels(8) 148*4bdc9457SAndroid Build Coastguard Worker .width(5) 149*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 150*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 151*4bdc9457SAndroid Build Coastguard Worker } 152*4bdc9457SAndroid Build Coastguard Worker } 153*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,multipixel_with_qmin)154*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, multipixel_with_qmin) { 155*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 156*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 157*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 158*4bdc9457SAndroid Build Coastguard Worker .cr(8) 159*4bdc9457SAndroid Build Coastguard Worker .kr(3) 160*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 161*4bdc9457SAndroid Build Coastguard Worker .width(3) 162*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 163*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 164*4bdc9457SAndroid Build Coastguard Worker } 165*4bdc9457SAndroid Build Coastguard Worker } 166*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,multipixel_with_qmax)167*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, multipixel_with_qmax) { 168*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 169*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 170*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 171*4bdc9457SAndroid Build Coastguard Worker .cr(8) 172*4bdc9457SAndroid Build Coastguard Worker .kr(3) 173*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 174*4bdc9457SAndroid Build Coastguard Worker .width(3) 175*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 176*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 177*4bdc9457SAndroid Build Coastguard Worker } 178*4bdc9457SAndroid Build Coastguard Worker } 179*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,input_offset)180*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, input_offset) { 181*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 182*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 183*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 184*4bdc9457SAndroid Build Coastguard Worker .cr(8) 185*4bdc9457SAndroid Build Coastguard Worker .kr(3) 186*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 187*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 188*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 189*4bdc9457SAndroid Build Coastguard Worker } 190*4bdc9457SAndroid Build Coastguard Worker } 191*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH,zero)192*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH, zero) { 193*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 194*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 195*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 196*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 197*4bdc9457SAndroid Build Coastguard Worker .cr(8) 198*4bdc9457SAndroid Build Coastguard Worker .kr(3) 199*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 200*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 201*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 203*4bdc9457SAndroid Build Coastguard Worker } 204*4bdc9457SAndroid Build Coastguard Worker } 205*4bdc9457SAndroid Build Coastguard Worker } 206*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 207*4bdc9457SAndroid Build Coastguard Worker 208*4bdc9457SAndroid Build Coastguard Worker 209*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,c_eq_8)210*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, c_eq_8) { 211*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 212*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 213*4bdc9457SAndroid Build Coastguard Worker .cr(8) 214*4bdc9457SAndroid Build Coastguard Worker .kr(3) 215*4bdc9457SAndroid Build Coastguard Worker .channels(8) 216*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 217*4bdc9457SAndroid Build Coastguard Worker } 218*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,c_div_8)219*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, c_div_8) { 220*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 221*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 222*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 223*4bdc9457SAndroid Build Coastguard Worker .cr(8) 224*4bdc9457SAndroid Build Coastguard Worker .kr(3) 225*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 226*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 227*4bdc9457SAndroid Build Coastguard Worker } 228*4bdc9457SAndroid Build Coastguard Worker } 229*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,c_div_8_with_qmin)230*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, c_div_8_with_qmin) { 231*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 232*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 233*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 234*4bdc9457SAndroid Build Coastguard Worker .cr(8) 235*4bdc9457SAndroid Build Coastguard Worker .kr(3) 236*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 237*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 238*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 239*4bdc9457SAndroid Build Coastguard Worker } 240*4bdc9457SAndroid Build Coastguard Worker } 241*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,c_div_8_with_qmax)242*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, c_div_8_with_qmax) { 243*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 244*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 245*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 246*4bdc9457SAndroid Build Coastguard Worker .cr(8) 247*4bdc9457SAndroid Build Coastguard Worker .kr(3) 248*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 249*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 250*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 251*4bdc9457SAndroid Build Coastguard Worker } 252*4bdc9457SAndroid Build Coastguard Worker } 253*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,c_lt_8)254*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, c_lt_8) { 255*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 256*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 257*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 258*4bdc9457SAndroid Build Coastguard Worker .cr(8) 259*4bdc9457SAndroid Build Coastguard Worker .kr(3) 260*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 261*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 262*4bdc9457SAndroid Build Coastguard Worker } 263*4bdc9457SAndroid Build Coastguard Worker } 264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,c_gt_8)265*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, c_gt_8) { 266*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 267*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 268*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 269*4bdc9457SAndroid Build Coastguard Worker .cr(8) 270*4bdc9457SAndroid Build Coastguard Worker .kr(3) 271*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 272*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 273*4bdc9457SAndroid Build Coastguard Worker } 274*4bdc9457SAndroid Build Coastguard Worker } 275*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,c_gt_8_with_qmin)276*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, c_gt_8_with_qmin) { 277*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 278*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 279*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 280*4bdc9457SAndroid Build Coastguard Worker .cr(8) 281*4bdc9457SAndroid Build Coastguard Worker .kr(3) 282*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 283*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 285*4bdc9457SAndroid Build Coastguard Worker } 286*4bdc9457SAndroid Build Coastguard Worker } 287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,c_gt_8_with_qmax)288*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, c_gt_8_with_qmax) { 289*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 290*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 291*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 292*4bdc9457SAndroid Build Coastguard Worker .cr(8) 293*4bdc9457SAndroid Build Coastguard Worker .kr(3) 294*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 295*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 296*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 297*4bdc9457SAndroid Build Coastguard Worker } 298*4bdc9457SAndroid Build Coastguard Worker } 299*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,multipixel)300*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, multipixel) { 301*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 302*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 303*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 304*4bdc9457SAndroid Build Coastguard Worker .cr(8) 305*4bdc9457SAndroid Build Coastguard Worker .kr(3) 306*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 307*4bdc9457SAndroid Build Coastguard Worker .width(3) 308*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 309*4bdc9457SAndroid Build Coastguard Worker } 310*4bdc9457SAndroid Build Coastguard Worker } 311*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,multipixel_with_step)312*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, multipixel_with_step) { 313*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 314*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 315*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 316*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 317*4bdc9457SAndroid Build Coastguard Worker .cr(8) 318*4bdc9457SAndroid Build Coastguard Worker .kr(3) 319*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 320*4bdc9457SAndroid Build Coastguard Worker .width(3) 321*4bdc9457SAndroid Build Coastguard Worker .step(step) 322*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 323*4bdc9457SAndroid Build Coastguard Worker } 324*4bdc9457SAndroid Build Coastguard Worker } 325*4bdc9457SAndroid Build Coastguard Worker } 326*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,multipixel_with_output_stride)327*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 328*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 329*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 330*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 331*4bdc9457SAndroid Build Coastguard Worker .cr(8) 332*4bdc9457SAndroid Build Coastguard Worker .kr(3) 333*4bdc9457SAndroid Build Coastguard Worker .channels(8) 334*4bdc9457SAndroid Build Coastguard Worker .width(5) 335*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 336*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 337*4bdc9457SAndroid Build Coastguard Worker } 338*4bdc9457SAndroid Build Coastguard Worker } 339*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,multipixel_with_qmin)340*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 341*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 342*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 343*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 344*4bdc9457SAndroid Build Coastguard Worker .cr(8) 345*4bdc9457SAndroid Build Coastguard Worker .kr(3) 346*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 347*4bdc9457SAndroid Build Coastguard Worker .width(3) 348*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 349*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 350*4bdc9457SAndroid Build Coastguard Worker } 351*4bdc9457SAndroid Build Coastguard Worker } 352*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,multipixel_with_qmax)353*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 354*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 355*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 356*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 357*4bdc9457SAndroid Build Coastguard Worker .cr(8) 358*4bdc9457SAndroid Build Coastguard Worker .kr(3) 359*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 360*4bdc9457SAndroid Build Coastguard Worker .width(3) 361*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 362*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 363*4bdc9457SAndroid Build Coastguard Worker } 364*4bdc9457SAndroid Build Coastguard Worker } 365*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,input_offset)366*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, input_offset) { 367*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 368*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 369*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 370*4bdc9457SAndroid Build Coastguard Worker .cr(8) 371*4bdc9457SAndroid Build Coastguard Worker .kr(3) 372*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 373*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 374*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 375*4bdc9457SAndroid Build Coastguard Worker } 376*4bdc9457SAndroid Build Coastguard Worker } 377*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2,zero)378*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__NEONFP16ARITH_ACC2, zero) { 379*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 380*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 381*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 382*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 383*4bdc9457SAndroid Build Coastguard Worker .cr(8) 384*4bdc9457SAndroid Build Coastguard Worker .kr(3) 385*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 386*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 387*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 388*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 389*4bdc9457SAndroid Build Coastguard Worker } 390*4bdc9457SAndroid Build Coastguard Worker } 391*4bdc9457SAndroid Build Coastguard Worker } 392*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 393*4bdc9457SAndroid Build Coastguard Worker 394*4bdc9457SAndroid Build Coastguard Worker 395*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,c_eq_8)396*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, c_eq_8) { 397*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 398*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 399*4bdc9457SAndroid Build Coastguard Worker .cr(8) 400*4bdc9457SAndroid Build Coastguard Worker .kr(4) 401*4bdc9457SAndroid Build Coastguard Worker .channels(8) 402*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 403*4bdc9457SAndroid Build Coastguard Worker } 404*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,c_div_8)405*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, c_div_8) { 406*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 407*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 408*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 409*4bdc9457SAndroid Build Coastguard Worker .cr(8) 410*4bdc9457SAndroid Build Coastguard Worker .kr(4) 411*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 413*4bdc9457SAndroid Build Coastguard Worker } 414*4bdc9457SAndroid Build Coastguard Worker } 415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,c_div_8_with_qmin)416*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, c_div_8_with_qmin) { 417*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 418*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 419*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 420*4bdc9457SAndroid Build Coastguard Worker .cr(8) 421*4bdc9457SAndroid Build Coastguard Worker .kr(4) 422*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 423*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 424*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 425*4bdc9457SAndroid Build Coastguard Worker } 426*4bdc9457SAndroid Build Coastguard Worker } 427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,c_div_8_with_qmax)428*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, c_div_8_with_qmax) { 429*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 430*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 431*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 432*4bdc9457SAndroid Build Coastguard Worker .cr(8) 433*4bdc9457SAndroid Build Coastguard Worker .kr(4) 434*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 435*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 436*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 437*4bdc9457SAndroid Build Coastguard Worker } 438*4bdc9457SAndroid Build Coastguard Worker } 439*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,c_lt_8)440*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, c_lt_8) { 441*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 442*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 443*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 444*4bdc9457SAndroid Build Coastguard Worker .cr(8) 445*4bdc9457SAndroid Build Coastguard Worker .kr(4) 446*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 447*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 448*4bdc9457SAndroid Build Coastguard Worker } 449*4bdc9457SAndroid Build Coastguard Worker } 450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,c_gt_8)451*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, c_gt_8) { 452*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 453*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 454*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 455*4bdc9457SAndroid Build Coastguard Worker .cr(8) 456*4bdc9457SAndroid Build Coastguard Worker .kr(4) 457*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 458*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 459*4bdc9457SAndroid Build Coastguard Worker } 460*4bdc9457SAndroid Build Coastguard Worker } 461*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,c_gt_8_with_qmin)462*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, c_gt_8_with_qmin) { 463*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 464*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 465*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 466*4bdc9457SAndroid Build Coastguard Worker .cr(8) 467*4bdc9457SAndroid Build Coastguard Worker .kr(4) 468*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 469*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 470*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 471*4bdc9457SAndroid Build Coastguard Worker } 472*4bdc9457SAndroid Build Coastguard Worker } 473*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,c_gt_8_with_qmax)474*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, c_gt_8_with_qmax) { 475*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 476*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 477*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 478*4bdc9457SAndroid Build Coastguard Worker .cr(8) 479*4bdc9457SAndroid Build Coastguard Worker .kr(4) 480*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 481*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 482*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 483*4bdc9457SAndroid Build Coastguard Worker } 484*4bdc9457SAndroid Build Coastguard Worker } 485*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,multipixel)486*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, multipixel) { 487*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 488*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 489*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 490*4bdc9457SAndroid Build Coastguard Worker .cr(8) 491*4bdc9457SAndroid Build Coastguard Worker .kr(4) 492*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 493*4bdc9457SAndroid Build Coastguard Worker .width(3) 494*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 495*4bdc9457SAndroid Build Coastguard Worker } 496*4bdc9457SAndroid Build Coastguard Worker } 497*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,multipixel_with_step)498*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, multipixel_with_step) { 499*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 500*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 501*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 502*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 503*4bdc9457SAndroid Build Coastguard Worker .cr(8) 504*4bdc9457SAndroid Build Coastguard Worker .kr(4) 505*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 506*4bdc9457SAndroid Build Coastguard Worker .width(3) 507*4bdc9457SAndroid Build Coastguard Worker .step(step) 508*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 509*4bdc9457SAndroid Build Coastguard Worker } 510*4bdc9457SAndroid Build Coastguard Worker } 511*4bdc9457SAndroid Build Coastguard Worker } 512*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,multipixel_with_output_stride)513*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, multipixel_with_output_stride) { 514*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 515*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 516*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 517*4bdc9457SAndroid Build Coastguard Worker .cr(8) 518*4bdc9457SAndroid Build Coastguard Worker .kr(4) 519*4bdc9457SAndroid Build Coastguard Worker .channels(8) 520*4bdc9457SAndroid Build Coastguard Worker .width(5) 521*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 522*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 523*4bdc9457SAndroid Build Coastguard Worker } 524*4bdc9457SAndroid Build Coastguard Worker } 525*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,multipixel_with_qmin)526*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, multipixel_with_qmin) { 527*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 528*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 529*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 530*4bdc9457SAndroid Build Coastguard Worker .cr(8) 531*4bdc9457SAndroid Build Coastguard Worker .kr(4) 532*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 533*4bdc9457SAndroid Build Coastguard Worker .width(3) 534*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 535*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 536*4bdc9457SAndroid Build Coastguard Worker } 537*4bdc9457SAndroid Build Coastguard Worker } 538*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,multipixel_with_qmax)539*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, multipixel_with_qmax) { 540*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 541*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 542*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 543*4bdc9457SAndroid Build Coastguard Worker .cr(8) 544*4bdc9457SAndroid Build Coastguard Worker .kr(4) 545*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 546*4bdc9457SAndroid Build Coastguard Worker .width(3) 547*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 548*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 549*4bdc9457SAndroid Build Coastguard Worker } 550*4bdc9457SAndroid Build Coastguard Worker } 551*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,input_offset)552*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, input_offset) { 553*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 554*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 555*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 556*4bdc9457SAndroid Build Coastguard Worker .cr(8) 557*4bdc9457SAndroid Build Coastguard Worker .kr(4) 558*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 559*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 560*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 561*4bdc9457SAndroid Build Coastguard Worker } 562*4bdc9457SAndroid Build Coastguard Worker } 563*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH,zero)564*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH, zero) { 565*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 566*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 567*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 568*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 569*4bdc9457SAndroid Build Coastguard Worker .cr(8) 570*4bdc9457SAndroid Build Coastguard Worker .kr(4) 571*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 572*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 573*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 575*4bdc9457SAndroid Build Coastguard Worker } 576*4bdc9457SAndroid Build Coastguard Worker } 577*4bdc9457SAndroid Build Coastguard Worker } 578*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 579*4bdc9457SAndroid Build Coastguard Worker 580*4bdc9457SAndroid Build Coastguard Worker 581*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,c_eq_8)582*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, c_eq_8) { 583*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 584*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 585*4bdc9457SAndroid Build Coastguard Worker .cr(8) 586*4bdc9457SAndroid Build Coastguard Worker .kr(4) 587*4bdc9457SAndroid Build Coastguard Worker .channels(8) 588*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 589*4bdc9457SAndroid Build Coastguard Worker } 590*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,c_div_8)591*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, c_div_8) { 592*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 593*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 594*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 595*4bdc9457SAndroid Build Coastguard Worker .cr(8) 596*4bdc9457SAndroid Build Coastguard Worker .kr(4) 597*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 598*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 599*4bdc9457SAndroid Build Coastguard Worker } 600*4bdc9457SAndroid Build Coastguard Worker } 601*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,c_div_8_with_qmin)602*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, c_div_8_with_qmin) { 603*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 604*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 605*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 606*4bdc9457SAndroid Build Coastguard Worker .cr(8) 607*4bdc9457SAndroid Build Coastguard Worker .kr(4) 608*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 609*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 610*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 611*4bdc9457SAndroid Build Coastguard Worker } 612*4bdc9457SAndroid Build Coastguard Worker } 613*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,c_div_8_with_qmax)614*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, c_div_8_with_qmax) { 615*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 616*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 617*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 618*4bdc9457SAndroid Build Coastguard Worker .cr(8) 619*4bdc9457SAndroid Build Coastguard Worker .kr(4) 620*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 621*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 622*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 623*4bdc9457SAndroid Build Coastguard Worker } 624*4bdc9457SAndroid Build Coastguard Worker } 625*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,c_lt_8)626*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, c_lt_8) { 627*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 628*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 629*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 630*4bdc9457SAndroid Build Coastguard Worker .cr(8) 631*4bdc9457SAndroid Build Coastguard Worker .kr(4) 632*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 633*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 634*4bdc9457SAndroid Build Coastguard Worker } 635*4bdc9457SAndroid Build Coastguard Worker } 636*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,c_gt_8)637*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, c_gt_8) { 638*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 639*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 640*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 641*4bdc9457SAndroid Build Coastguard Worker .cr(8) 642*4bdc9457SAndroid Build Coastguard Worker .kr(4) 643*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 644*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 645*4bdc9457SAndroid Build Coastguard Worker } 646*4bdc9457SAndroid Build Coastguard Worker } 647*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,c_gt_8_with_qmin)648*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, c_gt_8_with_qmin) { 649*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 650*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 651*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 652*4bdc9457SAndroid Build Coastguard Worker .cr(8) 653*4bdc9457SAndroid Build Coastguard Worker .kr(4) 654*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 655*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 656*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 657*4bdc9457SAndroid Build Coastguard Worker } 658*4bdc9457SAndroid Build Coastguard Worker } 659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,c_gt_8_with_qmax)660*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, c_gt_8_with_qmax) { 661*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 662*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 663*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 664*4bdc9457SAndroid Build Coastguard Worker .cr(8) 665*4bdc9457SAndroid Build Coastguard Worker .kr(4) 666*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 667*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 668*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 669*4bdc9457SAndroid Build Coastguard Worker } 670*4bdc9457SAndroid Build Coastguard Worker } 671*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,multipixel)672*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, multipixel) { 673*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 674*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 675*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 676*4bdc9457SAndroid Build Coastguard Worker .cr(8) 677*4bdc9457SAndroid Build Coastguard Worker .kr(4) 678*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 679*4bdc9457SAndroid Build Coastguard Worker .width(3) 680*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 681*4bdc9457SAndroid Build Coastguard Worker } 682*4bdc9457SAndroid Build Coastguard Worker } 683*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,multipixel_with_step)684*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, multipixel_with_step) { 685*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 686*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 687*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 688*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 689*4bdc9457SAndroid Build Coastguard Worker .cr(8) 690*4bdc9457SAndroid Build Coastguard Worker .kr(4) 691*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 692*4bdc9457SAndroid Build Coastguard Worker .width(3) 693*4bdc9457SAndroid Build Coastguard Worker .step(step) 694*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 695*4bdc9457SAndroid Build Coastguard Worker } 696*4bdc9457SAndroid Build Coastguard Worker } 697*4bdc9457SAndroid Build Coastguard Worker } 698*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,multipixel_with_output_stride)699*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 700*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 701*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 702*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 703*4bdc9457SAndroid Build Coastguard Worker .cr(8) 704*4bdc9457SAndroid Build Coastguard Worker .kr(4) 705*4bdc9457SAndroid Build Coastguard Worker .channels(8) 706*4bdc9457SAndroid Build Coastguard Worker .width(5) 707*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 708*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 709*4bdc9457SAndroid Build Coastguard Worker } 710*4bdc9457SAndroid Build Coastguard Worker } 711*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,multipixel_with_qmin)712*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 713*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 714*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 715*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 716*4bdc9457SAndroid Build Coastguard Worker .cr(8) 717*4bdc9457SAndroid Build Coastguard Worker .kr(4) 718*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 719*4bdc9457SAndroid Build Coastguard Worker .width(3) 720*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 721*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 722*4bdc9457SAndroid Build Coastguard Worker } 723*4bdc9457SAndroid Build Coastguard Worker } 724*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,multipixel_with_qmax)725*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 726*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 727*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 728*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 729*4bdc9457SAndroid Build Coastguard Worker .cr(8) 730*4bdc9457SAndroid Build Coastguard Worker .kr(4) 731*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 732*4bdc9457SAndroid Build Coastguard Worker .width(3) 733*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 734*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 735*4bdc9457SAndroid Build Coastguard Worker } 736*4bdc9457SAndroid Build Coastguard Worker } 737*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,input_offset)738*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, input_offset) { 739*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 740*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 741*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 742*4bdc9457SAndroid Build Coastguard Worker .cr(8) 743*4bdc9457SAndroid Build Coastguard Worker .kr(4) 744*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 745*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 746*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 747*4bdc9457SAndroid Build Coastguard Worker } 748*4bdc9457SAndroid Build Coastguard Worker } 749*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2,zero)750*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__NEONFP16ARITH_ACC2, zero) { 751*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 752*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 753*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 754*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 755*4bdc9457SAndroid Build Coastguard Worker .cr(8) 756*4bdc9457SAndroid Build Coastguard Worker .kr(4) 757*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 758*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 759*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 760*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 761*4bdc9457SAndroid Build Coastguard Worker } 762*4bdc9457SAndroid Build Coastguard Worker } 763*4bdc9457SAndroid Build Coastguard Worker } 764*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 765*4bdc9457SAndroid Build Coastguard Worker 766*4bdc9457SAndroid Build Coastguard Worker 767*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,c_eq_8)768*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, c_eq_8) { 769*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 770*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 771*4bdc9457SAndroid Build Coastguard Worker .cr(8) 772*4bdc9457SAndroid Build Coastguard Worker .kr(9) 773*4bdc9457SAndroid Build Coastguard Worker .channels(8) 774*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 775*4bdc9457SAndroid Build Coastguard Worker } 776*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,c_div_8)777*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, c_div_8) { 778*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 779*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 780*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 781*4bdc9457SAndroid Build Coastguard Worker .cr(8) 782*4bdc9457SAndroid Build Coastguard Worker .kr(9) 783*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 784*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 785*4bdc9457SAndroid Build Coastguard Worker } 786*4bdc9457SAndroid Build Coastguard Worker } 787*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,c_div_8_with_qmin)788*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, c_div_8_with_qmin) { 789*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 790*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 791*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 792*4bdc9457SAndroid Build Coastguard Worker .cr(8) 793*4bdc9457SAndroid Build Coastguard Worker .kr(9) 794*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 795*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 796*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 797*4bdc9457SAndroid Build Coastguard Worker } 798*4bdc9457SAndroid Build Coastguard Worker } 799*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,c_div_8_with_qmax)800*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, c_div_8_with_qmax) { 801*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 802*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 803*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 804*4bdc9457SAndroid Build Coastguard Worker .cr(8) 805*4bdc9457SAndroid Build Coastguard Worker .kr(9) 806*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 807*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 808*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 809*4bdc9457SAndroid Build Coastguard Worker } 810*4bdc9457SAndroid Build Coastguard Worker } 811*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,c_lt_8)812*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, c_lt_8) { 813*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 814*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 815*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 816*4bdc9457SAndroid Build Coastguard Worker .cr(8) 817*4bdc9457SAndroid Build Coastguard Worker .kr(9) 818*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 819*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 820*4bdc9457SAndroid Build Coastguard Worker } 821*4bdc9457SAndroid Build Coastguard Worker } 822*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,c_gt_8)823*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, c_gt_8) { 824*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 825*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 826*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 827*4bdc9457SAndroid Build Coastguard Worker .cr(8) 828*4bdc9457SAndroid Build Coastguard Worker .kr(9) 829*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 830*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 831*4bdc9457SAndroid Build Coastguard Worker } 832*4bdc9457SAndroid Build Coastguard Worker } 833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,c_gt_8_with_qmin)834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, c_gt_8_with_qmin) { 835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 836*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 837*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 838*4bdc9457SAndroid Build Coastguard Worker .cr(8) 839*4bdc9457SAndroid Build Coastguard Worker .kr(9) 840*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 841*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 842*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 843*4bdc9457SAndroid Build Coastguard Worker } 844*4bdc9457SAndroid Build Coastguard Worker } 845*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,c_gt_8_with_qmax)846*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, c_gt_8_with_qmax) { 847*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 848*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 849*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 850*4bdc9457SAndroid Build Coastguard Worker .cr(8) 851*4bdc9457SAndroid Build Coastguard Worker .kr(9) 852*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 853*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 854*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 855*4bdc9457SAndroid Build Coastguard Worker } 856*4bdc9457SAndroid Build Coastguard Worker } 857*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,multipixel)858*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, multipixel) { 859*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 860*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 861*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 862*4bdc9457SAndroid Build Coastguard Worker .cr(8) 863*4bdc9457SAndroid Build Coastguard Worker .kr(9) 864*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 865*4bdc9457SAndroid Build Coastguard Worker .width(3) 866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 867*4bdc9457SAndroid Build Coastguard Worker } 868*4bdc9457SAndroid Build Coastguard Worker } 869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,multipixel_with_step)870*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, multipixel_with_step) { 871*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 872*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 873*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 874*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 875*4bdc9457SAndroid Build Coastguard Worker .cr(8) 876*4bdc9457SAndroid Build Coastguard Worker .kr(9) 877*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 878*4bdc9457SAndroid Build Coastguard Worker .width(3) 879*4bdc9457SAndroid Build Coastguard Worker .step(step) 880*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 881*4bdc9457SAndroid Build Coastguard Worker } 882*4bdc9457SAndroid Build Coastguard Worker } 883*4bdc9457SAndroid Build Coastguard Worker } 884*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,multipixel_with_output_stride)885*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, multipixel_with_output_stride) { 886*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 887*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 888*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 889*4bdc9457SAndroid Build Coastguard Worker .cr(8) 890*4bdc9457SAndroid Build Coastguard Worker .kr(9) 891*4bdc9457SAndroid Build Coastguard Worker .channels(8) 892*4bdc9457SAndroid Build Coastguard Worker .width(5) 893*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 894*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 895*4bdc9457SAndroid Build Coastguard Worker } 896*4bdc9457SAndroid Build Coastguard Worker } 897*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,multipixel_with_qmin)898*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, multipixel_with_qmin) { 899*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 900*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 901*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 902*4bdc9457SAndroid Build Coastguard Worker .cr(8) 903*4bdc9457SAndroid Build Coastguard Worker .kr(9) 904*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 905*4bdc9457SAndroid Build Coastguard Worker .width(3) 906*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 907*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 908*4bdc9457SAndroid Build Coastguard Worker } 909*4bdc9457SAndroid Build Coastguard Worker } 910*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,multipixel_with_qmax)911*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, multipixel_with_qmax) { 912*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 913*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 914*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 915*4bdc9457SAndroid Build Coastguard Worker .cr(8) 916*4bdc9457SAndroid Build Coastguard Worker .kr(9) 917*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 918*4bdc9457SAndroid Build Coastguard Worker .width(3) 919*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 920*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 921*4bdc9457SAndroid Build Coastguard Worker } 922*4bdc9457SAndroid Build Coastguard Worker } 923*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,input_offset)924*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, input_offset) { 925*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 926*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 927*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 928*4bdc9457SAndroid Build Coastguard Worker .cr(8) 929*4bdc9457SAndroid Build Coastguard Worker .kr(9) 930*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 931*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 932*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 933*4bdc9457SAndroid Build Coastguard Worker } 934*4bdc9457SAndroid Build Coastguard Worker } 935*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH,zero)936*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH, zero) { 937*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 938*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 939*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 940*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 941*4bdc9457SAndroid Build Coastguard Worker .cr(8) 942*4bdc9457SAndroid Build Coastguard Worker .kr(9) 943*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 944*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 945*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 946*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 947*4bdc9457SAndroid Build Coastguard Worker } 948*4bdc9457SAndroid Build Coastguard Worker } 949*4bdc9457SAndroid Build Coastguard Worker } 950*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 951*4bdc9457SAndroid Build Coastguard Worker 952*4bdc9457SAndroid Build Coastguard Worker 953*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,c_eq_8)954*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, c_eq_8) { 955*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 956*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 957*4bdc9457SAndroid Build Coastguard Worker .cr(8) 958*4bdc9457SAndroid Build Coastguard Worker .kr(9) 959*4bdc9457SAndroid Build Coastguard Worker .channels(8) 960*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 961*4bdc9457SAndroid Build Coastguard Worker } 962*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,c_div_8)963*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, c_div_8) { 964*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 965*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 966*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 967*4bdc9457SAndroid Build Coastguard Worker .cr(8) 968*4bdc9457SAndroid Build Coastguard Worker .kr(9) 969*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 970*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 971*4bdc9457SAndroid Build Coastguard Worker } 972*4bdc9457SAndroid Build Coastguard Worker } 973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,c_div_8_with_qmin)974*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, c_div_8_with_qmin) { 975*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 976*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 977*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 978*4bdc9457SAndroid Build Coastguard Worker .cr(8) 979*4bdc9457SAndroid Build Coastguard Worker .kr(9) 980*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 981*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 982*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 983*4bdc9457SAndroid Build Coastguard Worker } 984*4bdc9457SAndroid Build Coastguard Worker } 985*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,c_div_8_with_qmax)986*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, c_div_8_with_qmax) { 987*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 988*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 989*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 990*4bdc9457SAndroid Build Coastguard Worker .cr(8) 991*4bdc9457SAndroid Build Coastguard Worker .kr(9) 992*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 993*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 994*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 995*4bdc9457SAndroid Build Coastguard Worker } 996*4bdc9457SAndroid Build Coastguard Worker } 997*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,c_lt_8)998*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, c_lt_8) { 999*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1000*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 1001*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1002*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1003*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1004*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1005*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1006*4bdc9457SAndroid Build Coastguard Worker } 1007*4bdc9457SAndroid Build Coastguard Worker } 1008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,c_gt_8)1009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, c_gt_8) { 1010*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1011*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1012*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1013*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1014*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1015*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1016*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1017*4bdc9457SAndroid Build Coastguard Worker } 1018*4bdc9457SAndroid Build Coastguard Worker } 1019*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,c_gt_8_with_qmin)1020*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, c_gt_8_with_qmin) { 1021*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1022*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1023*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1024*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1025*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1026*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1027*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1028*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1029*4bdc9457SAndroid Build Coastguard Worker } 1030*4bdc9457SAndroid Build Coastguard Worker } 1031*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,c_gt_8_with_qmax)1032*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, c_gt_8_with_qmax) { 1033*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1034*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1035*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1036*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1037*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1038*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1039*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1040*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1041*4bdc9457SAndroid Build Coastguard Worker } 1042*4bdc9457SAndroid Build Coastguard Worker } 1043*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,multipixel)1044*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, multipixel) { 1045*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1046*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1047*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1048*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1049*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1050*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1051*4bdc9457SAndroid Build Coastguard Worker .width(3) 1052*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1053*4bdc9457SAndroid Build Coastguard Worker } 1054*4bdc9457SAndroid Build Coastguard Worker } 1055*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,multipixel_with_step)1056*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, multipixel_with_step) { 1057*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1058*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1059*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 1060*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1061*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1062*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1063*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1064*4bdc9457SAndroid Build Coastguard Worker .width(3) 1065*4bdc9457SAndroid Build Coastguard Worker .step(step) 1066*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1067*4bdc9457SAndroid Build Coastguard Worker } 1068*4bdc9457SAndroid Build Coastguard Worker } 1069*4bdc9457SAndroid Build Coastguard Worker } 1070*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,multipixel_with_output_stride)1071*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 1072*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1073*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1074*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1075*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1076*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1077*4bdc9457SAndroid Build Coastguard Worker .channels(8) 1078*4bdc9457SAndroid Build Coastguard Worker .width(5) 1079*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 1080*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1081*4bdc9457SAndroid Build Coastguard Worker } 1082*4bdc9457SAndroid Build Coastguard Worker } 1083*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,multipixel_with_qmin)1084*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 1085*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1086*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1087*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1088*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1089*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1090*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1091*4bdc9457SAndroid Build Coastguard Worker .width(3) 1092*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1093*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1094*4bdc9457SAndroid Build Coastguard Worker } 1095*4bdc9457SAndroid Build Coastguard Worker } 1096*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,multipixel_with_qmax)1097*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 1098*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1099*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1100*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1101*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1102*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1103*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1104*4bdc9457SAndroid Build Coastguard Worker .width(3) 1105*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1106*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1107*4bdc9457SAndroid Build Coastguard Worker } 1108*4bdc9457SAndroid Build Coastguard Worker } 1109*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,input_offset)1110*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, input_offset) { 1111*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1112*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1113*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1114*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1115*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1116*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1117*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 1118*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1119*4bdc9457SAndroid Build Coastguard Worker } 1120*4bdc9457SAndroid Build Coastguard Worker } 1121*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2,zero)1122*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__NEONFP16ARITH_ACC2, zero) { 1123*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1124*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 1125*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1126*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1127*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1128*4bdc9457SAndroid Build Coastguard Worker .kr(9) 1129*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1130*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 1131*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 1132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1133*4bdc9457SAndroid Build Coastguard Worker } 1134*4bdc9457SAndroid Build Coastguard Worker } 1135*4bdc9457SAndroid Build Coastguard Worker } 1136*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1137*4bdc9457SAndroid Build Coastguard Worker 1138*4bdc9457SAndroid Build Coastguard Worker 1139*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,c_eq_8)1140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, c_eq_8) { 1141*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1142*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1143*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1144*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1145*4bdc9457SAndroid Build Coastguard Worker .channels(8) 1146*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1147*4bdc9457SAndroid Build Coastguard Worker } 1148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,c_div_8)1149*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, c_div_8) { 1150*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1151*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1152*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1153*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1154*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1155*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1157*4bdc9457SAndroid Build Coastguard Worker } 1158*4bdc9457SAndroid Build Coastguard Worker } 1159*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,c_div_8_with_qmin)1160*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, c_div_8_with_qmin) { 1161*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1162*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1163*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1164*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1165*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1166*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1167*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1168*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1169*4bdc9457SAndroid Build Coastguard Worker } 1170*4bdc9457SAndroid Build Coastguard Worker } 1171*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,c_div_8_with_qmax)1172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, c_div_8_with_qmax) { 1173*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1174*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1175*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1176*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1177*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1178*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1179*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1180*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1181*4bdc9457SAndroid Build Coastguard Worker } 1182*4bdc9457SAndroid Build Coastguard Worker } 1183*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,c_lt_8)1184*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, c_lt_8) { 1185*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1186*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 1187*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1188*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1189*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1190*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1191*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1192*4bdc9457SAndroid Build Coastguard Worker } 1193*4bdc9457SAndroid Build Coastguard Worker } 1194*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,c_gt_8)1195*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, c_gt_8) { 1196*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1197*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1198*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1199*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1200*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1201*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1203*4bdc9457SAndroid Build Coastguard Worker } 1204*4bdc9457SAndroid Build Coastguard Worker } 1205*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,c_gt_8_with_qmin)1206*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, c_gt_8_with_qmin) { 1207*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1208*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1209*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1210*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1211*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1212*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1213*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1214*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1215*4bdc9457SAndroid Build Coastguard Worker } 1216*4bdc9457SAndroid Build Coastguard Worker } 1217*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,c_gt_8_with_qmax)1218*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, c_gt_8_with_qmax) { 1219*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1220*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1221*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1222*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1223*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1224*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1225*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1226*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1227*4bdc9457SAndroid Build Coastguard Worker } 1228*4bdc9457SAndroid Build Coastguard Worker } 1229*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,multipixel)1230*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, multipixel) { 1231*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1232*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1233*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1234*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1235*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1236*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1237*4bdc9457SAndroid Build Coastguard Worker .width(3) 1238*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1239*4bdc9457SAndroid Build Coastguard Worker } 1240*4bdc9457SAndroid Build Coastguard Worker } 1241*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,multipixel_with_step)1242*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, multipixel_with_step) { 1243*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1244*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1245*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 1246*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1247*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1248*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1249*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1250*4bdc9457SAndroid Build Coastguard Worker .width(3) 1251*4bdc9457SAndroid Build Coastguard Worker .step(step) 1252*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1253*4bdc9457SAndroid Build Coastguard Worker } 1254*4bdc9457SAndroid Build Coastguard Worker } 1255*4bdc9457SAndroid Build Coastguard Worker } 1256*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,multipixel_with_output_stride)1257*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, multipixel_with_output_stride) { 1258*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1259*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1260*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1261*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1262*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1263*4bdc9457SAndroid Build Coastguard Worker .channels(8) 1264*4bdc9457SAndroid Build Coastguard Worker .width(5) 1265*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 1266*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1267*4bdc9457SAndroid Build Coastguard Worker } 1268*4bdc9457SAndroid Build Coastguard Worker } 1269*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,multipixel_with_qmin)1270*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, multipixel_with_qmin) { 1271*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1272*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1273*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1274*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1275*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1276*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1277*4bdc9457SAndroid Build Coastguard Worker .width(3) 1278*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1279*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1280*4bdc9457SAndroid Build Coastguard Worker } 1281*4bdc9457SAndroid Build Coastguard Worker } 1282*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,multipixel_with_qmax)1283*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, multipixel_with_qmax) { 1284*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1285*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1286*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1287*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1288*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1289*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1290*4bdc9457SAndroid Build Coastguard Worker .width(3) 1291*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1292*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1293*4bdc9457SAndroid Build Coastguard Worker } 1294*4bdc9457SAndroid Build Coastguard Worker } 1295*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,input_offset)1296*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, input_offset) { 1297*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1298*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1299*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1300*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1301*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1302*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1303*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 1304*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1305*4bdc9457SAndroid Build Coastguard Worker } 1306*4bdc9457SAndroid Build Coastguard Worker } 1307*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH,zero)1308*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH, zero) { 1309*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1310*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 1311*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1312*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1313*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1314*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1315*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1316*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 1317*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 1318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 1319*4bdc9457SAndroid Build Coastguard Worker } 1320*4bdc9457SAndroid Build Coastguard Worker } 1321*4bdc9457SAndroid Build Coastguard Worker } 1322*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1323*4bdc9457SAndroid Build Coastguard Worker 1324*4bdc9457SAndroid Build Coastguard Worker 1325*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,c_eq_8)1326*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, c_eq_8) { 1327*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1328*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1329*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1330*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1331*4bdc9457SAndroid Build Coastguard Worker .channels(8) 1332*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1333*4bdc9457SAndroid Build Coastguard Worker } 1334*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,c_div_8)1335*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, c_div_8) { 1336*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1337*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1338*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1339*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1340*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1341*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1342*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1343*4bdc9457SAndroid Build Coastguard Worker } 1344*4bdc9457SAndroid Build Coastguard Worker } 1345*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,c_div_8_with_qmin)1346*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, c_div_8_with_qmin) { 1347*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1348*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1349*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1350*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1351*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1352*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1353*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1354*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1355*4bdc9457SAndroid Build Coastguard Worker } 1356*4bdc9457SAndroid Build Coastguard Worker } 1357*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,c_div_8_with_qmax)1358*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, c_div_8_with_qmax) { 1359*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1360*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1361*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1362*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1363*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1364*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1365*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1366*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1367*4bdc9457SAndroid Build Coastguard Worker } 1368*4bdc9457SAndroid Build Coastguard Worker } 1369*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,c_lt_8)1370*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, c_lt_8) { 1371*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1372*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 1373*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1374*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1375*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1376*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1377*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1378*4bdc9457SAndroid Build Coastguard Worker } 1379*4bdc9457SAndroid Build Coastguard Worker } 1380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,c_gt_8)1381*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, c_gt_8) { 1382*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1383*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1384*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1385*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1386*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1387*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1388*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1389*4bdc9457SAndroid Build Coastguard Worker } 1390*4bdc9457SAndroid Build Coastguard Worker } 1391*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,c_gt_8_with_qmin)1392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, c_gt_8_with_qmin) { 1393*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1394*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1395*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1396*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1397*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1398*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1399*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1400*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1401*4bdc9457SAndroid Build Coastguard Worker } 1402*4bdc9457SAndroid Build Coastguard Worker } 1403*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,c_gt_8_with_qmax)1404*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, c_gt_8_with_qmax) { 1405*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1406*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 1407*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1408*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1409*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1410*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1411*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1413*4bdc9457SAndroid Build Coastguard Worker } 1414*4bdc9457SAndroid Build Coastguard Worker } 1415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,multipixel)1416*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, multipixel) { 1417*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1418*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1419*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1420*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1421*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1422*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1423*4bdc9457SAndroid Build Coastguard Worker .width(3) 1424*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1425*4bdc9457SAndroid Build Coastguard Worker } 1426*4bdc9457SAndroid Build Coastguard Worker } 1427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,multipixel_with_step)1428*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, multipixel_with_step) { 1429*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1430*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1431*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 1432*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1433*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1434*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1435*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1436*4bdc9457SAndroid Build Coastguard Worker .width(3) 1437*4bdc9457SAndroid Build Coastguard Worker .step(step) 1438*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1439*4bdc9457SAndroid Build Coastguard Worker } 1440*4bdc9457SAndroid Build Coastguard Worker } 1441*4bdc9457SAndroid Build Coastguard Worker } 1442*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,multipixel_with_output_stride)1443*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 1444*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1445*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1446*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1447*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1448*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1449*4bdc9457SAndroid Build Coastguard Worker .channels(8) 1450*4bdc9457SAndroid Build Coastguard Worker .width(5) 1451*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 1452*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1453*4bdc9457SAndroid Build Coastguard Worker } 1454*4bdc9457SAndroid Build Coastguard Worker } 1455*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,multipixel_with_qmin)1456*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 1457*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1458*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1459*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1460*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1461*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1462*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1463*4bdc9457SAndroid Build Coastguard Worker .width(3) 1464*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1465*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1466*4bdc9457SAndroid Build Coastguard Worker } 1467*4bdc9457SAndroid Build Coastguard Worker } 1468*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,multipixel_with_qmax)1469*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 1470*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1471*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 1472*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1473*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1474*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1475*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1476*4bdc9457SAndroid Build Coastguard Worker .width(3) 1477*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1478*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1479*4bdc9457SAndroid Build Coastguard Worker } 1480*4bdc9457SAndroid Build Coastguard Worker } 1481*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,input_offset)1482*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, input_offset) { 1483*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1484*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1485*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1486*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1487*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1488*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1489*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 1490*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1491*4bdc9457SAndroid Build Coastguard Worker } 1492*4bdc9457SAndroid Build Coastguard Worker } 1493*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2,zero)1494*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__NEONFP16ARITH_ACC2, zero) { 1495*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1496*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 1497*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 1498*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1499*4bdc9457SAndroid Build Coastguard Worker .cr(8) 1500*4bdc9457SAndroid Build Coastguard Worker .kr(25) 1501*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1502*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 1503*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 1504*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1505*4bdc9457SAndroid Build Coastguard Worker } 1506*4bdc9457SAndroid Build Coastguard Worker } 1507*4bdc9457SAndroid Build Coastguard Worker } 1508*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1509*4bdc9457SAndroid Build Coastguard Worker 1510*4bdc9457SAndroid Build Coastguard Worker 1511*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,c_eq_16)1512*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, c_eq_16) { 1513*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1514*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1515*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1516*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1517*4bdc9457SAndroid Build Coastguard Worker .channels(16) 1518*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1519*4bdc9457SAndroid Build Coastguard Worker } 1520*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,c_div_16)1521*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, c_div_16) { 1522*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1523*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1524*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1525*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1526*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1527*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1528*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1529*4bdc9457SAndroid Build Coastguard Worker } 1530*4bdc9457SAndroid Build Coastguard Worker } 1531*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,c_div_16_with_qmin)1532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, c_div_16_with_qmin) { 1533*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1534*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1535*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1536*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1537*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1538*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1539*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1540*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1541*4bdc9457SAndroid Build Coastguard Worker } 1542*4bdc9457SAndroid Build Coastguard Worker } 1543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,c_div_16_with_qmax)1544*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, c_div_16_with_qmax) { 1545*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1546*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1547*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1548*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1549*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1550*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1551*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1552*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1553*4bdc9457SAndroid Build Coastguard Worker } 1554*4bdc9457SAndroid Build Coastguard Worker } 1555*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,c_lt_16)1556*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, c_lt_16) { 1557*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1558*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 1559*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1560*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1561*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1562*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1563*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1564*4bdc9457SAndroid Build Coastguard Worker } 1565*4bdc9457SAndroid Build Coastguard Worker } 1566*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,c_gt_16)1567*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, c_gt_16) { 1568*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1569*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1570*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1571*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1572*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1573*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1575*4bdc9457SAndroid Build Coastguard Worker } 1576*4bdc9457SAndroid Build Coastguard Worker } 1577*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,c_gt_16_with_qmin)1578*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, c_gt_16_with_qmin) { 1579*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1580*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1581*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1582*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1583*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1584*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1585*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1586*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1587*4bdc9457SAndroid Build Coastguard Worker } 1588*4bdc9457SAndroid Build Coastguard Worker } 1589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,c_gt_16_with_qmax)1590*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, c_gt_16_with_qmax) { 1591*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1592*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1593*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1594*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1595*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1596*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1597*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1598*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1599*4bdc9457SAndroid Build Coastguard Worker } 1600*4bdc9457SAndroid Build Coastguard Worker } 1601*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,multipixel)1602*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, multipixel) { 1603*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1604*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1605*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1606*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1607*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1608*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1609*4bdc9457SAndroid Build Coastguard Worker .width(3) 1610*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1611*4bdc9457SAndroid Build Coastguard Worker } 1612*4bdc9457SAndroid Build Coastguard Worker } 1613*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,multipixel_with_step)1614*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, multipixel_with_step) { 1615*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1616*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1617*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 1618*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1619*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1620*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1621*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1622*4bdc9457SAndroid Build Coastguard Worker .width(3) 1623*4bdc9457SAndroid Build Coastguard Worker .step(step) 1624*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1625*4bdc9457SAndroid Build Coastguard Worker } 1626*4bdc9457SAndroid Build Coastguard Worker } 1627*4bdc9457SAndroid Build Coastguard Worker } 1628*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,multipixel_with_output_stride)1629*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, multipixel_with_output_stride) { 1630*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1631*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1632*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1633*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1634*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1635*4bdc9457SAndroid Build Coastguard Worker .channels(16) 1636*4bdc9457SAndroid Build Coastguard Worker .width(5) 1637*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 1638*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1639*4bdc9457SAndroid Build Coastguard Worker } 1640*4bdc9457SAndroid Build Coastguard Worker } 1641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,multipixel_with_qmin)1642*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, multipixel_with_qmin) { 1643*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1644*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1645*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1646*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1647*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1648*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1649*4bdc9457SAndroid Build Coastguard Worker .width(3) 1650*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1651*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1652*4bdc9457SAndroid Build Coastguard Worker } 1653*4bdc9457SAndroid Build Coastguard Worker } 1654*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,multipixel_with_qmax)1655*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, multipixel_with_qmax) { 1656*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1657*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1658*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1659*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1660*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1661*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1662*4bdc9457SAndroid Build Coastguard Worker .width(3) 1663*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1664*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1665*4bdc9457SAndroid Build Coastguard Worker } 1666*4bdc9457SAndroid Build Coastguard Worker } 1667*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,input_offset)1668*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, input_offset) { 1669*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1670*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1671*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1672*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1673*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1674*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1675*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 1676*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1677*4bdc9457SAndroid Build Coastguard Worker } 1678*4bdc9457SAndroid Build Coastguard Worker } 1679*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH,zero)1680*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH, zero) { 1681*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1682*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 1683*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1684*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1685*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1686*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1687*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1688*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 1689*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 1690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 1691*4bdc9457SAndroid Build Coastguard Worker } 1692*4bdc9457SAndroid Build Coastguard Worker } 1693*4bdc9457SAndroid Build Coastguard Worker } 1694*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1695*4bdc9457SAndroid Build Coastguard Worker 1696*4bdc9457SAndroid Build Coastguard Worker 1697*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,c_eq_16)1698*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, c_eq_16) { 1699*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1700*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1701*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1702*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1703*4bdc9457SAndroid Build Coastguard Worker .channels(16) 1704*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1705*4bdc9457SAndroid Build Coastguard Worker } 1706*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,c_div_16)1707*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, c_div_16) { 1708*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1709*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1710*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1711*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1712*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1713*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1714*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1715*4bdc9457SAndroid Build Coastguard Worker } 1716*4bdc9457SAndroid Build Coastguard Worker } 1717*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,c_div_16_with_qmin)1718*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, c_div_16_with_qmin) { 1719*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1720*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1721*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1722*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1723*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1724*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1725*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1726*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1727*4bdc9457SAndroid Build Coastguard Worker } 1728*4bdc9457SAndroid Build Coastguard Worker } 1729*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,c_div_16_with_qmax)1730*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, c_div_16_with_qmax) { 1731*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1732*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1733*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1734*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1735*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1736*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1737*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1738*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1739*4bdc9457SAndroid Build Coastguard Worker } 1740*4bdc9457SAndroid Build Coastguard Worker } 1741*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,c_lt_16)1742*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, c_lt_16) { 1743*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1744*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 1745*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1746*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1747*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1748*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1749*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1750*4bdc9457SAndroid Build Coastguard Worker } 1751*4bdc9457SAndroid Build Coastguard Worker } 1752*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,c_gt_16)1753*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, c_gt_16) { 1754*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1755*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1756*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1757*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1758*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1759*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1760*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1761*4bdc9457SAndroid Build Coastguard Worker } 1762*4bdc9457SAndroid Build Coastguard Worker } 1763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,c_gt_16_with_qmin)1764*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, c_gt_16_with_qmin) { 1765*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1766*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1767*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1768*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1769*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1770*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1771*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1772*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1773*4bdc9457SAndroid Build Coastguard Worker } 1774*4bdc9457SAndroid Build Coastguard Worker } 1775*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,c_gt_16_with_qmax)1776*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, c_gt_16_with_qmax) { 1777*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1778*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1779*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1780*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1781*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1782*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1783*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1784*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1785*4bdc9457SAndroid Build Coastguard Worker } 1786*4bdc9457SAndroid Build Coastguard Worker } 1787*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,multipixel)1788*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, multipixel) { 1789*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1790*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1791*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1792*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1793*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1794*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1795*4bdc9457SAndroid Build Coastguard Worker .width(3) 1796*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1797*4bdc9457SAndroid Build Coastguard Worker } 1798*4bdc9457SAndroid Build Coastguard Worker } 1799*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,multipixel_with_step)1800*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, multipixel_with_step) { 1801*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1802*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1803*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 1804*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1805*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1806*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1807*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1808*4bdc9457SAndroid Build Coastguard Worker .width(3) 1809*4bdc9457SAndroid Build Coastguard Worker .step(step) 1810*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1811*4bdc9457SAndroid Build Coastguard Worker } 1812*4bdc9457SAndroid Build Coastguard Worker } 1813*4bdc9457SAndroid Build Coastguard Worker } 1814*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,multipixel_with_output_stride)1815*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 1816*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1817*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1818*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1819*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1820*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1821*4bdc9457SAndroid Build Coastguard Worker .channels(16) 1822*4bdc9457SAndroid Build Coastguard Worker .width(5) 1823*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 1824*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1825*4bdc9457SAndroid Build Coastguard Worker } 1826*4bdc9457SAndroid Build Coastguard Worker } 1827*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,multipixel_with_qmin)1828*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 1829*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1830*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1831*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1832*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1833*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1834*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1835*4bdc9457SAndroid Build Coastguard Worker .width(3) 1836*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1837*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1838*4bdc9457SAndroid Build Coastguard Worker } 1839*4bdc9457SAndroid Build Coastguard Worker } 1840*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,multipixel_with_qmax)1841*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 1842*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1843*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1844*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1845*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1846*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1847*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1848*4bdc9457SAndroid Build Coastguard Worker .width(3) 1849*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1850*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1851*4bdc9457SAndroid Build Coastguard Worker } 1852*4bdc9457SAndroid Build Coastguard Worker } 1853*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,input_offset)1854*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, input_offset) { 1855*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1856*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1857*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1858*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1859*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1860*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1861*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 1862*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1863*4bdc9457SAndroid Build Coastguard Worker } 1864*4bdc9457SAndroid Build Coastguard Worker } 1865*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2,zero)1866*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__NEONFP16ARITH_ACC2, zero) { 1867*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1868*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 1869*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1870*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1871*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1872*4bdc9457SAndroid Build Coastguard Worker .kr(3) 1873*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1874*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 1875*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 1876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 1877*4bdc9457SAndroid Build Coastguard Worker } 1878*4bdc9457SAndroid Build Coastguard Worker } 1879*4bdc9457SAndroid Build Coastguard Worker } 1880*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 1881*4bdc9457SAndroid Build Coastguard Worker 1882*4bdc9457SAndroid Build Coastguard Worker 1883*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,c_eq_16)1884*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, c_eq_16) { 1885*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1886*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1887*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1888*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1889*4bdc9457SAndroid Build Coastguard Worker .channels(16) 1890*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1891*4bdc9457SAndroid Build Coastguard Worker } 1892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,c_div_16)1893*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, c_div_16) { 1894*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1895*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1896*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1897*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1898*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1899*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1900*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1901*4bdc9457SAndroid Build Coastguard Worker } 1902*4bdc9457SAndroid Build Coastguard Worker } 1903*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,c_div_16_with_qmin)1904*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, c_div_16_with_qmin) { 1905*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1906*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1907*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1908*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1909*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1910*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1911*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1912*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1913*4bdc9457SAndroid Build Coastguard Worker } 1914*4bdc9457SAndroid Build Coastguard Worker } 1915*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,c_div_16_with_qmax)1916*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, c_div_16_with_qmax) { 1917*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1918*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 1919*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1920*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1921*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1922*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1923*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1924*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1925*4bdc9457SAndroid Build Coastguard Worker } 1926*4bdc9457SAndroid Build Coastguard Worker } 1927*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,c_lt_16)1928*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, c_lt_16) { 1929*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1930*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 1931*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1932*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1933*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1934*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1935*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1936*4bdc9457SAndroid Build Coastguard Worker } 1937*4bdc9457SAndroid Build Coastguard Worker } 1938*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,c_gt_16)1939*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, c_gt_16) { 1940*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1941*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1942*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1943*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1944*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1945*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1946*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1947*4bdc9457SAndroid Build Coastguard Worker } 1948*4bdc9457SAndroid Build Coastguard Worker } 1949*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,c_gt_16_with_qmin)1950*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, c_gt_16_with_qmin) { 1951*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1952*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1953*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1954*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1955*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1956*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1957*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1958*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1959*4bdc9457SAndroid Build Coastguard Worker } 1960*4bdc9457SAndroid Build Coastguard Worker } 1961*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,c_gt_16_with_qmax)1962*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, c_gt_16_with_qmax) { 1963*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1964*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 1965*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1966*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1967*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1968*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1969*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1970*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1971*4bdc9457SAndroid Build Coastguard Worker } 1972*4bdc9457SAndroid Build Coastguard Worker } 1973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,multipixel)1974*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, multipixel) { 1975*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1976*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1977*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1978*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1979*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1980*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1981*4bdc9457SAndroid Build Coastguard Worker .width(3) 1982*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1983*4bdc9457SAndroid Build Coastguard Worker } 1984*4bdc9457SAndroid Build Coastguard Worker } 1985*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,multipixel_with_step)1986*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, multipixel_with_step) { 1987*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1988*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 1989*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 1990*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 1991*4bdc9457SAndroid Build Coastguard Worker .cr(16) 1992*4bdc9457SAndroid Build Coastguard Worker .kr(4) 1993*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 1994*4bdc9457SAndroid Build Coastguard Worker .width(3) 1995*4bdc9457SAndroid Build Coastguard Worker .step(step) 1996*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 1997*4bdc9457SAndroid Build Coastguard Worker } 1998*4bdc9457SAndroid Build Coastguard Worker } 1999*4bdc9457SAndroid Build Coastguard Worker } 2000*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,multipixel_with_output_stride)2001*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, multipixel_with_output_stride) { 2002*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2003*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2004*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2005*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2006*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2007*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2008*4bdc9457SAndroid Build Coastguard Worker .width(5) 2009*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 2010*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 2011*4bdc9457SAndroid Build Coastguard Worker } 2012*4bdc9457SAndroid Build Coastguard Worker } 2013*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,multipixel_with_qmin)2014*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, multipixel_with_qmin) { 2015*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2016*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2017*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2018*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2019*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2020*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2021*4bdc9457SAndroid Build Coastguard Worker .width(3) 2022*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2023*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 2024*4bdc9457SAndroid Build Coastguard Worker } 2025*4bdc9457SAndroid Build Coastguard Worker } 2026*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,multipixel_with_qmax)2027*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, multipixel_with_qmax) { 2028*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2029*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2030*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2031*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2032*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2033*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2034*4bdc9457SAndroid Build Coastguard Worker .width(3) 2035*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2036*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 2037*4bdc9457SAndroid Build Coastguard Worker } 2038*4bdc9457SAndroid Build Coastguard Worker } 2039*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,input_offset)2040*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, input_offset) { 2041*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2042*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2043*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2044*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2045*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2046*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2047*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2048*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 2049*4bdc9457SAndroid Build Coastguard Worker } 2050*4bdc9457SAndroid Build Coastguard Worker } 2051*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH,zero)2052*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH, zero) { 2053*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2054*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 2055*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2056*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2057*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2058*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2059*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2060*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2061*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 2062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 2063*4bdc9457SAndroid Build Coastguard Worker } 2064*4bdc9457SAndroid Build Coastguard Worker } 2065*4bdc9457SAndroid Build Coastguard Worker } 2066*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 2067*4bdc9457SAndroid Build Coastguard Worker 2068*4bdc9457SAndroid Build Coastguard Worker 2069*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,c_eq_16)2070*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, c_eq_16) { 2071*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2072*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2073*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2074*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2075*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2076*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2077*4bdc9457SAndroid Build Coastguard Worker } 2078*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,c_div_16)2079*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, c_div_16) { 2080*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2081*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2082*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2083*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2084*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2085*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2086*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2087*4bdc9457SAndroid Build Coastguard Worker } 2088*4bdc9457SAndroid Build Coastguard Worker } 2089*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,c_div_16_with_qmin)2090*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, c_div_16_with_qmin) { 2091*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2092*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2093*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2094*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2095*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2096*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2097*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2098*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2099*4bdc9457SAndroid Build Coastguard Worker } 2100*4bdc9457SAndroid Build Coastguard Worker } 2101*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,c_div_16_with_qmax)2102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, c_div_16_with_qmax) { 2103*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2104*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2105*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2106*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2107*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2108*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2109*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2110*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2111*4bdc9457SAndroid Build Coastguard Worker } 2112*4bdc9457SAndroid Build Coastguard Worker } 2113*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,c_lt_16)2114*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, c_lt_16) { 2115*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2116*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 2117*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2118*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2119*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2120*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2121*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2122*4bdc9457SAndroid Build Coastguard Worker } 2123*4bdc9457SAndroid Build Coastguard Worker } 2124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,c_gt_16)2125*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, c_gt_16) { 2126*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2127*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2128*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2129*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2130*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2131*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2133*4bdc9457SAndroid Build Coastguard Worker } 2134*4bdc9457SAndroid Build Coastguard Worker } 2135*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,c_gt_16_with_qmin)2136*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, c_gt_16_with_qmin) { 2137*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2138*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2139*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2140*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2141*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2142*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2143*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2144*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2145*4bdc9457SAndroid Build Coastguard Worker } 2146*4bdc9457SAndroid Build Coastguard Worker } 2147*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,c_gt_16_with_qmax)2148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, c_gt_16_with_qmax) { 2149*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2150*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2151*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2152*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2153*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2154*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2155*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2157*4bdc9457SAndroid Build Coastguard Worker } 2158*4bdc9457SAndroid Build Coastguard Worker } 2159*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,multipixel)2160*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, multipixel) { 2161*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2162*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2163*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2164*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2165*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2166*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2167*4bdc9457SAndroid Build Coastguard Worker .width(3) 2168*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2169*4bdc9457SAndroid Build Coastguard Worker } 2170*4bdc9457SAndroid Build Coastguard Worker } 2171*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,multipixel_with_step)2172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, multipixel_with_step) { 2173*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2174*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2175*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 2176*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2177*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2178*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2179*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2180*4bdc9457SAndroid Build Coastguard Worker .width(3) 2181*4bdc9457SAndroid Build Coastguard Worker .step(step) 2182*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2183*4bdc9457SAndroid Build Coastguard Worker } 2184*4bdc9457SAndroid Build Coastguard Worker } 2185*4bdc9457SAndroid Build Coastguard Worker } 2186*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,multipixel_with_output_stride)2187*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 2188*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2189*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2190*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2191*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2192*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2193*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2194*4bdc9457SAndroid Build Coastguard Worker .width(5) 2195*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 2196*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2197*4bdc9457SAndroid Build Coastguard Worker } 2198*4bdc9457SAndroid Build Coastguard Worker } 2199*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,multipixel_with_qmin)2200*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 2201*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2202*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2203*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2204*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2205*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2206*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2207*4bdc9457SAndroid Build Coastguard Worker .width(3) 2208*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2209*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2210*4bdc9457SAndroid Build Coastguard Worker } 2211*4bdc9457SAndroid Build Coastguard Worker } 2212*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,multipixel_with_qmax)2213*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 2214*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2215*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2216*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2217*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2218*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2219*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2220*4bdc9457SAndroid Build Coastguard Worker .width(3) 2221*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2222*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2223*4bdc9457SAndroid Build Coastguard Worker } 2224*4bdc9457SAndroid Build Coastguard Worker } 2225*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,input_offset)2226*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, input_offset) { 2227*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2228*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2229*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2230*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2231*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2232*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2233*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2234*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2235*4bdc9457SAndroid Build Coastguard Worker } 2236*4bdc9457SAndroid Build Coastguard Worker } 2237*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2,zero)2238*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__NEONFP16ARITH_ACC2, zero) { 2239*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2240*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 2241*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2242*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2243*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2244*4bdc9457SAndroid Build Coastguard Worker .kr(4) 2245*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2246*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2247*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 2248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2249*4bdc9457SAndroid Build Coastguard Worker } 2250*4bdc9457SAndroid Build Coastguard Worker } 2251*4bdc9457SAndroid Build Coastguard Worker } 2252*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 2253*4bdc9457SAndroid Build Coastguard Worker 2254*4bdc9457SAndroid Build Coastguard Worker 2255*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,c_eq_16)2256*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, c_eq_16) { 2257*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2258*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2259*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2260*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2261*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2262*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2263*4bdc9457SAndroid Build Coastguard Worker } 2264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,c_div_16)2265*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, c_div_16) { 2266*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2267*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2268*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2269*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2270*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2271*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2272*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2273*4bdc9457SAndroid Build Coastguard Worker } 2274*4bdc9457SAndroid Build Coastguard Worker } 2275*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,c_div_16_with_qmin)2276*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, c_div_16_with_qmin) { 2277*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2278*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2279*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2280*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2281*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2282*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2283*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2285*4bdc9457SAndroid Build Coastguard Worker } 2286*4bdc9457SAndroid Build Coastguard Worker } 2287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,c_div_16_with_qmax)2288*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, c_div_16_with_qmax) { 2289*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2290*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2291*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2292*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2293*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2294*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2295*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2296*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2297*4bdc9457SAndroid Build Coastguard Worker } 2298*4bdc9457SAndroid Build Coastguard Worker } 2299*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,c_lt_16)2300*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, c_lt_16) { 2301*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2302*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 2303*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2304*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2305*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2306*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2307*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2308*4bdc9457SAndroid Build Coastguard Worker } 2309*4bdc9457SAndroid Build Coastguard Worker } 2310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,c_gt_16)2311*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, c_gt_16) { 2312*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2313*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2314*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2315*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2316*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2317*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2319*4bdc9457SAndroid Build Coastguard Worker } 2320*4bdc9457SAndroid Build Coastguard Worker } 2321*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,c_gt_16_with_qmin)2322*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, c_gt_16_with_qmin) { 2323*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2324*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2325*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2326*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2327*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2328*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2329*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2330*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2331*4bdc9457SAndroid Build Coastguard Worker } 2332*4bdc9457SAndroid Build Coastguard Worker } 2333*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,c_gt_16_with_qmax)2334*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, c_gt_16_with_qmax) { 2335*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2336*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2337*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2338*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2339*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2340*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2341*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2342*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2343*4bdc9457SAndroid Build Coastguard Worker } 2344*4bdc9457SAndroid Build Coastguard Worker } 2345*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,multipixel)2346*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, multipixel) { 2347*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2348*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2349*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2350*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2351*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2352*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2353*4bdc9457SAndroid Build Coastguard Worker .width(3) 2354*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2355*4bdc9457SAndroid Build Coastguard Worker } 2356*4bdc9457SAndroid Build Coastguard Worker } 2357*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,multipixel_with_step)2358*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, multipixel_with_step) { 2359*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2360*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2361*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 2362*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2363*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2364*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2365*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2366*4bdc9457SAndroid Build Coastguard Worker .width(3) 2367*4bdc9457SAndroid Build Coastguard Worker .step(step) 2368*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2369*4bdc9457SAndroid Build Coastguard Worker } 2370*4bdc9457SAndroid Build Coastguard Worker } 2371*4bdc9457SAndroid Build Coastguard Worker } 2372*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,multipixel_with_output_stride)2373*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, multipixel_with_output_stride) { 2374*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2375*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2376*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2377*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2378*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2379*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2380*4bdc9457SAndroid Build Coastguard Worker .width(5) 2381*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 2382*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2383*4bdc9457SAndroid Build Coastguard Worker } 2384*4bdc9457SAndroid Build Coastguard Worker } 2385*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,multipixel_with_qmin)2386*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, multipixel_with_qmin) { 2387*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2388*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2389*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2390*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2391*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2392*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2393*4bdc9457SAndroid Build Coastguard Worker .width(3) 2394*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2395*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2396*4bdc9457SAndroid Build Coastguard Worker } 2397*4bdc9457SAndroid Build Coastguard Worker } 2398*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,multipixel_with_qmax)2399*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, multipixel_with_qmax) { 2400*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2401*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2402*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2403*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2404*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2405*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2406*4bdc9457SAndroid Build Coastguard Worker .width(3) 2407*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2408*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2409*4bdc9457SAndroid Build Coastguard Worker } 2410*4bdc9457SAndroid Build Coastguard Worker } 2411*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,input_offset)2412*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, input_offset) { 2413*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2414*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2415*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2416*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2417*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2418*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2419*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2420*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2421*4bdc9457SAndroid Build Coastguard Worker } 2422*4bdc9457SAndroid Build Coastguard Worker } 2423*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH,zero)2424*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH, zero) { 2425*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2426*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 2427*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2428*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2429*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2430*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2431*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2432*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2433*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 2434*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 2435*4bdc9457SAndroid Build Coastguard Worker } 2436*4bdc9457SAndroid Build Coastguard Worker } 2437*4bdc9457SAndroid Build Coastguard Worker } 2438*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 2439*4bdc9457SAndroid Build Coastguard Worker 2440*4bdc9457SAndroid Build Coastguard Worker 2441*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,c_eq_16)2442*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, c_eq_16) { 2443*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2444*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2445*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2446*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2447*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2448*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2449*4bdc9457SAndroid Build Coastguard Worker } 2450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,c_div_16)2451*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, c_div_16) { 2452*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2453*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2454*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2455*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2456*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2457*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2458*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2459*4bdc9457SAndroid Build Coastguard Worker } 2460*4bdc9457SAndroid Build Coastguard Worker } 2461*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,c_div_16_with_qmin)2462*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, c_div_16_with_qmin) { 2463*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2464*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2465*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2466*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2467*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2468*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2469*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2470*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2471*4bdc9457SAndroid Build Coastguard Worker } 2472*4bdc9457SAndroid Build Coastguard Worker } 2473*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,c_div_16_with_qmax)2474*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, c_div_16_with_qmax) { 2475*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2476*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2477*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2478*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2479*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2480*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2481*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2482*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2483*4bdc9457SAndroid Build Coastguard Worker } 2484*4bdc9457SAndroid Build Coastguard Worker } 2485*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,c_lt_16)2486*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, c_lt_16) { 2487*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2488*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 2489*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2490*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2491*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2492*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2493*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2494*4bdc9457SAndroid Build Coastguard Worker } 2495*4bdc9457SAndroid Build Coastguard Worker } 2496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,c_gt_16)2497*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, c_gt_16) { 2498*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2499*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2500*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2501*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2502*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2503*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2504*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2505*4bdc9457SAndroid Build Coastguard Worker } 2506*4bdc9457SAndroid Build Coastguard Worker } 2507*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,c_gt_16_with_qmin)2508*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, c_gt_16_with_qmin) { 2509*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2510*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2511*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2512*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2513*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2514*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2515*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2516*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2517*4bdc9457SAndroid Build Coastguard Worker } 2518*4bdc9457SAndroid Build Coastguard Worker } 2519*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,c_gt_16_with_qmax)2520*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, c_gt_16_with_qmax) { 2521*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2522*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2523*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2524*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2525*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2526*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2527*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2528*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2529*4bdc9457SAndroid Build Coastguard Worker } 2530*4bdc9457SAndroid Build Coastguard Worker } 2531*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,multipixel)2532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, multipixel) { 2533*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2534*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2535*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2536*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2537*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2538*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2539*4bdc9457SAndroid Build Coastguard Worker .width(3) 2540*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2541*4bdc9457SAndroid Build Coastguard Worker } 2542*4bdc9457SAndroid Build Coastguard Worker } 2543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,multipixel_with_step)2544*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, multipixel_with_step) { 2545*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2546*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2547*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 2548*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2549*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2550*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2551*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2552*4bdc9457SAndroid Build Coastguard Worker .width(3) 2553*4bdc9457SAndroid Build Coastguard Worker .step(step) 2554*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2555*4bdc9457SAndroid Build Coastguard Worker } 2556*4bdc9457SAndroid Build Coastguard Worker } 2557*4bdc9457SAndroid Build Coastguard Worker } 2558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,multipixel_with_output_stride)2559*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 2560*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2561*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2562*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2563*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2564*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2565*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2566*4bdc9457SAndroid Build Coastguard Worker .width(5) 2567*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 2568*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2569*4bdc9457SAndroid Build Coastguard Worker } 2570*4bdc9457SAndroid Build Coastguard Worker } 2571*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,multipixel_with_qmin)2572*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 2573*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2574*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2575*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2576*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2577*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2578*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2579*4bdc9457SAndroid Build Coastguard Worker .width(3) 2580*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2581*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2582*4bdc9457SAndroid Build Coastguard Worker } 2583*4bdc9457SAndroid Build Coastguard Worker } 2584*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,multipixel_with_qmax)2585*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 2586*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2587*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2588*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2589*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2590*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2591*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2592*4bdc9457SAndroid Build Coastguard Worker .width(3) 2593*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2594*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2595*4bdc9457SAndroid Build Coastguard Worker } 2596*4bdc9457SAndroid Build Coastguard Worker } 2597*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,input_offset)2598*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, input_offset) { 2599*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2600*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2601*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2602*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2603*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2604*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2605*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2606*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2607*4bdc9457SAndroid Build Coastguard Worker } 2608*4bdc9457SAndroid Build Coastguard Worker } 2609*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2,zero)2610*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__NEONFP16ARITH_ACC2, zero) { 2611*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2612*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 2613*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2614*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2615*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2616*4bdc9457SAndroid Build Coastguard Worker .kr(9) 2617*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2618*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2619*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 2620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2621*4bdc9457SAndroid Build Coastguard Worker } 2622*4bdc9457SAndroid Build Coastguard Worker } 2623*4bdc9457SAndroid Build Coastguard Worker } 2624*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 2625*4bdc9457SAndroid Build Coastguard Worker 2626*4bdc9457SAndroid Build Coastguard Worker 2627*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,c_eq_16)2628*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, c_eq_16) { 2629*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2630*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2631*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2632*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2633*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2634*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2635*4bdc9457SAndroid Build Coastguard Worker } 2636*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,c_div_16)2637*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, c_div_16) { 2638*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2639*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2640*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2641*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2642*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2643*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2644*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2645*4bdc9457SAndroid Build Coastguard Worker } 2646*4bdc9457SAndroid Build Coastguard Worker } 2647*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,c_div_16_with_qmin)2648*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, c_div_16_with_qmin) { 2649*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2650*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2651*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2652*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2653*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2654*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2655*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2656*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2657*4bdc9457SAndroid Build Coastguard Worker } 2658*4bdc9457SAndroid Build Coastguard Worker } 2659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,c_div_16_with_qmax)2660*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, c_div_16_with_qmax) { 2661*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2662*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2663*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2664*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2665*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2666*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2667*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2668*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2669*4bdc9457SAndroid Build Coastguard Worker } 2670*4bdc9457SAndroid Build Coastguard Worker } 2671*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,c_lt_16)2672*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, c_lt_16) { 2673*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2674*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 2675*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2676*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2677*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2678*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2679*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2680*4bdc9457SAndroid Build Coastguard Worker } 2681*4bdc9457SAndroid Build Coastguard Worker } 2682*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,c_gt_16)2683*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, c_gt_16) { 2684*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2685*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2686*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2687*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2688*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2689*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2691*4bdc9457SAndroid Build Coastguard Worker } 2692*4bdc9457SAndroid Build Coastguard Worker } 2693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,c_gt_16_with_qmin)2694*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, c_gt_16_with_qmin) { 2695*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2696*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2697*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2698*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2699*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2700*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2701*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2702*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2703*4bdc9457SAndroid Build Coastguard Worker } 2704*4bdc9457SAndroid Build Coastguard Worker } 2705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,c_gt_16_with_qmax)2706*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, c_gt_16_with_qmax) { 2707*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2708*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2709*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2710*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2711*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2712*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2713*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2714*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2715*4bdc9457SAndroid Build Coastguard Worker } 2716*4bdc9457SAndroid Build Coastguard Worker } 2717*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,multipixel)2718*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, multipixel) { 2719*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2720*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2721*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2722*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2723*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2724*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2725*4bdc9457SAndroid Build Coastguard Worker .width(3) 2726*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2727*4bdc9457SAndroid Build Coastguard Worker } 2728*4bdc9457SAndroid Build Coastguard Worker } 2729*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,multipixel_with_step)2730*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, multipixel_with_step) { 2731*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2732*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2733*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 2734*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2735*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2736*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2737*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2738*4bdc9457SAndroid Build Coastguard Worker .width(3) 2739*4bdc9457SAndroid Build Coastguard Worker .step(step) 2740*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2741*4bdc9457SAndroid Build Coastguard Worker } 2742*4bdc9457SAndroid Build Coastguard Worker } 2743*4bdc9457SAndroid Build Coastguard Worker } 2744*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,multipixel_with_output_stride)2745*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, multipixel_with_output_stride) { 2746*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2747*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2748*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2749*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2750*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2751*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2752*4bdc9457SAndroid Build Coastguard Worker .width(5) 2753*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 2754*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2755*4bdc9457SAndroid Build Coastguard Worker } 2756*4bdc9457SAndroid Build Coastguard Worker } 2757*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,multipixel_with_qmin)2758*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, multipixel_with_qmin) { 2759*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2760*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2761*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2762*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2763*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2764*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2765*4bdc9457SAndroid Build Coastguard Worker .width(3) 2766*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2767*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2768*4bdc9457SAndroid Build Coastguard Worker } 2769*4bdc9457SAndroid Build Coastguard Worker } 2770*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,multipixel_with_qmax)2771*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, multipixel_with_qmax) { 2772*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2773*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2774*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2775*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2776*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2777*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2778*4bdc9457SAndroid Build Coastguard Worker .width(3) 2779*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2780*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2781*4bdc9457SAndroid Build Coastguard Worker } 2782*4bdc9457SAndroid Build Coastguard Worker } 2783*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,input_offset)2784*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, input_offset) { 2785*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2786*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2787*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2788*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2789*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2790*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2791*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2792*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2793*4bdc9457SAndroid Build Coastguard Worker } 2794*4bdc9457SAndroid Build Coastguard Worker } 2795*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH,zero)2796*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH, zero) { 2797*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2798*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 2799*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2800*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2801*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2802*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2803*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2804*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2805*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 2806*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 2807*4bdc9457SAndroid Build Coastguard Worker } 2808*4bdc9457SAndroid Build Coastguard Worker } 2809*4bdc9457SAndroid Build Coastguard Worker } 2810*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 2811*4bdc9457SAndroid Build Coastguard Worker 2812*4bdc9457SAndroid Build Coastguard Worker 2813*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,c_eq_16)2814*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, c_eq_16) { 2815*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2816*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2817*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2818*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2819*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2820*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2821*4bdc9457SAndroid Build Coastguard Worker } 2822*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,c_div_16)2823*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, c_div_16) { 2824*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2825*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2826*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2827*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2828*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2829*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2830*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2831*4bdc9457SAndroid Build Coastguard Worker } 2832*4bdc9457SAndroid Build Coastguard Worker } 2833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,c_div_16_with_qmin)2834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, c_div_16_with_qmin) { 2835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2836*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2837*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2838*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2839*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2840*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2841*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2842*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2843*4bdc9457SAndroid Build Coastguard Worker } 2844*4bdc9457SAndroid Build Coastguard Worker } 2845*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,c_div_16_with_qmax)2846*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, c_div_16_with_qmax) { 2847*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2848*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2849*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2850*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2851*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2852*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2853*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2854*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2855*4bdc9457SAndroid Build Coastguard Worker } 2856*4bdc9457SAndroid Build Coastguard Worker } 2857*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,c_lt_16)2858*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, c_lt_16) { 2859*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2860*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 2861*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2862*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2863*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2864*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2865*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2866*4bdc9457SAndroid Build Coastguard Worker } 2867*4bdc9457SAndroid Build Coastguard Worker } 2868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,c_gt_16)2869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, c_gt_16) { 2870*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2871*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2872*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2873*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2874*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2875*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2877*4bdc9457SAndroid Build Coastguard Worker } 2878*4bdc9457SAndroid Build Coastguard Worker } 2879*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,c_gt_16_with_qmin)2880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, c_gt_16_with_qmin) { 2881*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2882*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2883*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2884*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2885*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2886*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2887*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2888*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2889*4bdc9457SAndroid Build Coastguard Worker } 2890*4bdc9457SAndroid Build Coastguard Worker } 2891*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,c_gt_16_with_qmax)2892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, c_gt_16_with_qmax) { 2893*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2894*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 2895*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2896*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2897*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2898*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2899*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2900*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2901*4bdc9457SAndroid Build Coastguard Worker } 2902*4bdc9457SAndroid Build Coastguard Worker } 2903*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,multipixel)2904*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, multipixel) { 2905*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2906*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2907*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2908*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2909*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2910*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2911*4bdc9457SAndroid Build Coastguard Worker .width(3) 2912*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2913*4bdc9457SAndroid Build Coastguard Worker } 2914*4bdc9457SAndroid Build Coastguard Worker } 2915*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,multipixel_with_step)2916*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, multipixel_with_step) { 2917*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2918*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2919*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 2920*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2921*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2922*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2923*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2924*4bdc9457SAndroid Build Coastguard Worker .width(3) 2925*4bdc9457SAndroid Build Coastguard Worker .step(step) 2926*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2927*4bdc9457SAndroid Build Coastguard Worker } 2928*4bdc9457SAndroid Build Coastguard Worker } 2929*4bdc9457SAndroid Build Coastguard Worker } 2930*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,multipixel_with_output_stride)2931*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 2932*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2933*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2934*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2935*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2936*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2937*4bdc9457SAndroid Build Coastguard Worker .channels(16) 2938*4bdc9457SAndroid Build Coastguard Worker .width(5) 2939*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 2940*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2941*4bdc9457SAndroid Build Coastguard Worker } 2942*4bdc9457SAndroid Build Coastguard Worker } 2943*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,multipixel_with_qmin)2944*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 2945*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2946*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2947*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2948*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2949*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2950*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2951*4bdc9457SAndroid Build Coastguard Worker .width(3) 2952*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2953*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2954*4bdc9457SAndroid Build Coastguard Worker } 2955*4bdc9457SAndroid Build Coastguard Worker } 2956*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,multipixel_with_qmax)2957*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 2958*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2959*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 2960*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2961*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2962*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2963*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2964*4bdc9457SAndroid Build Coastguard Worker .width(3) 2965*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2966*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2967*4bdc9457SAndroid Build Coastguard Worker } 2968*4bdc9457SAndroid Build Coastguard Worker } 2969*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,input_offset)2970*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, input_offset) { 2971*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2972*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2973*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2974*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2975*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2976*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2977*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2978*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2979*4bdc9457SAndroid Build Coastguard Worker } 2980*4bdc9457SAndroid Build Coastguard Worker } 2981*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2,zero)2982*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__NEONFP16ARITH_ACC2, zero) { 2983*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2984*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 2985*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 2986*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 2987*4bdc9457SAndroid Build Coastguard Worker .cr(16) 2988*4bdc9457SAndroid Build Coastguard Worker .kr(25) 2989*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 2990*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 2991*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 2992*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 2993*4bdc9457SAndroid Build Coastguard Worker } 2994*4bdc9457SAndroid Build Coastguard Worker } 2995*4bdc9457SAndroid Build Coastguard Worker } 2996*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 2997*4bdc9457SAndroid Build Coastguard Worker 2998*4bdc9457SAndroid Build Coastguard Worker 2999*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,c_eq_32)3000*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, c_eq_32) { 3001*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3002*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3003*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3004*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3005*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3006*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3007*4bdc9457SAndroid Build Coastguard Worker } 3008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,c_div_32)3009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, c_div_32) { 3010*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3011*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3012*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3013*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3014*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3015*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3016*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3017*4bdc9457SAndroid Build Coastguard Worker } 3018*4bdc9457SAndroid Build Coastguard Worker } 3019*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,c_div_32_with_qmin)3020*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, c_div_32_with_qmin) { 3021*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3022*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3023*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3024*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3025*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3026*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3027*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3028*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3029*4bdc9457SAndroid Build Coastguard Worker } 3030*4bdc9457SAndroid Build Coastguard Worker } 3031*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,c_div_32_with_qmax)3032*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, c_div_32_with_qmax) { 3033*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3034*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3035*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3036*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3037*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3038*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3039*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3040*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3041*4bdc9457SAndroid Build Coastguard Worker } 3042*4bdc9457SAndroid Build Coastguard Worker } 3043*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,c_lt_32)3044*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, c_lt_32) { 3045*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3046*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 3047*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3048*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3049*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3050*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3051*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3052*4bdc9457SAndroid Build Coastguard Worker } 3053*4bdc9457SAndroid Build Coastguard Worker } 3054*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,c_gt_32)3055*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, c_gt_32) { 3056*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3057*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3058*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3059*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3060*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3061*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3063*4bdc9457SAndroid Build Coastguard Worker } 3064*4bdc9457SAndroid Build Coastguard Worker } 3065*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,c_gt_32_with_qmin)3066*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, c_gt_32_with_qmin) { 3067*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3068*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3069*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3070*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3071*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3072*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3073*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3074*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3075*4bdc9457SAndroid Build Coastguard Worker } 3076*4bdc9457SAndroid Build Coastguard Worker } 3077*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,c_gt_32_with_qmax)3078*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, c_gt_32_with_qmax) { 3079*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3080*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3081*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3082*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3083*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3084*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3085*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3086*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3087*4bdc9457SAndroid Build Coastguard Worker } 3088*4bdc9457SAndroid Build Coastguard Worker } 3089*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,multipixel)3090*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, multipixel) { 3091*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3092*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3093*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3094*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3095*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3096*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3097*4bdc9457SAndroid Build Coastguard Worker .width(3) 3098*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3099*4bdc9457SAndroid Build Coastguard Worker } 3100*4bdc9457SAndroid Build Coastguard Worker } 3101*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,multipixel_with_step)3102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, multipixel_with_step) { 3103*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3104*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3105*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 3106*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3107*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3108*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3109*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3110*4bdc9457SAndroid Build Coastguard Worker .width(3) 3111*4bdc9457SAndroid Build Coastguard Worker .step(step) 3112*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3113*4bdc9457SAndroid Build Coastguard Worker } 3114*4bdc9457SAndroid Build Coastguard Worker } 3115*4bdc9457SAndroid Build Coastguard Worker } 3116*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,multipixel_with_output_stride)3117*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, multipixel_with_output_stride) { 3118*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3119*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3120*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3121*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3122*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3123*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3124*4bdc9457SAndroid Build Coastguard Worker .width(5) 3125*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 3126*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3127*4bdc9457SAndroid Build Coastguard Worker } 3128*4bdc9457SAndroid Build Coastguard Worker } 3129*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,multipixel_with_qmin)3130*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, multipixel_with_qmin) { 3131*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3132*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3133*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3134*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3135*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3136*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3137*4bdc9457SAndroid Build Coastguard Worker .width(3) 3138*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3139*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3140*4bdc9457SAndroid Build Coastguard Worker } 3141*4bdc9457SAndroid Build Coastguard Worker } 3142*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,multipixel_with_qmax)3143*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, multipixel_with_qmax) { 3144*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3145*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3146*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3147*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3148*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3149*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3150*4bdc9457SAndroid Build Coastguard Worker .width(3) 3151*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3152*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3153*4bdc9457SAndroid Build Coastguard Worker } 3154*4bdc9457SAndroid Build Coastguard Worker } 3155*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,input_offset)3156*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, input_offset) { 3157*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3158*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3159*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3160*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3161*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3162*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3163*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3164*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3165*4bdc9457SAndroid Build Coastguard Worker } 3166*4bdc9457SAndroid Build Coastguard Worker } 3167*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH,zero)3168*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH, zero) { 3169*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3170*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 3171*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3172*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3173*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3174*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3175*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3176*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3177*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 3178*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith, xnn_init_f16_minmax_neon_params); 3179*4bdc9457SAndroid Build Coastguard Worker } 3180*4bdc9457SAndroid Build Coastguard Worker } 3181*4bdc9457SAndroid Build Coastguard Worker } 3182*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 3183*4bdc9457SAndroid Build Coastguard Worker 3184*4bdc9457SAndroid Build Coastguard Worker 3185*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,c_eq_32)3186*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, c_eq_32) { 3187*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3188*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3189*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3190*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3191*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3192*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3193*4bdc9457SAndroid Build Coastguard Worker } 3194*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,c_div_32)3195*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, c_div_32) { 3196*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3197*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3198*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3199*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3200*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3201*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3203*4bdc9457SAndroid Build Coastguard Worker } 3204*4bdc9457SAndroid Build Coastguard Worker } 3205*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,c_div_32_with_qmin)3206*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, c_div_32_with_qmin) { 3207*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3208*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3209*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3210*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3211*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3212*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3213*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3214*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3215*4bdc9457SAndroid Build Coastguard Worker } 3216*4bdc9457SAndroid Build Coastguard Worker } 3217*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,c_div_32_with_qmax)3218*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, c_div_32_with_qmax) { 3219*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3220*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3221*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3222*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3223*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3224*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3225*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3226*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3227*4bdc9457SAndroid Build Coastguard Worker } 3228*4bdc9457SAndroid Build Coastguard Worker } 3229*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,c_lt_32)3230*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, c_lt_32) { 3231*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3232*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 3233*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3234*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3235*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3236*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3237*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3238*4bdc9457SAndroid Build Coastguard Worker } 3239*4bdc9457SAndroid Build Coastguard Worker } 3240*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,c_gt_32)3241*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, c_gt_32) { 3242*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3243*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3244*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3245*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3246*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3247*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3249*4bdc9457SAndroid Build Coastguard Worker } 3250*4bdc9457SAndroid Build Coastguard Worker } 3251*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,c_gt_32_with_qmin)3252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, c_gt_32_with_qmin) { 3253*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3254*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3255*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3256*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3257*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3258*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3259*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3260*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3261*4bdc9457SAndroid Build Coastguard Worker } 3262*4bdc9457SAndroid Build Coastguard Worker } 3263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,c_gt_32_with_qmax)3264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, c_gt_32_with_qmax) { 3265*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3266*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3267*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3268*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3269*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3270*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3271*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3272*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3273*4bdc9457SAndroid Build Coastguard Worker } 3274*4bdc9457SAndroid Build Coastguard Worker } 3275*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,multipixel)3276*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, multipixel) { 3277*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3278*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3279*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3280*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3281*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3282*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3283*4bdc9457SAndroid Build Coastguard Worker .width(3) 3284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3285*4bdc9457SAndroid Build Coastguard Worker } 3286*4bdc9457SAndroid Build Coastguard Worker } 3287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,multipixel_with_step)3288*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, multipixel_with_step) { 3289*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3290*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3291*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 3292*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3293*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3294*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3295*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3296*4bdc9457SAndroid Build Coastguard Worker .width(3) 3297*4bdc9457SAndroid Build Coastguard Worker .step(step) 3298*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3299*4bdc9457SAndroid Build Coastguard Worker } 3300*4bdc9457SAndroid Build Coastguard Worker } 3301*4bdc9457SAndroid Build Coastguard Worker } 3302*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,multipixel_with_output_stride)3303*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 3304*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3305*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3306*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3307*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3308*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3309*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3310*4bdc9457SAndroid Build Coastguard Worker .width(5) 3311*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 3312*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3313*4bdc9457SAndroid Build Coastguard Worker } 3314*4bdc9457SAndroid Build Coastguard Worker } 3315*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,multipixel_with_qmin)3316*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 3317*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3318*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3319*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3320*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3321*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3322*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3323*4bdc9457SAndroid Build Coastguard Worker .width(3) 3324*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3325*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3326*4bdc9457SAndroid Build Coastguard Worker } 3327*4bdc9457SAndroid Build Coastguard Worker } 3328*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,multipixel_with_qmax)3329*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 3330*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3331*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3332*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3333*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3334*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3335*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3336*4bdc9457SAndroid Build Coastguard Worker .width(3) 3337*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3338*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3339*4bdc9457SAndroid Build Coastguard Worker } 3340*4bdc9457SAndroid Build Coastguard Worker } 3341*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,input_offset)3342*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, input_offset) { 3343*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3344*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3345*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3346*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3347*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3348*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3349*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3350*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3351*4bdc9457SAndroid Build Coastguard Worker } 3352*4bdc9457SAndroid Build Coastguard Worker } 3353*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2,zero)3354*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__NEONFP16ARITH_ACC2, zero) { 3355*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3356*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 3357*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3358*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3359*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3360*4bdc9457SAndroid Build Coastguard Worker .kr(3) 3361*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3362*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3363*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 3364*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3365*4bdc9457SAndroid Build Coastguard Worker } 3366*4bdc9457SAndroid Build Coastguard Worker } 3367*4bdc9457SAndroid Build Coastguard Worker } 3368*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 3369*4bdc9457SAndroid Build Coastguard Worker 3370*4bdc9457SAndroid Build Coastguard Worker 3371*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,c_eq_32)3372*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, c_eq_32) { 3373*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3374*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3375*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3376*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3377*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3378*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3379*4bdc9457SAndroid Build Coastguard Worker } 3380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,c_div_32)3381*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, c_div_32) { 3382*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3383*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3384*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3385*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3386*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3387*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3388*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3389*4bdc9457SAndroid Build Coastguard Worker } 3390*4bdc9457SAndroid Build Coastguard Worker } 3391*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,c_div_32_with_qmin)3392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, c_div_32_with_qmin) { 3393*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3394*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3395*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3396*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3397*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3398*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3399*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3400*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3401*4bdc9457SAndroid Build Coastguard Worker } 3402*4bdc9457SAndroid Build Coastguard Worker } 3403*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,c_div_32_with_qmax)3404*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, c_div_32_with_qmax) { 3405*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3406*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3407*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3408*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3409*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3410*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3411*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3413*4bdc9457SAndroid Build Coastguard Worker } 3414*4bdc9457SAndroid Build Coastguard Worker } 3415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,c_lt_32)3416*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, c_lt_32) { 3417*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3418*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 3419*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3420*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3421*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3422*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3423*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3424*4bdc9457SAndroid Build Coastguard Worker } 3425*4bdc9457SAndroid Build Coastguard Worker } 3426*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,c_gt_32)3427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, c_gt_32) { 3428*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3429*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3430*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3431*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3432*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3433*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3434*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3435*4bdc9457SAndroid Build Coastguard Worker } 3436*4bdc9457SAndroid Build Coastguard Worker } 3437*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,c_gt_32_with_qmin)3438*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, c_gt_32_with_qmin) { 3439*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3440*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3441*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3442*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3443*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3444*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3445*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3446*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3447*4bdc9457SAndroid Build Coastguard Worker } 3448*4bdc9457SAndroid Build Coastguard Worker } 3449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,c_gt_32_with_qmax)3450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, c_gt_32_with_qmax) { 3451*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3452*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3453*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3454*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3455*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3456*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3457*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3458*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3459*4bdc9457SAndroid Build Coastguard Worker } 3460*4bdc9457SAndroid Build Coastguard Worker } 3461*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,multipixel)3462*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, multipixel) { 3463*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3464*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3465*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3466*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3467*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3468*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3469*4bdc9457SAndroid Build Coastguard Worker .width(3) 3470*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3471*4bdc9457SAndroid Build Coastguard Worker } 3472*4bdc9457SAndroid Build Coastguard Worker } 3473*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,multipixel_with_step)3474*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, multipixel_with_step) { 3475*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3476*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3477*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 3478*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3479*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3480*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3481*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3482*4bdc9457SAndroid Build Coastguard Worker .width(3) 3483*4bdc9457SAndroid Build Coastguard Worker .step(step) 3484*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3485*4bdc9457SAndroid Build Coastguard Worker } 3486*4bdc9457SAndroid Build Coastguard Worker } 3487*4bdc9457SAndroid Build Coastguard Worker } 3488*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,multipixel_with_output_stride)3489*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, multipixel_with_output_stride) { 3490*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3491*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3492*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3493*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3494*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3495*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3496*4bdc9457SAndroid Build Coastguard Worker .width(5) 3497*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 3498*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3499*4bdc9457SAndroid Build Coastguard Worker } 3500*4bdc9457SAndroid Build Coastguard Worker } 3501*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,multipixel_with_qmin)3502*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, multipixel_with_qmin) { 3503*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3504*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3505*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3506*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3507*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3508*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3509*4bdc9457SAndroid Build Coastguard Worker .width(3) 3510*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3511*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3512*4bdc9457SAndroid Build Coastguard Worker } 3513*4bdc9457SAndroid Build Coastguard Worker } 3514*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,multipixel_with_qmax)3515*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, multipixel_with_qmax) { 3516*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3517*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3518*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3519*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3520*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3521*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3522*4bdc9457SAndroid Build Coastguard Worker .width(3) 3523*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3524*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3525*4bdc9457SAndroid Build Coastguard Worker } 3526*4bdc9457SAndroid Build Coastguard Worker } 3527*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,input_offset)3528*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, input_offset) { 3529*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3530*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3531*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3532*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3533*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3534*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3535*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3536*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3537*4bdc9457SAndroid Build Coastguard Worker } 3538*4bdc9457SAndroid Build Coastguard Worker } 3539*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH,zero)3540*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH, zero) { 3541*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3542*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 3543*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3544*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3545*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3546*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3547*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3548*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3549*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 3550*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith, xnn_init_f16_minmax_neon_params); 3551*4bdc9457SAndroid Build Coastguard Worker } 3552*4bdc9457SAndroid Build Coastguard Worker } 3553*4bdc9457SAndroid Build Coastguard Worker } 3554*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 3555*4bdc9457SAndroid Build Coastguard Worker 3556*4bdc9457SAndroid Build Coastguard Worker 3557*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,c_eq_32)3558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, c_eq_32) { 3559*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3560*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3561*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3562*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3563*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3564*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3565*4bdc9457SAndroid Build Coastguard Worker } 3566*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,c_div_32)3567*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, c_div_32) { 3568*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3569*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3570*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3571*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3572*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3573*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3575*4bdc9457SAndroid Build Coastguard Worker } 3576*4bdc9457SAndroid Build Coastguard Worker } 3577*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,c_div_32_with_qmin)3578*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, c_div_32_with_qmin) { 3579*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3580*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3581*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3582*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3583*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3584*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3585*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3586*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3587*4bdc9457SAndroid Build Coastguard Worker } 3588*4bdc9457SAndroid Build Coastguard Worker } 3589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,c_div_32_with_qmax)3590*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, c_div_32_with_qmax) { 3591*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3592*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3593*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3594*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3595*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3596*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3597*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3598*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3599*4bdc9457SAndroid Build Coastguard Worker } 3600*4bdc9457SAndroid Build Coastguard Worker } 3601*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,c_lt_32)3602*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, c_lt_32) { 3603*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3604*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 3605*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3606*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3607*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3608*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3609*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3610*4bdc9457SAndroid Build Coastguard Worker } 3611*4bdc9457SAndroid Build Coastguard Worker } 3612*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,c_gt_32)3613*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, c_gt_32) { 3614*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3615*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3616*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3617*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3618*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3619*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3621*4bdc9457SAndroid Build Coastguard Worker } 3622*4bdc9457SAndroid Build Coastguard Worker } 3623*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,c_gt_32_with_qmin)3624*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, c_gt_32_with_qmin) { 3625*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3626*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3627*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3628*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3629*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3630*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3631*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3632*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3633*4bdc9457SAndroid Build Coastguard Worker } 3634*4bdc9457SAndroid Build Coastguard Worker } 3635*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,c_gt_32_with_qmax)3636*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, c_gt_32_with_qmax) { 3637*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3638*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3639*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3640*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3641*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3642*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3643*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3644*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3645*4bdc9457SAndroid Build Coastguard Worker } 3646*4bdc9457SAndroid Build Coastguard Worker } 3647*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,multipixel)3648*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, multipixel) { 3649*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3650*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3651*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3652*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3653*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3654*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3655*4bdc9457SAndroid Build Coastguard Worker .width(3) 3656*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3657*4bdc9457SAndroid Build Coastguard Worker } 3658*4bdc9457SAndroid Build Coastguard Worker } 3659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,multipixel_with_step)3660*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, multipixel_with_step) { 3661*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3662*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3663*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 3664*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3665*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3666*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3667*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3668*4bdc9457SAndroid Build Coastguard Worker .width(3) 3669*4bdc9457SAndroid Build Coastguard Worker .step(step) 3670*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3671*4bdc9457SAndroid Build Coastguard Worker } 3672*4bdc9457SAndroid Build Coastguard Worker } 3673*4bdc9457SAndroid Build Coastguard Worker } 3674*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,multipixel_with_output_stride)3675*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 3676*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3677*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3678*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3679*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3680*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3681*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3682*4bdc9457SAndroid Build Coastguard Worker .width(5) 3683*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 3684*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3685*4bdc9457SAndroid Build Coastguard Worker } 3686*4bdc9457SAndroid Build Coastguard Worker } 3687*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,multipixel_with_qmin)3688*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 3689*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3690*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3691*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3692*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3693*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3694*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3695*4bdc9457SAndroid Build Coastguard Worker .width(3) 3696*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3697*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3698*4bdc9457SAndroid Build Coastguard Worker } 3699*4bdc9457SAndroid Build Coastguard Worker } 3700*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,multipixel_with_qmax)3701*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 3702*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3703*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3704*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3705*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3706*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3707*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3708*4bdc9457SAndroid Build Coastguard Worker .width(3) 3709*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3710*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3711*4bdc9457SAndroid Build Coastguard Worker } 3712*4bdc9457SAndroid Build Coastguard Worker } 3713*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,input_offset)3714*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, input_offset) { 3715*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3716*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3717*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3718*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3719*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3720*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3721*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3722*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3723*4bdc9457SAndroid Build Coastguard Worker } 3724*4bdc9457SAndroid Build Coastguard Worker } 3725*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2,zero)3726*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__NEONFP16ARITH_ACC2, zero) { 3727*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3728*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 3729*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3730*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3731*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3732*4bdc9457SAndroid Build Coastguard Worker .kr(4) 3733*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3734*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3735*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 3736*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3737*4bdc9457SAndroid Build Coastguard Worker } 3738*4bdc9457SAndroid Build Coastguard Worker } 3739*4bdc9457SAndroid Build Coastguard Worker } 3740*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 3741*4bdc9457SAndroid Build Coastguard Worker 3742*4bdc9457SAndroid Build Coastguard Worker 3743*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,c_eq_32)3744*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, c_eq_32) { 3745*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3746*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3747*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3748*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3749*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3750*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3751*4bdc9457SAndroid Build Coastguard Worker } 3752*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,c_div_32)3753*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, c_div_32) { 3754*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3755*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3756*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3757*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3758*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3759*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3760*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3761*4bdc9457SAndroid Build Coastguard Worker } 3762*4bdc9457SAndroid Build Coastguard Worker } 3763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,c_div_32_with_qmin)3764*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, c_div_32_with_qmin) { 3765*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3766*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3767*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3768*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3769*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3770*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3771*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3772*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3773*4bdc9457SAndroid Build Coastguard Worker } 3774*4bdc9457SAndroid Build Coastguard Worker } 3775*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,c_div_32_with_qmax)3776*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, c_div_32_with_qmax) { 3777*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3778*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3779*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3780*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3781*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3782*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3783*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3784*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3785*4bdc9457SAndroid Build Coastguard Worker } 3786*4bdc9457SAndroid Build Coastguard Worker } 3787*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,c_lt_32)3788*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, c_lt_32) { 3789*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3790*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 3791*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3792*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3793*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3794*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3795*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3796*4bdc9457SAndroid Build Coastguard Worker } 3797*4bdc9457SAndroid Build Coastguard Worker } 3798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,c_gt_32)3799*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, c_gt_32) { 3800*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3801*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3802*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3803*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3804*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3805*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3806*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3807*4bdc9457SAndroid Build Coastguard Worker } 3808*4bdc9457SAndroid Build Coastguard Worker } 3809*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,c_gt_32_with_qmin)3810*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, c_gt_32_with_qmin) { 3811*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3812*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3813*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3814*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3815*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3816*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3817*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3818*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3819*4bdc9457SAndroid Build Coastguard Worker } 3820*4bdc9457SAndroid Build Coastguard Worker } 3821*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,c_gt_32_with_qmax)3822*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, c_gt_32_with_qmax) { 3823*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3824*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3825*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3826*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3827*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3828*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3829*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3830*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3831*4bdc9457SAndroid Build Coastguard Worker } 3832*4bdc9457SAndroid Build Coastguard Worker } 3833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,multipixel)3834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, multipixel) { 3835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3836*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3837*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3838*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3839*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3840*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3841*4bdc9457SAndroid Build Coastguard Worker .width(3) 3842*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3843*4bdc9457SAndroid Build Coastguard Worker } 3844*4bdc9457SAndroid Build Coastguard Worker } 3845*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,multipixel_with_step)3846*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, multipixel_with_step) { 3847*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3848*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3849*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 3850*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3851*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3852*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3853*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3854*4bdc9457SAndroid Build Coastguard Worker .width(3) 3855*4bdc9457SAndroid Build Coastguard Worker .step(step) 3856*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3857*4bdc9457SAndroid Build Coastguard Worker } 3858*4bdc9457SAndroid Build Coastguard Worker } 3859*4bdc9457SAndroid Build Coastguard Worker } 3860*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,multipixel_with_output_stride)3861*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, multipixel_with_output_stride) { 3862*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3863*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3864*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3865*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3866*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3867*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3868*4bdc9457SAndroid Build Coastguard Worker .width(5) 3869*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 3870*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3871*4bdc9457SAndroid Build Coastguard Worker } 3872*4bdc9457SAndroid Build Coastguard Worker } 3873*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,multipixel_with_qmin)3874*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, multipixel_with_qmin) { 3875*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3876*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3877*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3878*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3879*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3880*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3881*4bdc9457SAndroid Build Coastguard Worker .width(3) 3882*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3883*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3884*4bdc9457SAndroid Build Coastguard Worker } 3885*4bdc9457SAndroid Build Coastguard Worker } 3886*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,multipixel_with_qmax)3887*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, multipixel_with_qmax) { 3888*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3889*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 3890*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3891*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3892*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3893*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3894*4bdc9457SAndroid Build Coastguard Worker .width(3) 3895*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3896*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3897*4bdc9457SAndroid Build Coastguard Worker } 3898*4bdc9457SAndroid Build Coastguard Worker } 3899*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,input_offset)3900*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, input_offset) { 3901*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3902*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3903*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3904*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3905*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3906*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3907*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3908*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3909*4bdc9457SAndroid Build Coastguard Worker } 3910*4bdc9457SAndroid Build Coastguard Worker } 3911*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH,zero)3912*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH, zero) { 3913*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3914*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 3915*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3916*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3917*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3918*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3919*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3920*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 3921*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 3922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith, xnn_init_f16_minmax_neon_params); 3923*4bdc9457SAndroid Build Coastguard Worker } 3924*4bdc9457SAndroid Build Coastguard Worker } 3925*4bdc9457SAndroid Build Coastguard Worker } 3926*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 3927*4bdc9457SAndroid Build Coastguard Worker 3928*4bdc9457SAndroid Build Coastguard Worker 3929*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,c_eq_32)3930*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, c_eq_32) { 3931*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3932*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3933*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3934*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3935*4bdc9457SAndroid Build Coastguard Worker .channels(32) 3936*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3937*4bdc9457SAndroid Build Coastguard Worker } 3938*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,c_div_32)3939*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, c_div_32) { 3940*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3941*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3942*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3943*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3944*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3945*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3946*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3947*4bdc9457SAndroid Build Coastguard Worker } 3948*4bdc9457SAndroid Build Coastguard Worker } 3949*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,c_div_32_with_qmin)3950*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, c_div_32_with_qmin) { 3951*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3952*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3953*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3954*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3955*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3956*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3957*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3958*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3959*4bdc9457SAndroid Build Coastguard Worker } 3960*4bdc9457SAndroid Build Coastguard Worker } 3961*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,c_div_32_with_qmax)3962*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, c_div_32_with_qmax) { 3963*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3964*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 3965*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3966*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3967*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3968*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3969*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3970*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3971*4bdc9457SAndroid Build Coastguard Worker } 3972*4bdc9457SAndroid Build Coastguard Worker } 3973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,c_lt_32)3974*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, c_lt_32) { 3975*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3976*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 3977*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3978*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3979*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3980*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3981*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3982*4bdc9457SAndroid Build Coastguard Worker } 3983*4bdc9457SAndroid Build Coastguard Worker } 3984*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,c_gt_32)3985*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, c_gt_32) { 3986*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3987*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3988*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 3989*4bdc9457SAndroid Build Coastguard Worker .cr(32) 3990*4bdc9457SAndroid Build Coastguard Worker .kr(9) 3991*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 3992*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 3993*4bdc9457SAndroid Build Coastguard Worker } 3994*4bdc9457SAndroid Build Coastguard Worker } 3995*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,c_gt_32_with_qmin)3996*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, c_gt_32_with_qmin) { 3997*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3998*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 3999*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4000*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4001*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4002*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4003*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4004*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4005*4bdc9457SAndroid Build Coastguard Worker } 4006*4bdc9457SAndroid Build Coastguard Worker } 4007*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,c_gt_32_with_qmax)4008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, c_gt_32_with_qmax) { 4009*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4010*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 4011*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4012*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4013*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4014*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4015*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4016*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4017*4bdc9457SAndroid Build Coastguard Worker } 4018*4bdc9457SAndroid Build Coastguard Worker } 4019*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,multipixel)4020*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, multipixel) { 4021*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4022*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4023*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4024*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4025*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4026*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4027*4bdc9457SAndroid Build Coastguard Worker .width(3) 4028*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4029*4bdc9457SAndroid Build Coastguard Worker } 4030*4bdc9457SAndroid Build Coastguard Worker } 4031*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,multipixel_with_step)4032*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, multipixel_with_step) { 4033*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4034*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4035*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 4036*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4037*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4038*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4039*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4040*4bdc9457SAndroid Build Coastguard Worker .width(3) 4041*4bdc9457SAndroid Build Coastguard Worker .step(step) 4042*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4043*4bdc9457SAndroid Build Coastguard Worker } 4044*4bdc9457SAndroid Build Coastguard Worker } 4045*4bdc9457SAndroid Build Coastguard Worker } 4046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,multipixel_with_output_stride)4047*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 4048*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4049*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4050*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4051*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4052*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4053*4bdc9457SAndroid Build Coastguard Worker .channels(32) 4054*4bdc9457SAndroid Build Coastguard Worker .width(5) 4055*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 4056*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4057*4bdc9457SAndroid Build Coastguard Worker } 4058*4bdc9457SAndroid Build Coastguard Worker } 4059*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,multipixel_with_qmin)4060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 4061*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4062*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4063*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4064*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4065*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4066*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4067*4bdc9457SAndroid Build Coastguard Worker .width(3) 4068*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4069*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4070*4bdc9457SAndroid Build Coastguard Worker } 4071*4bdc9457SAndroid Build Coastguard Worker } 4072*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,multipixel_with_qmax)4073*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 4074*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4075*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4076*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4077*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4078*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4079*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4080*4bdc9457SAndroid Build Coastguard Worker .width(3) 4081*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4082*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4083*4bdc9457SAndroid Build Coastguard Worker } 4084*4bdc9457SAndroid Build Coastguard Worker } 4085*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,input_offset)4086*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, input_offset) { 4087*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4088*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4089*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4090*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4091*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4092*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4093*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 4094*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4095*4bdc9457SAndroid Build Coastguard Worker } 4096*4bdc9457SAndroid Build Coastguard Worker } 4097*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2,zero)4098*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__NEONFP16ARITH_ACC2, zero) { 4099*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4100*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 4101*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4102*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4103*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4104*4bdc9457SAndroid Build Coastguard Worker .kr(9) 4105*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4106*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 4107*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 4108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4109*4bdc9457SAndroid Build Coastguard Worker } 4110*4bdc9457SAndroid Build Coastguard Worker } 4111*4bdc9457SAndroid Build Coastguard Worker } 4112*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 4113*4bdc9457SAndroid Build Coastguard Worker 4114*4bdc9457SAndroid Build Coastguard Worker 4115*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,c_eq_32)4116*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, c_eq_32) { 4117*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4118*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4119*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4120*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4121*4bdc9457SAndroid Build Coastguard Worker .channels(32) 4122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4123*4bdc9457SAndroid Build Coastguard Worker } 4124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,c_div_32)4125*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, c_div_32) { 4126*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4127*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4128*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4129*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4130*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4131*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4133*4bdc9457SAndroid Build Coastguard Worker } 4134*4bdc9457SAndroid Build Coastguard Worker } 4135*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,c_div_32_with_qmin)4136*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, c_div_32_with_qmin) { 4137*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4138*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4139*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4140*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4141*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4142*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4143*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4144*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4145*4bdc9457SAndroid Build Coastguard Worker } 4146*4bdc9457SAndroid Build Coastguard Worker } 4147*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,c_div_32_with_qmax)4148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, c_div_32_with_qmax) { 4149*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4150*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4151*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4152*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4153*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4154*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4155*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4157*4bdc9457SAndroid Build Coastguard Worker } 4158*4bdc9457SAndroid Build Coastguard Worker } 4159*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,c_lt_32)4160*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, c_lt_32) { 4161*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4162*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 4163*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4164*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4165*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4166*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4167*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4168*4bdc9457SAndroid Build Coastguard Worker } 4169*4bdc9457SAndroid Build Coastguard Worker } 4170*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,c_gt_32)4171*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, c_gt_32) { 4172*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4173*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 4174*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4175*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4176*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4177*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4178*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4179*4bdc9457SAndroid Build Coastguard Worker } 4180*4bdc9457SAndroid Build Coastguard Worker } 4181*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,c_gt_32_with_qmin)4182*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, c_gt_32_with_qmin) { 4183*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4184*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 4185*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4186*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4187*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4188*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4189*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4190*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4191*4bdc9457SAndroid Build Coastguard Worker } 4192*4bdc9457SAndroid Build Coastguard Worker } 4193*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,c_gt_32_with_qmax)4194*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, c_gt_32_with_qmax) { 4195*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4196*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 4197*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4198*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4199*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4200*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4201*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4203*4bdc9457SAndroid Build Coastguard Worker } 4204*4bdc9457SAndroid Build Coastguard Worker } 4205*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,multipixel)4206*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, multipixel) { 4207*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4208*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4209*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4210*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4211*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4212*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4213*4bdc9457SAndroid Build Coastguard Worker .width(3) 4214*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4215*4bdc9457SAndroid Build Coastguard Worker } 4216*4bdc9457SAndroid Build Coastguard Worker } 4217*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,multipixel_with_step)4218*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, multipixel_with_step) { 4219*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4220*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4221*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 4222*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4223*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4224*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4225*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4226*4bdc9457SAndroid Build Coastguard Worker .width(3) 4227*4bdc9457SAndroid Build Coastguard Worker .step(step) 4228*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4229*4bdc9457SAndroid Build Coastguard Worker } 4230*4bdc9457SAndroid Build Coastguard Worker } 4231*4bdc9457SAndroid Build Coastguard Worker } 4232*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,multipixel_with_output_stride)4233*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, multipixel_with_output_stride) { 4234*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4235*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4236*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4237*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4238*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4239*4bdc9457SAndroid Build Coastguard Worker .channels(32) 4240*4bdc9457SAndroid Build Coastguard Worker .width(5) 4241*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 4242*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4243*4bdc9457SAndroid Build Coastguard Worker } 4244*4bdc9457SAndroid Build Coastguard Worker } 4245*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,multipixel_with_qmin)4246*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, multipixel_with_qmin) { 4247*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4248*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4249*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4250*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4251*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4252*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4253*4bdc9457SAndroid Build Coastguard Worker .width(3) 4254*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4255*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4256*4bdc9457SAndroid Build Coastguard Worker } 4257*4bdc9457SAndroid Build Coastguard Worker } 4258*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,multipixel_with_qmax)4259*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, multipixel_with_qmax) { 4260*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4261*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4262*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4263*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4264*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4265*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4266*4bdc9457SAndroid Build Coastguard Worker .width(3) 4267*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4268*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4269*4bdc9457SAndroid Build Coastguard Worker } 4270*4bdc9457SAndroid Build Coastguard Worker } 4271*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,input_offset)4272*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, input_offset) { 4273*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4274*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4275*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4276*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4277*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4278*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4279*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 4280*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4281*4bdc9457SAndroid Build Coastguard Worker } 4282*4bdc9457SAndroid Build Coastguard Worker } 4283*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH,zero)4284*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH, zero) { 4285*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4286*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 4287*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4288*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4289*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4290*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4291*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4292*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 4293*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 4294*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith, xnn_init_f16_minmax_neon_params); 4295*4bdc9457SAndroid Build Coastguard Worker } 4296*4bdc9457SAndroid Build Coastguard Worker } 4297*4bdc9457SAndroid Build Coastguard Worker } 4298*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 4299*4bdc9457SAndroid Build Coastguard Worker 4300*4bdc9457SAndroid Build Coastguard Worker 4301*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,c_eq_32)4302*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, c_eq_32) { 4303*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4304*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4305*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4306*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4307*4bdc9457SAndroid Build Coastguard Worker .channels(32) 4308*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4309*4bdc9457SAndroid Build Coastguard Worker } 4310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,c_div_32)4311*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, c_div_32) { 4312*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4313*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4314*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4315*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4316*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4317*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4319*4bdc9457SAndroid Build Coastguard Worker } 4320*4bdc9457SAndroid Build Coastguard Worker } 4321*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,c_div_32_with_qmin)4322*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, c_div_32_with_qmin) { 4323*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4324*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4325*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4326*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4327*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4328*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4329*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4330*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4331*4bdc9457SAndroid Build Coastguard Worker } 4332*4bdc9457SAndroid Build Coastguard Worker } 4333*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,c_div_32_with_qmax)4334*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, c_div_32_with_qmax) { 4335*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4336*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4337*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4338*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4339*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4340*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4341*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4342*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4343*4bdc9457SAndroid Build Coastguard Worker } 4344*4bdc9457SAndroid Build Coastguard Worker } 4345*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,c_lt_32)4346*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, c_lt_32) { 4347*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4348*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 4349*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4350*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4351*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4352*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4353*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4354*4bdc9457SAndroid Build Coastguard Worker } 4355*4bdc9457SAndroid Build Coastguard Worker } 4356*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,c_gt_32)4357*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, c_gt_32) { 4358*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4359*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 4360*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4361*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4362*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4363*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4364*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4365*4bdc9457SAndroid Build Coastguard Worker } 4366*4bdc9457SAndroid Build Coastguard Worker } 4367*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,c_gt_32_with_qmin)4368*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, c_gt_32_with_qmin) { 4369*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4370*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 4371*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4372*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4373*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4374*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4375*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4376*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4377*4bdc9457SAndroid Build Coastguard Worker } 4378*4bdc9457SAndroid Build Coastguard Worker } 4379*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,c_gt_32_with_qmax)4380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, c_gt_32_with_qmax) { 4381*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4382*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 4383*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4384*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4385*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4386*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4387*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4388*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4389*4bdc9457SAndroid Build Coastguard Worker } 4390*4bdc9457SAndroid Build Coastguard Worker } 4391*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,multipixel)4392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, multipixel) { 4393*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4394*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4395*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4396*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4397*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4398*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4399*4bdc9457SAndroid Build Coastguard Worker .width(3) 4400*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4401*4bdc9457SAndroid Build Coastguard Worker } 4402*4bdc9457SAndroid Build Coastguard Worker } 4403*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,multipixel_with_step)4404*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, multipixel_with_step) { 4405*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4406*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4407*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 4408*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4409*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4410*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4411*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4412*4bdc9457SAndroid Build Coastguard Worker .width(3) 4413*4bdc9457SAndroid Build Coastguard Worker .step(step) 4414*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4415*4bdc9457SAndroid Build Coastguard Worker } 4416*4bdc9457SAndroid Build Coastguard Worker } 4417*4bdc9457SAndroid Build Coastguard Worker } 4418*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,multipixel_with_output_stride)4419*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, multipixel_with_output_stride) { 4420*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4421*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4422*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4423*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4424*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4425*4bdc9457SAndroid Build Coastguard Worker .channels(32) 4426*4bdc9457SAndroid Build Coastguard Worker .width(5) 4427*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 4428*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4429*4bdc9457SAndroid Build Coastguard Worker } 4430*4bdc9457SAndroid Build Coastguard Worker } 4431*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,multipixel_with_qmin)4432*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, multipixel_with_qmin) { 4433*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4434*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4435*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4436*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4437*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4438*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4439*4bdc9457SAndroid Build Coastguard Worker .width(3) 4440*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4441*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4442*4bdc9457SAndroid Build Coastguard Worker } 4443*4bdc9457SAndroid Build Coastguard Worker } 4444*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,multipixel_with_qmax)4445*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, multipixel_with_qmax) { 4446*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4447*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 4448*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4449*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4450*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4451*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4452*4bdc9457SAndroid Build Coastguard Worker .width(3) 4453*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4454*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4455*4bdc9457SAndroid Build Coastguard Worker } 4456*4bdc9457SAndroid Build Coastguard Worker } 4457*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,input_offset)4458*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, input_offset) { 4459*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4460*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4461*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4462*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4463*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4464*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4465*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 4466*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4467*4bdc9457SAndroid Build Coastguard Worker } 4468*4bdc9457SAndroid Build Coastguard Worker } 4469*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2,zero)4470*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__NEONFP16ARITH_ACC2, zero) { 4471*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4472*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 4473*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 4474*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4475*4bdc9457SAndroid Build Coastguard Worker .cr(32) 4476*4bdc9457SAndroid Build Coastguard Worker .kr(25) 4477*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4478*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 4479*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 4480*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__neonfp16arith_acc2, xnn_init_f16_minmax_neon_params); 4481*4bdc9457SAndroid Build Coastguard Worker } 4482*4bdc9457SAndroid Build Coastguard Worker } 4483*4bdc9457SAndroid Build Coastguard Worker } 4484*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 4485*4bdc9457SAndroid Build Coastguard Worker 4486*4bdc9457SAndroid Build Coastguard Worker 4487*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,c_eq_8)4488*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, c_eq_8) { 4489*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4490*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4491*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4492*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4493*4bdc9457SAndroid Build Coastguard Worker .channels(8) 4494*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4495*4bdc9457SAndroid Build Coastguard Worker } 4496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,c_div_8)4497*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, c_div_8) { 4498*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4499*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4500*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4501*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4502*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4503*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4504*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4505*4bdc9457SAndroid Build Coastguard Worker } 4506*4bdc9457SAndroid Build Coastguard Worker } 4507*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,c_div_8_with_qmin)4508*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, c_div_8_with_qmin) { 4509*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4510*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4511*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4512*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4513*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4514*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4515*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4516*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4517*4bdc9457SAndroid Build Coastguard Worker } 4518*4bdc9457SAndroid Build Coastguard Worker } 4519*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,c_div_8_with_qmax)4520*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, c_div_8_with_qmax) { 4521*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4522*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4523*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4524*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4525*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4526*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4527*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4528*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4529*4bdc9457SAndroid Build Coastguard Worker } 4530*4bdc9457SAndroid Build Coastguard Worker } 4531*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,c_lt_8)4532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, c_lt_8) { 4533*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4534*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 4535*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4536*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4537*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4538*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4539*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4540*4bdc9457SAndroid Build Coastguard Worker } 4541*4bdc9457SAndroid Build Coastguard Worker } 4542*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,c_gt_8)4543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, c_gt_8) { 4544*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4545*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4546*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4547*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4548*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4549*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4550*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4551*4bdc9457SAndroid Build Coastguard Worker } 4552*4bdc9457SAndroid Build Coastguard Worker } 4553*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,c_gt_8_with_qmin)4554*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, c_gt_8_with_qmin) { 4555*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4556*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4557*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4558*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4559*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4560*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4561*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4562*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4563*4bdc9457SAndroid Build Coastguard Worker } 4564*4bdc9457SAndroid Build Coastguard Worker } 4565*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,c_gt_8_with_qmax)4566*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, c_gt_8_with_qmax) { 4567*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4568*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4569*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4570*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4571*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4572*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4573*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4575*4bdc9457SAndroid Build Coastguard Worker } 4576*4bdc9457SAndroid Build Coastguard Worker } 4577*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,multipixel)4578*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, multipixel) { 4579*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4580*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4581*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4582*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4583*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4584*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4585*4bdc9457SAndroid Build Coastguard Worker .width(3) 4586*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4587*4bdc9457SAndroid Build Coastguard Worker } 4588*4bdc9457SAndroid Build Coastguard Worker } 4589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,multipixel_with_step)4590*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, multipixel_with_step) { 4591*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4592*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4593*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 4594*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4595*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4596*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4597*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4598*4bdc9457SAndroid Build Coastguard Worker .width(3) 4599*4bdc9457SAndroid Build Coastguard Worker .step(step) 4600*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4601*4bdc9457SAndroid Build Coastguard Worker } 4602*4bdc9457SAndroid Build Coastguard Worker } 4603*4bdc9457SAndroid Build Coastguard Worker } 4604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,multipixel_with_output_stride)4605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, multipixel_with_output_stride) { 4606*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4607*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4608*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4609*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4610*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4611*4bdc9457SAndroid Build Coastguard Worker .channels(8) 4612*4bdc9457SAndroid Build Coastguard Worker .width(5) 4613*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 4614*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4615*4bdc9457SAndroid Build Coastguard Worker } 4616*4bdc9457SAndroid Build Coastguard Worker } 4617*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,multipixel_with_qmin)4618*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, multipixel_with_qmin) { 4619*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4620*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4621*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4622*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4623*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4624*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4625*4bdc9457SAndroid Build Coastguard Worker .width(3) 4626*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4627*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4628*4bdc9457SAndroid Build Coastguard Worker } 4629*4bdc9457SAndroid Build Coastguard Worker } 4630*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,multipixel_with_qmax)4631*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, multipixel_with_qmax) { 4632*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4633*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4634*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4635*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4636*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4637*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4638*4bdc9457SAndroid Build Coastguard Worker .width(3) 4639*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4640*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4641*4bdc9457SAndroid Build Coastguard Worker } 4642*4bdc9457SAndroid Build Coastguard Worker } 4643*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,input_offset)4644*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, input_offset) { 4645*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4646*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4647*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4648*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4649*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4650*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4651*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 4652*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4653*4bdc9457SAndroid Build Coastguard Worker } 4654*4bdc9457SAndroid Build Coastguard Worker } 4655*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3,zero)4656*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3, zero) { 4657*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4658*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 4659*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4660*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4661*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4662*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4663*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4664*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 4665*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 4666*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3, xnn_init_f16_minmax_avx_params); 4667*4bdc9457SAndroid Build Coastguard Worker } 4668*4bdc9457SAndroid Build Coastguard Worker } 4669*4bdc9457SAndroid Build Coastguard Worker } 4670*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 4671*4bdc9457SAndroid Build Coastguard Worker 4672*4bdc9457SAndroid Build Coastguard Worker 4673*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,c_eq_8)4674*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, c_eq_8) { 4675*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4676*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4677*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4678*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4679*4bdc9457SAndroid Build Coastguard Worker .channels(8) 4680*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4681*4bdc9457SAndroid Build Coastguard Worker } 4682*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,c_div_8)4683*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, c_div_8) { 4684*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4685*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4686*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4687*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4688*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4689*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4691*4bdc9457SAndroid Build Coastguard Worker } 4692*4bdc9457SAndroid Build Coastguard Worker } 4693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,c_div_8_with_qmin)4694*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, c_div_8_with_qmin) { 4695*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4696*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4697*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4698*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4699*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4700*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4701*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4702*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4703*4bdc9457SAndroid Build Coastguard Worker } 4704*4bdc9457SAndroid Build Coastguard Worker } 4705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,c_div_8_with_qmax)4706*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, c_div_8_with_qmax) { 4707*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4708*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4709*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4710*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4711*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4712*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4713*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4714*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4715*4bdc9457SAndroid Build Coastguard Worker } 4716*4bdc9457SAndroid Build Coastguard Worker } 4717*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,c_lt_8)4718*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, c_lt_8) { 4719*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4720*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 4721*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4722*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4723*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4724*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4725*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4726*4bdc9457SAndroid Build Coastguard Worker } 4727*4bdc9457SAndroid Build Coastguard Worker } 4728*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,c_gt_8)4729*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, c_gt_8) { 4730*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4731*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4732*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4733*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4734*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4735*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4736*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4737*4bdc9457SAndroid Build Coastguard Worker } 4738*4bdc9457SAndroid Build Coastguard Worker } 4739*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,c_gt_8_with_qmin)4740*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, c_gt_8_with_qmin) { 4741*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4742*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4743*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4744*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4745*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4746*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4747*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4748*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4749*4bdc9457SAndroid Build Coastguard Worker } 4750*4bdc9457SAndroid Build Coastguard Worker } 4751*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,c_gt_8_with_qmax)4752*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, c_gt_8_with_qmax) { 4753*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4754*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4755*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4756*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4757*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4758*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4759*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4760*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4761*4bdc9457SAndroid Build Coastguard Worker } 4762*4bdc9457SAndroid Build Coastguard Worker } 4763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,multipixel)4764*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, multipixel) { 4765*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4766*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4767*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4768*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4769*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4770*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4771*4bdc9457SAndroid Build Coastguard Worker .width(3) 4772*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4773*4bdc9457SAndroid Build Coastguard Worker } 4774*4bdc9457SAndroid Build Coastguard Worker } 4775*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,multipixel_with_step)4776*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, multipixel_with_step) { 4777*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4778*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4779*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 4780*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4781*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4782*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4783*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4784*4bdc9457SAndroid Build Coastguard Worker .width(3) 4785*4bdc9457SAndroid Build Coastguard Worker .step(step) 4786*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4787*4bdc9457SAndroid Build Coastguard Worker } 4788*4bdc9457SAndroid Build Coastguard Worker } 4789*4bdc9457SAndroid Build Coastguard Worker } 4790*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,multipixel_with_output_stride)4791*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, multipixel_with_output_stride) { 4792*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4793*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4794*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4795*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4796*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4797*4bdc9457SAndroid Build Coastguard Worker .channels(8) 4798*4bdc9457SAndroid Build Coastguard Worker .width(5) 4799*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 4800*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4801*4bdc9457SAndroid Build Coastguard Worker } 4802*4bdc9457SAndroid Build Coastguard Worker } 4803*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,multipixel_with_qmin)4804*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, multipixel_with_qmin) { 4805*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4806*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4807*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4808*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4809*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4810*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4811*4bdc9457SAndroid Build Coastguard Worker .width(3) 4812*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4813*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4814*4bdc9457SAndroid Build Coastguard Worker } 4815*4bdc9457SAndroid Build Coastguard Worker } 4816*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,multipixel_with_qmax)4817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, multipixel_with_qmax) { 4818*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4819*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4820*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4821*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4822*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4823*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4824*4bdc9457SAndroid Build Coastguard Worker .width(3) 4825*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4826*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4827*4bdc9457SAndroid Build Coastguard Worker } 4828*4bdc9457SAndroid Build Coastguard Worker } 4829*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,input_offset)4830*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, input_offset) { 4831*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4832*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4833*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4834*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4835*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4836*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4837*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 4838*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4839*4bdc9457SAndroid Build Coastguard Worker } 4840*4bdc9457SAndroid Build Coastguard Worker } 4841*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2,zero)4842*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X3__FMA3_ACC2, zero) { 4843*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4844*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 4845*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4846*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4847*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4848*4bdc9457SAndroid Build Coastguard Worker .kr(3) 4849*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4850*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 4851*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 4852*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 4853*4bdc9457SAndroid Build Coastguard Worker } 4854*4bdc9457SAndroid Build Coastguard Worker } 4855*4bdc9457SAndroid Build Coastguard Worker } 4856*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 4857*4bdc9457SAndroid Build Coastguard Worker 4858*4bdc9457SAndroid Build Coastguard Worker 4859*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,c_eq_8)4860*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, c_eq_8) { 4861*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4862*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4863*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4864*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4865*4bdc9457SAndroid Build Coastguard Worker .channels(8) 4866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4867*4bdc9457SAndroid Build Coastguard Worker } 4868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,c_div_8)4869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, c_div_8) { 4870*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4871*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4872*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4873*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4874*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4875*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4877*4bdc9457SAndroid Build Coastguard Worker } 4878*4bdc9457SAndroid Build Coastguard Worker } 4879*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,c_div_8_with_qmin)4880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, c_div_8_with_qmin) { 4881*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4882*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4883*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4884*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4885*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4886*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4887*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4888*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4889*4bdc9457SAndroid Build Coastguard Worker } 4890*4bdc9457SAndroid Build Coastguard Worker } 4891*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,c_div_8_with_qmax)4892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, c_div_8_with_qmax) { 4893*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4894*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 4895*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4896*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4897*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4898*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4899*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4900*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4901*4bdc9457SAndroid Build Coastguard Worker } 4902*4bdc9457SAndroid Build Coastguard Worker } 4903*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,c_lt_8)4904*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, c_lt_8) { 4905*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4906*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 4907*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4908*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4909*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4910*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4911*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4912*4bdc9457SAndroid Build Coastguard Worker } 4913*4bdc9457SAndroid Build Coastguard Worker } 4914*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,c_gt_8)4915*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, c_gt_8) { 4916*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4917*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4918*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4919*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4920*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4921*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4923*4bdc9457SAndroid Build Coastguard Worker } 4924*4bdc9457SAndroid Build Coastguard Worker } 4925*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,c_gt_8_with_qmin)4926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, c_gt_8_with_qmin) { 4927*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4928*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4929*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4930*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4931*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4932*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4933*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4934*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4935*4bdc9457SAndroid Build Coastguard Worker } 4936*4bdc9457SAndroid Build Coastguard Worker } 4937*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,c_gt_8_with_qmax)4938*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, c_gt_8_with_qmax) { 4939*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4940*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 4941*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4942*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4943*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4944*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4945*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4946*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4947*4bdc9457SAndroid Build Coastguard Worker } 4948*4bdc9457SAndroid Build Coastguard Worker } 4949*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,multipixel)4950*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, multipixel) { 4951*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4952*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4953*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4954*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4955*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4956*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4957*4bdc9457SAndroid Build Coastguard Worker .width(3) 4958*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4959*4bdc9457SAndroid Build Coastguard Worker } 4960*4bdc9457SAndroid Build Coastguard Worker } 4961*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,multipixel_with_step)4962*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, multipixel_with_step) { 4963*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4964*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4965*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 4966*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4967*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4968*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4969*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4970*4bdc9457SAndroid Build Coastguard Worker .width(3) 4971*4bdc9457SAndroid Build Coastguard Worker .step(step) 4972*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4973*4bdc9457SAndroid Build Coastguard Worker } 4974*4bdc9457SAndroid Build Coastguard Worker } 4975*4bdc9457SAndroid Build Coastguard Worker } 4976*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,multipixel_with_output_stride)4977*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, multipixel_with_output_stride) { 4978*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4979*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4980*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4981*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4982*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4983*4bdc9457SAndroid Build Coastguard Worker .channels(8) 4984*4bdc9457SAndroid Build Coastguard Worker .width(5) 4985*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 4986*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 4987*4bdc9457SAndroid Build Coastguard Worker } 4988*4bdc9457SAndroid Build Coastguard Worker } 4989*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,multipixel_with_qmin)4990*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, multipixel_with_qmin) { 4991*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 4992*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 4993*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 4994*4bdc9457SAndroid Build Coastguard Worker .cr(8) 4995*4bdc9457SAndroid Build Coastguard Worker .kr(4) 4996*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 4997*4bdc9457SAndroid Build Coastguard Worker .width(3) 4998*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4999*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 5000*4bdc9457SAndroid Build Coastguard Worker } 5001*4bdc9457SAndroid Build Coastguard Worker } 5002*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,multipixel_with_qmax)5003*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, multipixel_with_qmax) { 5004*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5005*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5006*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5007*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5008*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5009*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5010*4bdc9457SAndroid Build Coastguard Worker .width(3) 5011*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5012*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 5013*4bdc9457SAndroid Build Coastguard Worker } 5014*4bdc9457SAndroid Build Coastguard Worker } 5015*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,input_offset)5016*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, input_offset) { 5017*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5018*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5019*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5020*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5021*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5022*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5023*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5024*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 5025*4bdc9457SAndroid Build Coastguard Worker } 5026*4bdc9457SAndroid Build Coastguard Worker } 5027*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3,zero)5028*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3, zero) { 5029*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5030*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 5031*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5032*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5033*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5034*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5035*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5036*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5037*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 5038*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3, xnn_init_f16_minmax_avx_params); 5039*4bdc9457SAndroid Build Coastguard Worker } 5040*4bdc9457SAndroid Build Coastguard Worker } 5041*4bdc9457SAndroid Build Coastguard Worker } 5042*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 5043*4bdc9457SAndroid Build Coastguard Worker 5044*4bdc9457SAndroid Build Coastguard Worker 5045*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,c_eq_8)5046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, c_eq_8) { 5047*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5048*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5049*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5050*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5051*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5052*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5053*4bdc9457SAndroid Build Coastguard Worker } 5054*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,c_div_8)5055*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, c_div_8) { 5056*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5057*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5058*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5059*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5060*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5061*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5063*4bdc9457SAndroid Build Coastguard Worker } 5064*4bdc9457SAndroid Build Coastguard Worker } 5065*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,c_div_8_with_qmin)5066*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, c_div_8_with_qmin) { 5067*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5068*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5069*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5070*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5071*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5072*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5073*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5074*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5075*4bdc9457SAndroid Build Coastguard Worker } 5076*4bdc9457SAndroid Build Coastguard Worker } 5077*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,c_div_8_with_qmax)5078*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, c_div_8_with_qmax) { 5079*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5080*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5081*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5082*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5083*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5084*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5085*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5086*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5087*4bdc9457SAndroid Build Coastguard Worker } 5088*4bdc9457SAndroid Build Coastguard Worker } 5089*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,c_lt_8)5090*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, c_lt_8) { 5091*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5092*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 5093*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5094*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5095*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5096*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5097*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5098*4bdc9457SAndroid Build Coastguard Worker } 5099*4bdc9457SAndroid Build Coastguard Worker } 5100*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,c_gt_8)5101*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, c_gt_8) { 5102*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5103*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5104*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5105*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5106*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5107*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5109*4bdc9457SAndroid Build Coastguard Worker } 5110*4bdc9457SAndroid Build Coastguard Worker } 5111*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,c_gt_8_with_qmin)5112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, c_gt_8_with_qmin) { 5113*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5114*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5115*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5116*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5117*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5118*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5119*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5120*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5121*4bdc9457SAndroid Build Coastguard Worker } 5122*4bdc9457SAndroid Build Coastguard Worker } 5123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,c_gt_8_with_qmax)5124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, c_gt_8_with_qmax) { 5125*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5126*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5127*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5128*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5129*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5130*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5131*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5133*4bdc9457SAndroid Build Coastguard Worker } 5134*4bdc9457SAndroid Build Coastguard Worker } 5135*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,multipixel)5136*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, multipixel) { 5137*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5138*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5139*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5140*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5141*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5142*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5143*4bdc9457SAndroid Build Coastguard Worker .width(3) 5144*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5145*4bdc9457SAndroid Build Coastguard Worker } 5146*4bdc9457SAndroid Build Coastguard Worker } 5147*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,multipixel_with_step)5148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, multipixel_with_step) { 5149*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5150*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5151*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 5152*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5153*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5154*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5155*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5156*4bdc9457SAndroid Build Coastguard Worker .width(3) 5157*4bdc9457SAndroid Build Coastguard Worker .step(step) 5158*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5159*4bdc9457SAndroid Build Coastguard Worker } 5160*4bdc9457SAndroid Build Coastguard Worker } 5161*4bdc9457SAndroid Build Coastguard Worker } 5162*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,multipixel_with_output_stride)5163*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, multipixel_with_output_stride) { 5164*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5165*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5166*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5167*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5168*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5169*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5170*4bdc9457SAndroid Build Coastguard Worker .width(5) 5171*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 5172*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5173*4bdc9457SAndroid Build Coastguard Worker } 5174*4bdc9457SAndroid Build Coastguard Worker } 5175*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,multipixel_with_qmin)5176*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, multipixel_with_qmin) { 5177*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5178*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5179*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5180*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5181*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5182*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5183*4bdc9457SAndroid Build Coastguard Worker .width(3) 5184*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5185*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5186*4bdc9457SAndroid Build Coastguard Worker } 5187*4bdc9457SAndroid Build Coastguard Worker } 5188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,multipixel_with_qmax)5189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, multipixel_with_qmax) { 5190*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5191*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5192*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5193*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5194*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5195*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5196*4bdc9457SAndroid Build Coastguard Worker .width(3) 5197*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5198*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5199*4bdc9457SAndroid Build Coastguard Worker } 5200*4bdc9457SAndroid Build Coastguard Worker } 5201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,input_offset)5202*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, input_offset) { 5203*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5204*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5205*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5206*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5207*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5208*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5209*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5210*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5211*4bdc9457SAndroid Build Coastguard Worker } 5212*4bdc9457SAndroid Build Coastguard Worker } 5213*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2,zero)5214*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X4__FMA3_ACC2, zero) { 5215*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5216*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 5217*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5218*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5219*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5220*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5221*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5222*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5223*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 5224*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 5225*4bdc9457SAndroid Build Coastguard Worker } 5226*4bdc9457SAndroid Build Coastguard Worker } 5227*4bdc9457SAndroid Build Coastguard Worker } 5228*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 5229*4bdc9457SAndroid Build Coastguard Worker 5230*4bdc9457SAndroid Build Coastguard Worker 5231*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,c_eq_8)5232*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, c_eq_8) { 5233*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5234*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5235*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5236*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5237*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5238*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5239*4bdc9457SAndroid Build Coastguard Worker } 5240*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,c_div_8)5241*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, c_div_8) { 5242*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5243*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5244*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5245*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5246*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5247*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5249*4bdc9457SAndroid Build Coastguard Worker } 5250*4bdc9457SAndroid Build Coastguard Worker } 5251*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,c_div_8_with_qmin)5252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, c_div_8_with_qmin) { 5253*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5254*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5255*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5256*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5257*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5258*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5259*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5260*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5261*4bdc9457SAndroid Build Coastguard Worker } 5262*4bdc9457SAndroid Build Coastguard Worker } 5263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,c_div_8_with_qmax)5264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, c_div_8_with_qmax) { 5265*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5266*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5267*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5268*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5269*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5270*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5271*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5272*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5273*4bdc9457SAndroid Build Coastguard Worker } 5274*4bdc9457SAndroid Build Coastguard Worker } 5275*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,c_lt_8)5276*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, c_lt_8) { 5277*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5278*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 5279*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5280*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5281*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5282*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5283*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5284*4bdc9457SAndroid Build Coastguard Worker } 5285*4bdc9457SAndroid Build Coastguard Worker } 5286*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,c_gt_8)5287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, c_gt_8) { 5288*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5289*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5290*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5291*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5292*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5293*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5294*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5295*4bdc9457SAndroid Build Coastguard Worker } 5296*4bdc9457SAndroid Build Coastguard Worker } 5297*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,c_gt_8_with_qmin)5298*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, c_gt_8_with_qmin) { 5299*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5300*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5301*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5302*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5303*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5304*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5305*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5306*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5307*4bdc9457SAndroid Build Coastguard Worker } 5308*4bdc9457SAndroid Build Coastguard Worker } 5309*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,c_gt_8_with_qmax)5310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, c_gt_8_with_qmax) { 5311*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5312*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5313*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5314*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5315*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5316*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5317*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5319*4bdc9457SAndroid Build Coastguard Worker } 5320*4bdc9457SAndroid Build Coastguard Worker } 5321*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,multipixel)5322*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, multipixel) { 5323*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5324*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5325*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5326*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5327*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5328*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5329*4bdc9457SAndroid Build Coastguard Worker .width(3) 5330*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5331*4bdc9457SAndroid Build Coastguard Worker } 5332*4bdc9457SAndroid Build Coastguard Worker } 5333*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,multipixel_with_step)5334*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, multipixel_with_step) { 5335*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5336*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5337*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 5338*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5339*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5340*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5341*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5342*4bdc9457SAndroid Build Coastguard Worker .width(3) 5343*4bdc9457SAndroid Build Coastguard Worker .step(step) 5344*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5345*4bdc9457SAndroid Build Coastguard Worker } 5346*4bdc9457SAndroid Build Coastguard Worker } 5347*4bdc9457SAndroid Build Coastguard Worker } 5348*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,multipixel_with_output_stride)5349*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, multipixel_with_output_stride) { 5350*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5351*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5352*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5353*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5354*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5355*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5356*4bdc9457SAndroid Build Coastguard Worker .width(5) 5357*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 5358*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5359*4bdc9457SAndroid Build Coastguard Worker } 5360*4bdc9457SAndroid Build Coastguard Worker } 5361*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,multipixel_with_qmin)5362*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, multipixel_with_qmin) { 5363*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5364*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5365*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5366*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5367*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5368*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5369*4bdc9457SAndroid Build Coastguard Worker .width(3) 5370*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5371*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5372*4bdc9457SAndroid Build Coastguard Worker } 5373*4bdc9457SAndroid Build Coastguard Worker } 5374*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,multipixel_with_qmax)5375*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, multipixel_with_qmax) { 5376*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5377*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5378*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5379*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5380*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5381*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5382*4bdc9457SAndroid Build Coastguard Worker .width(3) 5383*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5384*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5385*4bdc9457SAndroid Build Coastguard Worker } 5386*4bdc9457SAndroid Build Coastguard Worker } 5387*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,input_offset)5388*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, input_offset) { 5389*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5390*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5391*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5392*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5393*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5394*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5395*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5396*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5397*4bdc9457SAndroid Build Coastguard Worker } 5398*4bdc9457SAndroid Build Coastguard Worker } 5399*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3,zero)5400*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3, zero) { 5401*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5402*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 5403*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5404*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5405*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5406*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5407*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5408*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5409*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 5410*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3, xnn_init_f16_minmax_avx_params); 5411*4bdc9457SAndroid Build Coastguard Worker } 5412*4bdc9457SAndroid Build Coastguard Worker } 5413*4bdc9457SAndroid Build Coastguard Worker } 5414*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 5415*4bdc9457SAndroid Build Coastguard Worker 5416*4bdc9457SAndroid Build Coastguard Worker 5417*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,c_eq_8)5418*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, c_eq_8) { 5419*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5420*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5421*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5422*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5423*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5424*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5425*4bdc9457SAndroid Build Coastguard Worker } 5426*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,c_div_8)5427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, c_div_8) { 5428*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5429*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5430*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5431*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5432*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5433*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5434*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5435*4bdc9457SAndroid Build Coastguard Worker } 5436*4bdc9457SAndroid Build Coastguard Worker } 5437*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,c_div_8_with_qmin)5438*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, c_div_8_with_qmin) { 5439*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5440*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5441*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5442*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5443*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5444*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5445*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5446*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5447*4bdc9457SAndroid Build Coastguard Worker } 5448*4bdc9457SAndroid Build Coastguard Worker } 5449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,c_div_8_with_qmax)5450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, c_div_8_with_qmax) { 5451*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5452*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5453*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5454*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5455*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5456*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5457*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5458*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5459*4bdc9457SAndroid Build Coastguard Worker } 5460*4bdc9457SAndroid Build Coastguard Worker } 5461*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,c_lt_8)5462*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, c_lt_8) { 5463*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5464*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 5465*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5466*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5467*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5468*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5469*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5470*4bdc9457SAndroid Build Coastguard Worker } 5471*4bdc9457SAndroid Build Coastguard Worker } 5472*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,c_gt_8)5473*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, c_gt_8) { 5474*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5475*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5476*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5477*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5478*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5479*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5480*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5481*4bdc9457SAndroid Build Coastguard Worker } 5482*4bdc9457SAndroid Build Coastguard Worker } 5483*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,c_gt_8_with_qmin)5484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, c_gt_8_with_qmin) { 5485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5486*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5487*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5488*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5489*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5490*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5491*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5493*4bdc9457SAndroid Build Coastguard Worker } 5494*4bdc9457SAndroid Build Coastguard Worker } 5495*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,c_gt_8_with_qmax)5496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, c_gt_8_with_qmax) { 5497*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5498*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5499*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5500*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5501*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5502*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5503*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5504*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5505*4bdc9457SAndroid Build Coastguard Worker } 5506*4bdc9457SAndroid Build Coastguard Worker } 5507*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,multipixel)5508*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, multipixel) { 5509*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5510*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5511*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5512*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5513*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5514*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5515*4bdc9457SAndroid Build Coastguard Worker .width(3) 5516*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5517*4bdc9457SAndroid Build Coastguard Worker } 5518*4bdc9457SAndroid Build Coastguard Worker } 5519*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,multipixel_with_step)5520*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, multipixel_with_step) { 5521*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5522*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5523*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 5524*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5525*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5526*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5527*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5528*4bdc9457SAndroid Build Coastguard Worker .width(3) 5529*4bdc9457SAndroid Build Coastguard Worker .step(step) 5530*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5531*4bdc9457SAndroid Build Coastguard Worker } 5532*4bdc9457SAndroid Build Coastguard Worker } 5533*4bdc9457SAndroid Build Coastguard Worker } 5534*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,multipixel_with_output_stride)5535*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, multipixel_with_output_stride) { 5536*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5537*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5538*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5539*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5540*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5541*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5542*4bdc9457SAndroid Build Coastguard Worker .width(5) 5543*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 5544*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5545*4bdc9457SAndroid Build Coastguard Worker } 5546*4bdc9457SAndroid Build Coastguard Worker } 5547*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,multipixel_with_qmin)5548*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, multipixel_with_qmin) { 5549*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5550*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5551*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5552*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5553*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5554*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5555*4bdc9457SAndroid Build Coastguard Worker .width(3) 5556*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5557*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5558*4bdc9457SAndroid Build Coastguard Worker } 5559*4bdc9457SAndroid Build Coastguard Worker } 5560*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,multipixel_with_qmax)5561*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, multipixel_with_qmax) { 5562*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5563*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5564*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5565*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5566*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5567*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5568*4bdc9457SAndroid Build Coastguard Worker .width(3) 5569*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5570*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5571*4bdc9457SAndroid Build Coastguard Worker } 5572*4bdc9457SAndroid Build Coastguard Worker } 5573*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,input_offset)5574*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, input_offset) { 5575*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5576*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5577*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5578*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5579*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5580*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5581*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5582*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5583*4bdc9457SAndroid Build Coastguard Worker } 5584*4bdc9457SAndroid Build Coastguard Worker } 5585*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2,zero)5586*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X9__FMA3_ACC2, zero) { 5587*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5588*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 5589*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5590*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5591*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5592*4bdc9457SAndroid Build Coastguard Worker .kr(9) 5593*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5594*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5595*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 5596*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 5597*4bdc9457SAndroid Build Coastguard Worker } 5598*4bdc9457SAndroid Build Coastguard Worker } 5599*4bdc9457SAndroid Build Coastguard Worker } 5600*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 5601*4bdc9457SAndroid Build Coastguard Worker 5602*4bdc9457SAndroid Build Coastguard Worker 5603*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,c_eq_8)5604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, c_eq_8) { 5605*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5606*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5607*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5608*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5609*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5610*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5611*4bdc9457SAndroid Build Coastguard Worker } 5612*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,c_div_8)5613*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, c_div_8) { 5614*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5615*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5616*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5617*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5618*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5619*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5621*4bdc9457SAndroid Build Coastguard Worker } 5622*4bdc9457SAndroid Build Coastguard Worker } 5623*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,c_div_8_with_qmin)5624*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, c_div_8_with_qmin) { 5625*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5626*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5627*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5628*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5629*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5630*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5631*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5632*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5633*4bdc9457SAndroid Build Coastguard Worker } 5634*4bdc9457SAndroid Build Coastguard Worker } 5635*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,c_div_8_with_qmax)5636*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, c_div_8_with_qmax) { 5637*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5638*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5639*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5640*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5641*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5642*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5643*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5644*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5645*4bdc9457SAndroid Build Coastguard Worker } 5646*4bdc9457SAndroid Build Coastguard Worker } 5647*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,c_lt_8)5648*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, c_lt_8) { 5649*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5650*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 5651*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5652*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5653*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5654*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5655*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5656*4bdc9457SAndroid Build Coastguard Worker } 5657*4bdc9457SAndroid Build Coastguard Worker } 5658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,c_gt_8)5659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, c_gt_8) { 5660*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5661*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5662*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5663*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5664*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5665*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5666*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5667*4bdc9457SAndroid Build Coastguard Worker } 5668*4bdc9457SAndroid Build Coastguard Worker } 5669*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,c_gt_8_with_qmin)5670*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, c_gt_8_with_qmin) { 5671*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5672*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5673*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5674*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5675*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5676*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5677*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5678*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5679*4bdc9457SAndroid Build Coastguard Worker } 5680*4bdc9457SAndroid Build Coastguard Worker } 5681*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,c_gt_8_with_qmax)5682*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, c_gt_8_with_qmax) { 5683*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5684*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5685*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5686*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5687*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5688*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5689*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5691*4bdc9457SAndroid Build Coastguard Worker } 5692*4bdc9457SAndroid Build Coastguard Worker } 5693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,multipixel)5694*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, multipixel) { 5695*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5696*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5697*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5698*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5699*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5700*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5701*4bdc9457SAndroid Build Coastguard Worker .width(3) 5702*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5703*4bdc9457SAndroid Build Coastguard Worker } 5704*4bdc9457SAndroid Build Coastguard Worker } 5705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,multipixel_with_step)5706*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, multipixel_with_step) { 5707*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5708*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5709*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 5710*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5711*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5712*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5713*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5714*4bdc9457SAndroid Build Coastguard Worker .width(3) 5715*4bdc9457SAndroid Build Coastguard Worker .step(step) 5716*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5717*4bdc9457SAndroid Build Coastguard Worker } 5718*4bdc9457SAndroid Build Coastguard Worker } 5719*4bdc9457SAndroid Build Coastguard Worker } 5720*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,multipixel_with_output_stride)5721*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, multipixel_with_output_stride) { 5722*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5723*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5724*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5725*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5726*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5727*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5728*4bdc9457SAndroid Build Coastguard Worker .width(5) 5729*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 5730*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5731*4bdc9457SAndroid Build Coastguard Worker } 5732*4bdc9457SAndroid Build Coastguard Worker } 5733*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,multipixel_with_qmin)5734*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, multipixel_with_qmin) { 5735*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5736*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5737*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5738*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5739*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5740*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5741*4bdc9457SAndroid Build Coastguard Worker .width(3) 5742*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5743*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5744*4bdc9457SAndroid Build Coastguard Worker } 5745*4bdc9457SAndroid Build Coastguard Worker } 5746*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,multipixel_with_qmax)5747*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, multipixel_with_qmax) { 5748*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5749*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5750*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5751*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5752*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5753*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5754*4bdc9457SAndroid Build Coastguard Worker .width(3) 5755*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5756*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5757*4bdc9457SAndroid Build Coastguard Worker } 5758*4bdc9457SAndroid Build Coastguard Worker } 5759*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,input_offset)5760*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, input_offset) { 5761*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5762*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5763*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5764*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5765*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5766*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5767*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5768*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5769*4bdc9457SAndroid Build Coastguard Worker } 5770*4bdc9457SAndroid Build Coastguard Worker } 5771*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3,zero)5772*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3, zero) { 5773*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5774*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 5775*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5776*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5777*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5778*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5779*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5780*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5781*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 5782*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3, xnn_init_f16_minmax_avx_params); 5783*4bdc9457SAndroid Build Coastguard Worker } 5784*4bdc9457SAndroid Build Coastguard Worker } 5785*4bdc9457SAndroid Build Coastguard Worker } 5786*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 5787*4bdc9457SAndroid Build Coastguard Worker 5788*4bdc9457SAndroid Build Coastguard Worker 5789*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,c_eq_8)5790*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, c_eq_8) { 5791*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5792*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5793*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5794*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5795*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5796*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5797*4bdc9457SAndroid Build Coastguard Worker } 5798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,c_div_8)5799*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, c_div_8) { 5800*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5801*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5802*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5803*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5804*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5805*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5806*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5807*4bdc9457SAndroid Build Coastguard Worker } 5808*4bdc9457SAndroid Build Coastguard Worker } 5809*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,c_div_8_with_qmin)5810*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, c_div_8_with_qmin) { 5811*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5812*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5813*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5814*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5815*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5816*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5817*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5818*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5819*4bdc9457SAndroid Build Coastguard Worker } 5820*4bdc9457SAndroid Build Coastguard Worker } 5821*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,c_div_8_with_qmax)5822*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, c_div_8_with_qmax) { 5823*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5824*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5825*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5826*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5827*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5828*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5829*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5830*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5831*4bdc9457SAndroid Build Coastguard Worker } 5832*4bdc9457SAndroid Build Coastguard Worker } 5833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,c_lt_8)5834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, c_lt_8) { 5835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5836*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 8; channels++) { 5837*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5838*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5839*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5840*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5841*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5842*4bdc9457SAndroid Build Coastguard Worker } 5843*4bdc9457SAndroid Build Coastguard Worker } 5844*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,c_gt_8)5845*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, c_gt_8) { 5846*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5847*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5848*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5849*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5850*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5851*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5852*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5853*4bdc9457SAndroid Build Coastguard Worker } 5854*4bdc9457SAndroid Build Coastguard Worker } 5855*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,c_gt_8_with_qmin)5856*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, c_gt_8_with_qmin) { 5857*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5858*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5859*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5860*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5861*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5862*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5863*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5864*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5865*4bdc9457SAndroid Build Coastguard Worker } 5866*4bdc9457SAndroid Build Coastguard Worker } 5867*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,c_gt_8_with_qmax)5868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, c_gt_8_with_qmax) { 5869*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5870*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 9; channels < 16; channels++) { 5871*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5872*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5873*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5874*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5875*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5877*4bdc9457SAndroid Build Coastguard Worker } 5878*4bdc9457SAndroid Build Coastguard Worker } 5879*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,multipixel)5880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, multipixel) { 5881*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5882*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5883*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5884*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5885*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5886*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5887*4bdc9457SAndroid Build Coastguard Worker .width(3) 5888*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5889*4bdc9457SAndroid Build Coastguard Worker } 5890*4bdc9457SAndroid Build Coastguard Worker } 5891*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,multipixel_with_step)5892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, multipixel_with_step) { 5893*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5894*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5895*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 5896*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5897*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5898*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5899*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5900*4bdc9457SAndroid Build Coastguard Worker .width(3) 5901*4bdc9457SAndroid Build Coastguard Worker .step(step) 5902*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5903*4bdc9457SAndroid Build Coastguard Worker } 5904*4bdc9457SAndroid Build Coastguard Worker } 5905*4bdc9457SAndroid Build Coastguard Worker } 5906*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,multipixel_with_output_stride)5907*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, multipixel_with_output_stride) { 5908*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5909*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5910*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5911*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5912*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5913*4bdc9457SAndroid Build Coastguard Worker .channels(8) 5914*4bdc9457SAndroid Build Coastguard Worker .width(5) 5915*4bdc9457SAndroid Build Coastguard Worker .output_stride(43) 5916*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5917*4bdc9457SAndroid Build Coastguard Worker } 5918*4bdc9457SAndroid Build Coastguard Worker } 5919*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,multipixel_with_qmin)5920*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, multipixel_with_qmin) { 5921*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5922*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5923*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5924*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5925*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5926*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5927*4bdc9457SAndroid Build Coastguard Worker .width(3) 5928*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5929*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5930*4bdc9457SAndroid Build Coastguard Worker } 5931*4bdc9457SAndroid Build Coastguard Worker } 5932*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,multipixel_with_qmax)5933*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, multipixel_with_qmax) { 5934*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5935*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) { 5936*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5937*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5938*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5939*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5940*4bdc9457SAndroid Build Coastguard Worker .width(3) 5941*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5942*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5943*4bdc9457SAndroid Build Coastguard Worker } 5944*4bdc9457SAndroid Build Coastguard Worker } 5945*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,input_offset)5946*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, input_offset) { 5947*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5948*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5949*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5950*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5951*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5952*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5953*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5954*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5955*4bdc9457SAndroid Build Coastguard Worker } 5956*4bdc9457SAndroid Build Coastguard Worker } 5957*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2,zero)5958*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP8X25__FMA3_ACC2, zero) { 5959*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5960*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 5961*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 16; channels < 128; channels += 24) { 5962*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5963*4bdc9457SAndroid Build Coastguard Worker .cr(8) 5964*4bdc9457SAndroid Build Coastguard Worker .kr(25) 5965*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5966*4bdc9457SAndroid Build Coastguard Worker .input_offset(176) 5967*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 5968*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up8x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 5969*4bdc9457SAndroid Build Coastguard Worker } 5970*4bdc9457SAndroid Build Coastguard Worker } 5971*4bdc9457SAndroid Build Coastguard Worker } 5972*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 5973*4bdc9457SAndroid Build Coastguard Worker 5974*4bdc9457SAndroid Build Coastguard Worker 5975*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,c_eq_16)5976*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, c_eq_16) { 5977*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5978*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5979*4bdc9457SAndroid Build Coastguard Worker .cr(16) 5980*4bdc9457SAndroid Build Coastguard Worker .kr(3) 5981*4bdc9457SAndroid Build Coastguard Worker .channels(16) 5982*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 5983*4bdc9457SAndroid Build Coastguard Worker } 5984*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,c_div_16)5985*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, c_div_16) { 5986*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5987*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 5988*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 5989*4bdc9457SAndroid Build Coastguard Worker .cr(16) 5990*4bdc9457SAndroid Build Coastguard Worker .kr(3) 5991*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 5992*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 5993*4bdc9457SAndroid Build Coastguard Worker } 5994*4bdc9457SAndroid Build Coastguard Worker } 5995*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,c_div_16_with_qmin)5996*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, c_div_16_with_qmin) { 5997*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 5998*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 5999*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6000*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6001*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6002*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6003*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6004*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6005*4bdc9457SAndroid Build Coastguard Worker } 6006*4bdc9457SAndroid Build Coastguard Worker } 6007*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,c_div_16_with_qmax)6008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, c_div_16_with_qmax) { 6009*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6010*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6011*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6012*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6013*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6014*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6015*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6016*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6017*4bdc9457SAndroid Build Coastguard Worker } 6018*4bdc9457SAndroid Build Coastguard Worker } 6019*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,c_lt_16)6020*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, c_lt_16) { 6021*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6022*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 6023*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6024*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6025*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6026*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6027*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6028*4bdc9457SAndroid Build Coastguard Worker } 6029*4bdc9457SAndroid Build Coastguard Worker } 6030*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,c_gt_16)6031*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, c_gt_16) { 6032*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6033*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6034*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6035*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6036*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6037*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6038*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6039*4bdc9457SAndroid Build Coastguard Worker } 6040*4bdc9457SAndroid Build Coastguard Worker } 6041*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,c_gt_16_with_qmin)6042*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, c_gt_16_with_qmin) { 6043*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6044*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6045*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6046*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6047*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6048*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6049*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6050*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6051*4bdc9457SAndroid Build Coastguard Worker } 6052*4bdc9457SAndroid Build Coastguard Worker } 6053*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,c_gt_16_with_qmax)6054*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, c_gt_16_with_qmax) { 6055*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6056*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6057*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6058*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6059*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6060*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6061*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6063*4bdc9457SAndroid Build Coastguard Worker } 6064*4bdc9457SAndroid Build Coastguard Worker } 6065*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,multipixel)6066*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, multipixel) { 6067*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6068*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6069*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6070*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6071*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6072*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6073*4bdc9457SAndroid Build Coastguard Worker .width(3) 6074*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6075*4bdc9457SAndroid Build Coastguard Worker } 6076*4bdc9457SAndroid Build Coastguard Worker } 6077*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,multipixel_with_step)6078*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, multipixel_with_step) { 6079*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6080*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6081*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 6082*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6083*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6084*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6085*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6086*4bdc9457SAndroid Build Coastguard Worker .width(3) 6087*4bdc9457SAndroid Build Coastguard Worker .step(step) 6088*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6089*4bdc9457SAndroid Build Coastguard Worker } 6090*4bdc9457SAndroid Build Coastguard Worker } 6091*4bdc9457SAndroid Build Coastguard Worker } 6092*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,multipixel_with_output_stride)6093*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, multipixel_with_output_stride) { 6094*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6095*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6096*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6097*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6098*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6099*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6100*4bdc9457SAndroid Build Coastguard Worker .width(5) 6101*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 6102*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6103*4bdc9457SAndroid Build Coastguard Worker } 6104*4bdc9457SAndroid Build Coastguard Worker } 6105*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,multipixel_with_qmin)6106*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, multipixel_with_qmin) { 6107*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6108*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6109*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6110*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6111*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6112*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6113*4bdc9457SAndroid Build Coastguard Worker .width(3) 6114*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6115*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6116*4bdc9457SAndroid Build Coastguard Worker } 6117*4bdc9457SAndroid Build Coastguard Worker } 6118*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,multipixel_with_qmax)6119*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, multipixel_with_qmax) { 6120*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6121*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6122*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6123*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6124*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6125*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6126*4bdc9457SAndroid Build Coastguard Worker .width(3) 6127*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6128*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6129*4bdc9457SAndroid Build Coastguard Worker } 6130*4bdc9457SAndroid Build Coastguard Worker } 6131*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,input_offset)6132*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, input_offset) { 6133*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6134*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6135*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6136*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6137*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6138*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6139*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6140*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6141*4bdc9457SAndroid Build Coastguard Worker } 6142*4bdc9457SAndroid Build Coastguard Worker } 6143*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3,zero)6144*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3, zero) { 6145*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6146*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 6147*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6148*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6149*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6150*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6151*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6152*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6153*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 6154*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3, xnn_init_f16_minmax_avx_params); 6155*4bdc9457SAndroid Build Coastguard Worker } 6156*4bdc9457SAndroid Build Coastguard Worker } 6157*4bdc9457SAndroid Build Coastguard Worker } 6158*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 6159*4bdc9457SAndroid Build Coastguard Worker 6160*4bdc9457SAndroid Build Coastguard Worker 6161*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,c_eq_16)6162*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, c_eq_16) { 6163*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6164*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6165*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6166*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6167*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6168*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6169*4bdc9457SAndroid Build Coastguard Worker } 6170*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,c_div_16)6171*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, c_div_16) { 6172*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6173*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6174*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6175*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6176*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6177*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6178*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6179*4bdc9457SAndroid Build Coastguard Worker } 6180*4bdc9457SAndroid Build Coastguard Worker } 6181*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,c_div_16_with_qmin)6182*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, c_div_16_with_qmin) { 6183*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6184*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6185*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6186*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6187*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6188*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6189*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6190*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6191*4bdc9457SAndroid Build Coastguard Worker } 6192*4bdc9457SAndroid Build Coastguard Worker } 6193*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,c_div_16_with_qmax)6194*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, c_div_16_with_qmax) { 6195*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6196*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6197*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6198*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6199*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6200*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6201*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6203*4bdc9457SAndroid Build Coastguard Worker } 6204*4bdc9457SAndroid Build Coastguard Worker } 6205*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,c_lt_16)6206*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, c_lt_16) { 6207*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6208*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 6209*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6210*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6211*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6212*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6213*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6214*4bdc9457SAndroid Build Coastguard Worker } 6215*4bdc9457SAndroid Build Coastguard Worker } 6216*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,c_gt_16)6217*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, c_gt_16) { 6218*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6219*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6220*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6221*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6222*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6223*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6224*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6225*4bdc9457SAndroid Build Coastguard Worker } 6226*4bdc9457SAndroid Build Coastguard Worker } 6227*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,c_gt_16_with_qmin)6228*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, c_gt_16_with_qmin) { 6229*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6230*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6231*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6232*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6233*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6234*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6235*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6236*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6237*4bdc9457SAndroid Build Coastguard Worker } 6238*4bdc9457SAndroid Build Coastguard Worker } 6239*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,c_gt_16_with_qmax)6240*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, c_gt_16_with_qmax) { 6241*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6242*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6243*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6244*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6245*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6246*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6247*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6249*4bdc9457SAndroid Build Coastguard Worker } 6250*4bdc9457SAndroid Build Coastguard Worker } 6251*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,multipixel)6252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, multipixel) { 6253*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6254*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6255*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6256*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6257*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6258*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6259*4bdc9457SAndroid Build Coastguard Worker .width(3) 6260*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6261*4bdc9457SAndroid Build Coastguard Worker } 6262*4bdc9457SAndroid Build Coastguard Worker } 6263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,multipixel_with_step)6264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, multipixel_with_step) { 6265*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6266*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6267*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 6268*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6269*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6270*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6271*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6272*4bdc9457SAndroid Build Coastguard Worker .width(3) 6273*4bdc9457SAndroid Build Coastguard Worker .step(step) 6274*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6275*4bdc9457SAndroid Build Coastguard Worker } 6276*4bdc9457SAndroid Build Coastguard Worker } 6277*4bdc9457SAndroid Build Coastguard Worker } 6278*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,multipixel_with_output_stride)6279*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, multipixel_with_output_stride) { 6280*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6281*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6282*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6283*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6284*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6285*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6286*4bdc9457SAndroid Build Coastguard Worker .width(5) 6287*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 6288*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6289*4bdc9457SAndroid Build Coastguard Worker } 6290*4bdc9457SAndroid Build Coastguard Worker } 6291*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,multipixel_with_qmin)6292*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, multipixel_with_qmin) { 6293*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6294*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6295*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6296*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6297*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6298*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6299*4bdc9457SAndroid Build Coastguard Worker .width(3) 6300*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6301*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6302*4bdc9457SAndroid Build Coastguard Worker } 6303*4bdc9457SAndroid Build Coastguard Worker } 6304*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,multipixel_with_qmax)6305*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, multipixel_with_qmax) { 6306*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6307*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6308*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6309*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6310*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6311*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6312*4bdc9457SAndroid Build Coastguard Worker .width(3) 6313*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6314*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6315*4bdc9457SAndroid Build Coastguard Worker } 6316*4bdc9457SAndroid Build Coastguard Worker } 6317*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,input_offset)6318*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, input_offset) { 6319*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6320*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6321*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6322*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6323*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6324*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6325*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6326*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6327*4bdc9457SAndroid Build Coastguard Worker } 6328*4bdc9457SAndroid Build Coastguard Worker } 6329*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2,zero)6330*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X3__FMA3_ACC2, zero) { 6331*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6332*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 6333*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6334*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6335*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6336*4bdc9457SAndroid Build Coastguard Worker .kr(3) 6337*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6338*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6339*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 6340*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 6341*4bdc9457SAndroid Build Coastguard Worker } 6342*4bdc9457SAndroid Build Coastguard Worker } 6343*4bdc9457SAndroid Build Coastguard Worker } 6344*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 6345*4bdc9457SAndroid Build Coastguard Worker 6346*4bdc9457SAndroid Build Coastguard Worker 6347*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,c_eq_16)6348*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, c_eq_16) { 6349*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6350*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6351*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6352*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6353*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6354*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6355*4bdc9457SAndroid Build Coastguard Worker } 6356*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,c_div_16)6357*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, c_div_16) { 6358*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6359*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6360*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6361*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6362*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6363*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6364*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6365*4bdc9457SAndroid Build Coastguard Worker } 6366*4bdc9457SAndroid Build Coastguard Worker } 6367*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,c_div_16_with_qmin)6368*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, c_div_16_with_qmin) { 6369*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6370*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6371*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6372*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6373*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6374*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6375*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6376*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6377*4bdc9457SAndroid Build Coastguard Worker } 6378*4bdc9457SAndroid Build Coastguard Worker } 6379*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,c_div_16_with_qmax)6380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, c_div_16_with_qmax) { 6381*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6382*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6383*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6384*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6385*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6386*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6387*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6388*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6389*4bdc9457SAndroid Build Coastguard Worker } 6390*4bdc9457SAndroid Build Coastguard Worker } 6391*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,c_lt_16)6392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, c_lt_16) { 6393*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6394*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 6395*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6396*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6397*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6398*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6399*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6400*4bdc9457SAndroid Build Coastguard Worker } 6401*4bdc9457SAndroid Build Coastguard Worker } 6402*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,c_gt_16)6403*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, c_gt_16) { 6404*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6405*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6406*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6407*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6408*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6409*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6410*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6411*4bdc9457SAndroid Build Coastguard Worker } 6412*4bdc9457SAndroid Build Coastguard Worker } 6413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,c_gt_16_with_qmin)6414*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, c_gt_16_with_qmin) { 6415*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6416*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6417*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6418*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6419*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6420*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6421*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6422*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6423*4bdc9457SAndroid Build Coastguard Worker } 6424*4bdc9457SAndroid Build Coastguard Worker } 6425*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,c_gt_16_with_qmax)6426*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, c_gt_16_with_qmax) { 6427*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6428*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6429*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6430*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6431*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6432*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6433*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6434*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6435*4bdc9457SAndroid Build Coastguard Worker } 6436*4bdc9457SAndroid Build Coastguard Worker } 6437*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,multipixel)6438*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, multipixel) { 6439*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6440*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6441*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6442*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6443*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6444*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6445*4bdc9457SAndroid Build Coastguard Worker .width(3) 6446*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6447*4bdc9457SAndroid Build Coastguard Worker } 6448*4bdc9457SAndroid Build Coastguard Worker } 6449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,multipixel_with_step)6450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, multipixel_with_step) { 6451*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6452*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6453*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 6454*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6455*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6456*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6457*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6458*4bdc9457SAndroid Build Coastguard Worker .width(3) 6459*4bdc9457SAndroid Build Coastguard Worker .step(step) 6460*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6461*4bdc9457SAndroid Build Coastguard Worker } 6462*4bdc9457SAndroid Build Coastguard Worker } 6463*4bdc9457SAndroid Build Coastguard Worker } 6464*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,multipixel_with_output_stride)6465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, multipixel_with_output_stride) { 6466*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6467*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6468*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6469*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6470*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6471*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6472*4bdc9457SAndroid Build Coastguard Worker .width(5) 6473*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 6474*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6475*4bdc9457SAndroid Build Coastguard Worker } 6476*4bdc9457SAndroid Build Coastguard Worker } 6477*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,multipixel_with_qmin)6478*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, multipixel_with_qmin) { 6479*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6480*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6481*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6482*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6483*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6484*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6485*4bdc9457SAndroid Build Coastguard Worker .width(3) 6486*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6487*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6488*4bdc9457SAndroid Build Coastguard Worker } 6489*4bdc9457SAndroid Build Coastguard Worker } 6490*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,multipixel_with_qmax)6491*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, multipixel_with_qmax) { 6492*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6493*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6494*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6495*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6496*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6497*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6498*4bdc9457SAndroid Build Coastguard Worker .width(3) 6499*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6500*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6501*4bdc9457SAndroid Build Coastguard Worker } 6502*4bdc9457SAndroid Build Coastguard Worker } 6503*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,input_offset)6504*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, input_offset) { 6505*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6506*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6507*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6508*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6509*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6510*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6511*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6512*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6513*4bdc9457SAndroid Build Coastguard Worker } 6514*4bdc9457SAndroid Build Coastguard Worker } 6515*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3,zero)6516*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3, zero) { 6517*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6518*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 6519*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6520*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6521*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6522*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6523*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6524*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6525*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 6526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3, xnn_init_f16_minmax_avx_params); 6527*4bdc9457SAndroid Build Coastguard Worker } 6528*4bdc9457SAndroid Build Coastguard Worker } 6529*4bdc9457SAndroid Build Coastguard Worker } 6530*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 6531*4bdc9457SAndroid Build Coastguard Worker 6532*4bdc9457SAndroid Build Coastguard Worker 6533*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,c_eq_16)6534*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, c_eq_16) { 6535*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6536*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6537*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6538*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6539*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6540*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6541*4bdc9457SAndroid Build Coastguard Worker } 6542*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,c_div_16)6543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, c_div_16) { 6544*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6545*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6546*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6547*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6548*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6549*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6550*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6551*4bdc9457SAndroid Build Coastguard Worker } 6552*4bdc9457SAndroid Build Coastguard Worker } 6553*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,c_div_16_with_qmin)6554*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, c_div_16_with_qmin) { 6555*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6556*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6557*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6558*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6559*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6560*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6561*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6562*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6563*4bdc9457SAndroid Build Coastguard Worker } 6564*4bdc9457SAndroid Build Coastguard Worker } 6565*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,c_div_16_with_qmax)6566*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, c_div_16_with_qmax) { 6567*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6568*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6569*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6570*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6571*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6572*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6573*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6575*4bdc9457SAndroid Build Coastguard Worker } 6576*4bdc9457SAndroid Build Coastguard Worker } 6577*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,c_lt_16)6578*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, c_lt_16) { 6579*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6580*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 6581*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6582*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6583*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6584*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6585*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6586*4bdc9457SAndroid Build Coastguard Worker } 6587*4bdc9457SAndroid Build Coastguard Worker } 6588*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,c_gt_16)6589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, c_gt_16) { 6590*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6591*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6592*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6593*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6594*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6595*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6596*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6597*4bdc9457SAndroid Build Coastguard Worker } 6598*4bdc9457SAndroid Build Coastguard Worker } 6599*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,c_gt_16_with_qmin)6600*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, c_gt_16_with_qmin) { 6601*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6602*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6603*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6604*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6605*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6606*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6607*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6608*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6609*4bdc9457SAndroid Build Coastguard Worker } 6610*4bdc9457SAndroid Build Coastguard Worker } 6611*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,c_gt_16_with_qmax)6612*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, c_gt_16_with_qmax) { 6613*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6614*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6615*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6616*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6617*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6618*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6619*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6621*4bdc9457SAndroid Build Coastguard Worker } 6622*4bdc9457SAndroid Build Coastguard Worker } 6623*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,multipixel)6624*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, multipixel) { 6625*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6626*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6627*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6628*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6629*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6630*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6631*4bdc9457SAndroid Build Coastguard Worker .width(3) 6632*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6633*4bdc9457SAndroid Build Coastguard Worker } 6634*4bdc9457SAndroid Build Coastguard Worker } 6635*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,multipixel_with_step)6636*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, multipixel_with_step) { 6637*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6638*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6639*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 6640*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6641*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6642*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6643*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6644*4bdc9457SAndroid Build Coastguard Worker .width(3) 6645*4bdc9457SAndroid Build Coastguard Worker .step(step) 6646*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6647*4bdc9457SAndroid Build Coastguard Worker } 6648*4bdc9457SAndroid Build Coastguard Worker } 6649*4bdc9457SAndroid Build Coastguard Worker } 6650*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,multipixel_with_output_stride)6651*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, multipixel_with_output_stride) { 6652*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6653*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6654*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6655*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6656*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6657*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6658*4bdc9457SAndroid Build Coastguard Worker .width(5) 6659*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 6660*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6661*4bdc9457SAndroid Build Coastguard Worker } 6662*4bdc9457SAndroid Build Coastguard Worker } 6663*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,multipixel_with_qmin)6664*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, multipixel_with_qmin) { 6665*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6666*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6667*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6668*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6669*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6670*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6671*4bdc9457SAndroid Build Coastguard Worker .width(3) 6672*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6673*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6674*4bdc9457SAndroid Build Coastguard Worker } 6675*4bdc9457SAndroid Build Coastguard Worker } 6676*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,multipixel_with_qmax)6677*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, multipixel_with_qmax) { 6678*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6679*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6680*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6681*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6682*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6683*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6684*4bdc9457SAndroid Build Coastguard Worker .width(3) 6685*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6686*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6687*4bdc9457SAndroid Build Coastguard Worker } 6688*4bdc9457SAndroid Build Coastguard Worker } 6689*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,input_offset)6690*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, input_offset) { 6691*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6692*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6693*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6694*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6695*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6696*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6697*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6698*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6699*4bdc9457SAndroid Build Coastguard Worker } 6700*4bdc9457SAndroid Build Coastguard Worker } 6701*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2,zero)6702*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X4__FMA3_ACC2, zero) { 6703*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6704*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 6705*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6706*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6707*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6708*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6709*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6710*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6711*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 6712*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 6713*4bdc9457SAndroid Build Coastguard Worker } 6714*4bdc9457SAndroid Build Coastguard Worker } 6715*4bdc9457SAndroid Build Coastguard Worker } 6716*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 6717*4bdc9457SAndroid Build Coastguard Worker 6718*4bdc9457SAndroid Build Coastguard Worker 6719*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,c_eq_16)6720*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, c_eq_16) { 6721*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6722*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6723*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6724*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6725*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6726*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6727*4bdc9457SAndroid Build Coastguard Worker } 6728*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,c_div_16)6729*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, c_div_16) { 6730*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6731*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6732*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6733*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6734*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6735*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6736*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6737*4bdc9457SAndroid Build Coastguard Worker } 6738*4bdc9457SAndroid Build Coastguard Worker } 6739*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,c_div_16_with_qmin)6740*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, c_div_16_with_qmin) { 6741*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6742*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6743*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6744*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6745*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6746*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6747*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6748*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6749*4bdc9457SAndroid Build Coastguard Worker } 6750*4bdc9457SAndroid Build Coastguard Worker } 6751*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,c_div_16_with_qmax)6752*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, c_div_16_with_qmax) { 6753*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6754*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6755*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6756*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6757*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6758*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6759*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6760*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6761*4bdc9457SAndroid Build Coastguard Worker } 6762*4bdc9457SAndroid Build Coastguard Worker } 6763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,c_lt_16)6764*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, c_lt_16) { 6765*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6766*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 6767*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6768*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6769*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6770*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6771*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6772*4bdc9457SAndroid Build Coastguard Worker } 6773*4bdc9457SAndroid Build Coastguard Worker } 6774*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,c_gt_16)6775*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, c_gt_16) { 6776*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6777*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6778*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6779*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6780*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6781*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6782*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6783*4bdc9457SAndroid Build Coastguard Worker } 6784*4bdc9457SAndroid Build Coastguard Worker } 6785*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,c_gt_16_with_qmin)6786*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, c_gt_16_with_qmin) { 6787*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6788*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6789*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6790*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6791*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6792*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6793*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6794*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6795*4bdc9457SAndroid Build Coastguard Worker } 6796*4bdc9457SAndroid Build Coastguard Worker } 6797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,c_gt_16_with_qmax)6798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, c_gt_16_with_qmax) { 6799*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6800*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6801*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6802*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6803*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6804*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6805*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6806*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6807*4bdc9457SAndroid Build Coastguard Worker } 6808*4bdc9457SAndroid Build Coastguard Worker } 6809*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,multipixel)6810*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, multipixel) { 6811*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6812*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6813*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6814*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6815*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6816*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6817*4bdc9457SAndroid Build Coastguard Worker .width(3) 6818*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6819*4bdc9457SAndroid Build Coastguard Worker } 6820*4bdc9457SAndroid Build Coastguard Worker } 6821*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,multipixel_with_step)6822*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, multipixel_with_step) { 6823*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6824*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6825*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 6826*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6827*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6828*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6829*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6830*4bdc9457SAndroid Build Coastguard Worker .width(3) 6831*4bdc9457SAndroid Build Coastguard Worker .step(step) 6832*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6833*4bdc9457SAndroid Build Coastguard Worker } 6834*4bdc9457SAndroid Build Coastguard Worker } 6835*4bdc9457SAndroid Build Coastguard Worker } 6836*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,multipixel_with_output_stride)6837*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, multipixel_with_output_stride) { 6838*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6839*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6840*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6841*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6842*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6843*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6844*4bdc9457SAndroid Build Coastguard Worker .width(5) 6845*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 6846*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6847*4bdc9457SAndroid Build Coastguard Worker } 6848*4bdc9457SAndroid Build Coastguard Worker } 6849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,multipixel_with_qmin)6850*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, multipixel_with_qmin) { 6851*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6852*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6853*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6854*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6855*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6856*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6857*4bdc9457SAndroid Build Coastguard Worker .width(3) 6858*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6859*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6860*4bdc9457SAndroid Build Coastguard Worker } 6861*4bdc9457SAndroid Build Coastguard Worker } 6862*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,multipixel_with_qmax)6863*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, multipixel_with_qmax) { 6864*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6865*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6866*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6867*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6868*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6869*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6870*4bdc9457SAndroid Build Coastguard Worker .width(3) 6871*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6872*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6873*4bdc9457SAndroid Build Coastguard Worker } 6874*4bdc9457SAndroid Build Coastguard Worker } 6875*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,input_offset)6876*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, input_offset) { 6877*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6878*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6879*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6880*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6881*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6882*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6883*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6884*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6885*4bdc9457SAndroid Build Coastguard Worker } 6886*4bdc9457SAndroid Build Coastguard Worker } 6887*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3,zero)6888*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3, zero) { 6889*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6890*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 6891*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6892*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6893*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6894*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6895*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6896*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 6897*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 6898*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3, xnn_init_f16_minmax_avx_params); 6899*4bdc9457SAndroid Build Coastguard Worker } 6900*4bdc9457SAndroid Build Coastguard Worker } 6901*4bdc9457SAndroid Build Coastguard Worker } 6902*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 6903*4bdc9457SAndroid Build Coastguard Worker 6904*4bdc9457SAndroid Build Coastguard Worker 6905*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,c_eq_16)6906*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, c_eq_16) { 6907*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6908*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6909*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6910*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6911*4bdc9457SAndroid Build Coastguard Worker .channels(16) 6912*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 6913*4bdc9457SAndroid Build Coastguard Worker } 6914*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,c_div_16)6915*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, c_div_16) { 6916*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6917*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6918*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6919*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6920*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6921*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 6923*4bdc9457SAndroid Build Coastguard Worker } 6924*4bdc9457SAndroid Build Coastguard Worker } 6925*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,c_div_16_with_qmin)6926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, c_div_16_with_qmin) { 6927*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6928*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6929*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6930*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6931*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6932*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6933*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6934*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 6935*4bdc9457SAndroid Build Coastguard Worker } 6936*4bdc9457SAndroid Build Coastguard Worker } 6937*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,c_div_16_with_qmax)6938*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, c_div_16_with_qmax) { 6939*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6940*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 6941*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6942*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6943*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6944*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6945*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6946*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 6947*4bdc9457SAndroid Build Coastguard Worker } 6948*4bdc9457SAndroid Build Coastguard Worker } 6949*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,c_lt_16)6950*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, c_lt_16) { 6951*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6952*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 6953*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6954*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6955*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6956*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6957*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 6958*4bdc9457SAndroid Build Coastguard Worker } 6959*4bdc9457SAndroid Build Coastguard Worker } 6960*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,c_gt_16)6961*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, c_gt_16) { 6962*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6963*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6964*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6965*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6966*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6967*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6968*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 6969*4bdc9457SAndroid Build Coastguard Worker } 6970*4bdc9457SAndroid Build Coastguard Worker } 6971*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,c_gt_16_with_qmin)6972*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, c_gt_16_with_qmin) { 6973*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6974*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6975*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6976*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6977*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6978*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6979*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6980*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 6981*4bdc9457SAndroid Build Coastguard Worker } 6982*4bdc9457SAndroid Build Coastguard Worker } 6983*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,c_gt_16_with_qmax)6984*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, c_gt_16_with_qmax) { 6985*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6986*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 6987*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 6988*4bdc9457SAndroid Build Coastguard Worker .cr(16) 6989*4bdc9457SAndroid Build Coastguard Worker .kr(9) 6990*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 6991*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6992*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 6993*4bdc9457SAndroid Build Coastguard Worker } 6994*4bdc9457SAndroid Build Coastguard Worker } 6995*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,multipixel)6996*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, multipixel) { 6997*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 6998*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 6999*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7000*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7001*4bdc9457SAndroid Build Coastguard Worker .kr(9) 7002*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7003*4bdc9457SAndroid Build Coastguard Worker .width(3) 7004*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 7005*4bdc9457SAndroid Build Coastguard Worker } 7006*4bdc9457SAndroid Build Coastguard Worker } 7007*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,multipixel_with_step)7008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, multipixel_with_step) { 7009*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7010*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7011*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 7012*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7013*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7014*4bdc9457SAndroid Build Coastguard Worker .kr(9) 7015*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7016*4bdc9457SAndroid Build Coastguard Worker .width(3) 7017*4bdc9457SAndroid Build Coastguard Worker .step(step) 7018*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 7019*4bdc9457SAndroid Build Coastguard Worker } 7020*4bdc9457SAndroid Build Coastguard Worker } 7021*4bdc9457SAndroid Build Coastguard Worker } 7022*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,multipixel_with_output_stride)7023*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, multipixel_with_output_stride) { 7024*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7025*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7026*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7027*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7028*4bdc9457SAndroid Build Coastguard Worker .kr(9) 7029*4bdc9457SAndroid Build Coastguard Worker .channels(16) 7030*4bdc9457SAndroid Build Coastguard Worker .width(5) 7031*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 7032*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 7033*4bdc9457SAndroid Build Coastguard Worker } 7034*4bdc9457SAndroid Build Coastguard Worker } 7035*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,multipixel_with_qmin)7036*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, multipixel_with_qmin) { 7037*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7038*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7039*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7040*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7041*4bdc9457SAndroid Build Coastguard Worker .kr(9) 7042*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7043*4bdc9457SAndroid Build Coastguard Worker .width(3) 7044*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7045*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 7046*4bdc9457SAndroid Build Coastguard Worker } 7047*4bdc9457SAndroid Build Coastguard Worker } 7048*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,multipixel_with_qmax)7049*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, multipixel_with_qmax) { 7050*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7051*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7052*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7053*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7054*4bdc9457SAndroid Build Coastguard Worker .kr(9) 7055*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7056*4bdc9457SAndroid Build Coastguard Worker .width(3) 7057*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 7059*4bdc9457SAndroid Build Coastguard Worker } 7060*4bdc9457SAndroid Build Coastguard Worker } 7061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,input_offset)7062*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, input_offset) { 7063*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7064*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7065*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7066*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7067*4bdc9457SAndroid Build Coastguard Worker .kr(9) 7068*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7069*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 7070*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 7071*4bdc9457SAndroid Build Coastguard Worker } 7072*4bdc9457SAndroid Build Coastguard Worker } 7073*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2,zero)7074*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X9__FMA3_ACC2, zero) { 7075*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7076*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 7077*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7078*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7079*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7080*4bdc9457SAndroid Build Coastguard Worker .kr(9) 7081*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7082*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 7083*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 7084*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 7085*4bdc9457SAndroid Build Coastguard Worker } 7086*4bdc9457SAndroid Build Coastguard Worker } 7087*4bdc9457SAndroid Build Coastguard Worker } 7088*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 7089*4bdc9457SAndroid Build Coastguard Worker 7090*4bdc9457SAndroid Build Coastguard Worker 7091*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,c_eq_16)7092*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, c_eq_16) { 7093*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7094*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7095*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7096*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7097*4bdc9457SAndroid Build Coastguard Worker .channels(16) 7098*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7099*4bdc9457SAndroid Build Coastguard Worker } 7100*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,c_div_16)7101*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, c_div_16) { 7102*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7103*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7104*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7105*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7106*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7107*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7109*4bdc9457SAndroid Build Coastguard Worker } 7110*4bdc9457SAndroid Build Coastguard Worker } 7111*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,c_div_16_with_qmin)7112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, c_div_16_with_qmin) { 7113*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7114*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7115*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7116*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7117*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7118*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7119*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7120*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7121*4bdc9457SAndroid Build Coastguard Worker } 7122*4bdc9457SAndroid Build Coastguard Worker } 7123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,c_div_16_with_qmax)7124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, c_div_16_with_qmax) { 7125*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7126*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7127*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7128*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7129*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7130*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7131*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7133*4bdc9457SAndroid Build Coastguard Worker } 7134*4bdc9457SAndroid Build Coastguard Worker } 7135*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,c_lt_16)7136*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, c_lt_16) { 7137*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7138*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 7139*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7140*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7141*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7142*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7143*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7144*4bdc9457SAndroid Build Coastguard Worker } 7145*4bdc9457SAndroid Build Coastguard Worker } 7146*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,c_gt_16)7147*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, c_gt_16) { 7148*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7149*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 7150*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7151*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7152*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7153*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7154*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7155*4bdc9457SAndroid Build Coastguard Worker } 7156*4bdc9457SAndroid Build Coastguard Worker } 7157*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,c_gt_16_with_qmin)7158*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, c_gt_16_with_qmin) { 7159*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7160*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 7161*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7162*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7163*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7164*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7165*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7166*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7167*4bdc9457SAndroid Build Coastguard Worker } 7168*4bdc9457SAndroid Build Coastguard Worker } 7169*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,c_gt_16_with_qmax)7170*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, c_gt_16_with_qmax) { 7171*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7172*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 7173*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7174*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7175*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7176*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7177*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7178*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7179*4bdc9457SAndroid Build Coastguard Worker } 7180*4bdc9457SAndroid Build Coastguard Worker } 7181*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,multipixel)7182*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, multipixel) { 7183*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7184*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7185*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7186*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7187*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7188*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7189*4bdc9457SAndroid Build Coastguard Worker .width(3) 7190*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7191*4bdc9457SAndroid Build Coastguard Worker } 7192*4bdc9457SAndroid Build Coastguard Worker } 7193*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,multipixel_with_step)7194*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, multipixel_with_step) { 7195*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7196*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7197*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 7198*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7199*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7200*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7201*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7202*4bdc9457SAndroid Build Coastguard Worker .width(3) 7203*4bdc9457SAndroid Build Coastguard Worker .step(step) 7204*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7205*4bdc9457SAndroid Build Coastguard Worker } 7206*4bdc9457SAndroid Build Coastguard Worker } 7207*4bdc9457SAndroid Build Coastguard Worker } 7208*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,multipixel_with_output_stride)7209*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, multipixel_with_output_stride) { 7210*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7211*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7212*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7213*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7214*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7215*4bdc9457SAndroid Build Coastguard Worker .channels(16) 7216*4bdc9457SAndroid Build Coastguard Worker .width(5) 7217*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 7218*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7219*4bdc9457SAndroid Build Coastguard Worker } 7220*4bdc9457SAndroid Build Coastguard Worker } 7221*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,multipixel_with_qmin)7222*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, multipixel_with_qmin) { 7223*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7224*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7225*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7226*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7227*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7228*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7229*4bdc9457SAndroid Build Coastguard Worker .width(3) 7230*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7231*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7232*4bdc9457SAndroid Build Coastguard Worker } 7233*4bdc9457SAndroid Build Coastguard Worker } 7234*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,multipixel_with_qmax)7235*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, multipixel_with_qmax) { 7236*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7237*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7238*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7239*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7240*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7241*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7242*4bdc9457SAndroid Build Coastguard Worker .width(3) 7243*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7244*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7245*4bdc9457SAndroid Build Coastguard Worker } 7246*4bdc9457SAndroid Build Coastguard Worker } 7247*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,input_offset)7248*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, input_offset) { 7249*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7250*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7251*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7252*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7253*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7254*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7255*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 7256*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7257*4bdc9457SAndroid Build Coastguard Worker } 7258*4bdc9457SAndroid Build Coastguard Worker } 7259*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3,zero)7260*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3, zero) { 7261*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7262*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 7263*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7264*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7265*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7266*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7267*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7268*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 7269*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 7270*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3, xnn_init_f16_minmax_avx_params); 7271*4bdc9457SAndroid Build Coastguard Worker } 7272*4bdc9457SAndroid Build Coastguard Worker } 7273*4bdc9457SAndroid Build Coastguard Worker } 7274*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 7275*4bdc9457SAndroid Build Coastguard Worker 7276*4bdc9457SAndroid Build Coastguard Worker 7277*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,c_eq_16)7278*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, c_eq_16) { 7279*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7280*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7281*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7282*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7283*4bdc9457SAndroid Build Coastguard Worker .channels(16) 7284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7285*4bdc9457SAndroid Build Coastguard Worker } 7286*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,c_div_16)7287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, c_div_16) { 7288*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7289*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7290*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7291*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7292*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7293*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7294*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7295*4bdc9457SAndroid Build Coastguard Worker } 7296*4bdc9457SAndroid Build Coastguard Worker } 7297*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,c_div_16_with_qmin)7298*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, c_div_16_with_qmin) { 7299*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7300*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7301*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7302*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7303*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7304*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7305*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7306*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7307*4bdc9457SAndroid Build Coastguard Worker } 7308*4bdc9457SAndroid Build Coastguard Worker } 7309*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,c_div_16_with_qmax)7310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, c_div_16_with_qmax) { 7311*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7312*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7313*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7314*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7315*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7316*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7317*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7319*4bdc9457SAndroid Build Coastguard Worker } 7320*4bdc9457SAndroid Build Coastguard Worker } 7321*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,c_lt_16)7322*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, c_lt_16) { 7323*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7324*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 16; channels++) { 7325*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7326*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7327*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7328*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7329*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7330*4bdc9457SAndroid Build Coastguard Worker } 7331*4bdc9457SAndroid Build Coastguard Worker } 7332*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,c_gt_16)7333*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, c_gt_16) { 7334*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7335*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 7336*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7337*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7338*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7339*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7340*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7341*4bdc9457SAndroid Build Coastguard Worker } 7342*4bdc9457SAndroid Build Coastguard Worker } 7343*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,c_gt_16_with_qmin)7344*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, c_gt_16_with_qmin) { 7345*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7346*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 7347*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7348*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7349*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7350*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7351*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7352*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7353*4bdc9457SAndroid Build Coastguard Worker } 7354*4bdc9457SAndroid Build Coastguard Worker } 7355*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,c_gt_16_with_qmax)7356*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, c_gt_16_with_qmax) { 7357*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7358*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 17; channels < 32; channels++) { 7359*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7360*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7361*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7362*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7363*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7364*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7365*4bdc9457SAndroid Build Coastguard Worker } 7366*4bdc9457SAndroid Build Coastguard Worker } 7367*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,multipixel)7368*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, multipixel) { 7369*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7370*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7371*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7372*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7373*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7374*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7375*4bdc9457SAndroid Build Coastguard Worker .width(3) 7376*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7377*4bdc9457SAndroid Build Coastguard Worker } 7378*4bdc9457SAndroid Build Coastguard Worker } 7379*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,multipixel_with_step)7380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, multipixel_with_step) { 7381*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7382*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7383*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 7384*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7385*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7386*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7387*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7388*4bdc9457SAndroid Build Coastguard Worker .width(3) 7389*4bdc9457SAndroid Build Coastguard Worker .step(step) 7390*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7391*4bdc9457SAndroid Build Coastguard Worker } 7392*4bdc9457SAndroid Build Coastguard Worker } 7393*4bdc9457SAndroid Build Coastguard Worker } 7394*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,multipixel_with_output_stride)7395*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, multipixel_with_output_stride) { 7396*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7397*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7398*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7399*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7400*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7401*4bdc9457SAndroid Build Coastguard Worker .channels(16) 7402*4bdc9457SAndroid Build Coastguard Worker .width(5) 7403*4bdc9457SAndroid Build Coastguard Worker .output_stride(83) 7404*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7405*4bdc9457SAndroid Build Coastguard Worker } 7406*4bdc9457SAndroid Build Coastguard Worker } 7407*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,multipixel_with_qmin)7408*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, multipixel_with_qmin) { 7409*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7410*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7411*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7412*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7413*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7414*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7415*4bdc9457SAndroid Build Coastguard Worker .width(3) 7416*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7417*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7418*4bdc9457SAndroid Build Coastguard Worker } 7419*4bdc9457SAndroid Build Coastguard Worker } 7420*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,multipixel_with_qmax)7421*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, multipixel_with_qmax) { 7422*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7423*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 80; channels += 15) { 7424*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7425*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7426*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7427*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7428*4bdc9457SAndroid Build Coastguard Worker .width(3) 7429*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7430*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7431*4bdc9457SAndroid Build Coastguard Worker } 7432*4bdc9457SAndroid Build Coastguard Worker } 7433*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,input_offset)7434*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, input_offset) { 7435*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7436*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7437*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7438*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7439*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7440*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7441*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 7442*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7443*4bdc9457SAndroid Build Coastguard Worker } 7444*4bdc9457SAndroid Build Coastguard Worker } 7445*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2,zero)7446*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP16X25__FMA3_ACC2, zero) { 7447*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7448*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 7449*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 32; channels < 256; channels += 48) { 7450*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7451*4bdc9457SAndroid Build Coastguard Worker .cr(16) 7452*4bdc9457SAndroid Build Coastguard Worker .kr(25) 7453*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7454*4bdc9457SAndroid Build Coastguard Worker .input_offset(304) 7455*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 7456*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up16x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 7457*4bdc9457SAndroid Build Coastguard Worker } 7458*4bdc9457SAndroid Build Coastguard Worker } 7459*4bdc9457SAndroid Build Coastguard Worker } 7460*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 7461*4bdc9457SAndroid Build Coastguard Worker 7462*4bdc9457SAndroid Build Coastguard Worker 7463*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,c_eq_32)7464*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, c_eq_32) { 7465*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7466*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7467*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7468*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7469*4bdc9457SAndroid Build Coastguard Worker .channels(32) 7470*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7471*4bdc9457SAndroid Build Coastguard Worker } 7472*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,c_div_32)7473*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, c_div_32) { 7474*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7475*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7476*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7477*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7478*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7479*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7480*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7481*4bdc9457SAndroid Build Coastguard Worker } 7482*4bdc9457SAndroid Build Coastguard Worker } 7483*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,c_div_32_with_qmin)7484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, c_div_32_with_qmin) { 7485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7486*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7487*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7488*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7489*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7490*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7491*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7493*4bdc9457SAndroid Build Coastguard Worker } 7494*4bdc9457SAndroid Build Coastguard Worker } 7495*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,c_div_32_with_qmax)7496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, c_div_32_with_qmax) { 7497*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7498*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7499*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7500*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7501*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7502*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7503*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7504*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7505*4bdc9457SAndroid Build Coastguard Worker } 7506*4bdc9457SAndroid Build Coastguard Worker } 7507*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,c_lt_32)7508*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, c_lt_32) { 7509*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7510*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 7511*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7512*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7513*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7514*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7515*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7516*4bdc9457SAndroid Build Coastguard Worker } 7517*4bdc9457SAndroid Build Coastguard Worker } 7518*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,c_gt_32)7519*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, c_gt_32) { 7520*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7521*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7522*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7523*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7524*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7525*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7527*4bdc9457SAndroid Build Coastguard Worker } 7528*4bdc9457SAndroid Build Coastguard Worker } 7529*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,c_gt_32_with_qmin)7530*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, c_gt_32_with_qmin) { 7531*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7532*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7533*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7534*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7535*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7536*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7537*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7538*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7539*4bdc9457SAndroid Build Coastguard Worker } 7540*4bdc9457SAndroid Build Coastguard Worker } 7541*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,c_gt_32_with_qmax)7542*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, c_gt_32_with_qmax) { 7543*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7544*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7545*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7546*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7547*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7548*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7549*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7550*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7551*4bdc9457SAndroid Build Coastguard Worker } 7552*4bdc9457SAndroid Build Coastguard Worker } 7553*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,multipixel)7554*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, multipixel) { 7555*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7556*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7557*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7558*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7559*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7560*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7561*4bdc9457SAndroid Build Coastguard Worker .width(3) 7562*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7563*4bdc9457SAndroid Build Coastguard Worker } 7564*4bdc9457SAndroid Build Coastguard Worker } 7565*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,multipixel_with_step)7566*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, multipixel_with_step) { 7567*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7568*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7569*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 7570*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7571*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7572*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7573*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7574*4bdc9457SAndroid Build Coastguard Worker .width(3) 7575*4bdc9457SAndroid Build Coastguard Worker .step(step) 7576*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7577*4bdc9457SAndroid Build Coastguard Worker } 7578*4bdc9457SAndroid Build Coastguard Worker } 7579*4bdc9457SAndroid Build Coastguard Worker } 7580*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,multipixel_with_output_stride)7581*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, multipixel_with_output_stride) { 7582*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7583*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7584*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7585*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7586*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7587*4bdc9457SAndroid Build Coastguard Worker .channels(32) 7588*4bdc9457SAndroid Build Coastguard Worker .width(5) 7589*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 7590*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7591*4bdc9457SAndroid Build Coastguard Worker } 7592*4bdc9457SAndroid Build Coastguard Worker } 7593*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,multipixel_with_qmin)7594*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, multipixel_with_qmin) { 7595*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7596*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7597*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7598*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7599*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7600*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7601*4bdc9457SAndroid Build Coastguard Worker .width(3) 7602*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7603*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7604*4bdc9457SAndroid Build Coastguard Worker } 7605*4bdc9457SAndroid Build Coastguard Worker } 7606*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,multipixel_with_qmax)7607*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, multipixel_with_qmax) { 7608*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7609*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7610*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7611*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7612*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7613*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7614*4bdc9457SAndroid Build Coastguard Worker .width(3) 7615*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7616*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7617*4bdc9457SAndroid Build Coastguard Worker } 7618*4bdc9457SAndroid Build Coastguard Worker } 7619*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,input_offset)7620*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, input_offset) { 7621*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7622*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7623*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7624*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7625*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7626*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7627*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 7628*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7629*4bdc9457SAndroid Build Coastguard Worker } 7630*4bdc9457SAndroid Build Coastguard Worker } 7631*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3,zero)7632*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3, zero) { 7633*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7634*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 7635*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7636*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7637*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7638*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7639*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7640*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 7641*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 7642*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3, xnn_init_f16_minmax_avx_params); 7643*4bdc9457SAndroid Build Coastguard Worker } 7644*4bdc9457SAndroid Build Coastguard Worker } 7645*4bdc9457SAndroid Build Coastguard Worker } 7646*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 7647*4bdc9457SAndroid Build Coastguard Worker 7648*4bdc9457SAndroid Build Coastguard Worker 7649*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,c_eq_32)7650*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, c_eq_32) { 7651*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7652*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7653*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7654*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7655*4bdc9457SAndroid Build Coastguard Worker .channels(32) 7656*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7657*4bdc9457SAndroid Build Coastguard Worker } 7658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,c_div_32)7659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, c_div_32) { 7660*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7661*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7662*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7663*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7664*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7665*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7666*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7667*4bdc9457SAndroid Build Coastguard Worker } 7668*4bdc9457SAndroid Build Coastguard Worker } 7669*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,c_div_32_with_qmin)7670*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, c_div_32_with_qmin) { 7671*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7672*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7673*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7674*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7675*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7676*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7677*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7678*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7679*4bdc9457SAndroid Build Coastguard Worker } 7680*4bdc9457SAndroid Build Coastguard Worker } 7681*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,c_div_32_with_qmax)7682*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, c_div_32_with_qmax) { 7683*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7684*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7685*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7686*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7687*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7688*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7689*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7691*4bdc9457SAndroid Build Coastguard Worker } 7692*4bdc9457SAndroid Build Coastguard Worker } 7693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,c_lt_32)7694*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, c_lt_32) { 7695*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7696*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 7697*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7698*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7699*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7700*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7701*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7702*4bdc9457SAndroid Build Coastguard Worker } 7703*4bdc9457SAndroid Build Coastguard Worker } 7704*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,c_gt_32)7705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, c_gt_32) { 7706*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7707*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7708*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7709*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7710*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7711*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7712*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7713*4bdc9457SAndroid Build Coastguard Worker } 7714*4bdc9457SAndroid Build Coastguard Worker } 7715*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,c_gt_32_with_qmin)7716*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, c_gt_32_with_qmin) { 7717*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7718*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7719*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7720*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7721*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7722*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7723*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7724*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7725*4bdc9457SAndroid Build Coastguard Worker } 7726*4bdc9457SAndroid Build Coastguard Worker } 7727*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,c_gt_32_with_qmax)7728*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, c_gt_32_with_qmax) { 7729*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7730*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7731*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7732*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7733*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7734*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7735*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7736*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7737*4bdc9457SAndroid Build Coastguard Worker } 7738*4bdc9457SAndroid Build Coastguard Worker } 7739*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,multipixel)7740*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, multipixel) { 7741*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7742*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7743*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7744*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7745*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7746*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7747*4bdc9457SAndroid Build Coastguard Worker .width(3) 7748*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7749*4bdc9457SAndroid Build Coastguard Worker } 7750*4bdc9457SAndroid Build Coastguard Worker } 7751*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,multipixel_with_step)7752*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, multipixel_with_step) { 7753*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7754*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7755*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 3; step++) { 7756*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7757*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7758*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7759*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7760*4bdc9457SAndroid Build Coastguard Worker .width(3) 7761*4bdc9457SAndroid Build Coastguard Worker .step(step) 7762*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7763*4bdc9457SAndroid Build Coastguard Worker } 7764*4bdc9457SAndroid Build Coastguard Worker } 7765*4bdc9457SAndroid Build Coastguard Worker } 7766*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,multipixel_with_output_stride)7767*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, multipixel_with_output_stride) { 7768*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7769*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7770*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7771*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7772*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7773*4bdc9457SAndroid Build Coastguard Worker .channels(32) 7774*4bdc9457SAndroid Build Coastguard Worker .width(5) 7775*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 7776*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7777*4bdc9457SAndroid Build Coastguard Worker } 7778*4bdc9457SAndroid Build Coastguard Worker } 7779*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,multipixel_with_qmin)7780*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, multipixel_with_qmin) { 7781*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7782*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7783*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7784*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7785*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7786*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7787*4bdc9457SAndroid Build Coastguard Worker .width(3) 7788*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7789*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7790*4bdc9457SAndroid Build Coastguard Worker } 7791*4bdc9457SAndroid Build Coastguard Worker } 7792*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,multipixel_with_qmax)7793*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, multipixel_with_qmax) { 7794*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7795*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7796*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7797*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7798*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7799*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7800*4bdc9457SAndroid Build Coastguard Worker .width(3) 7801*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7802*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7803*4bdc9457SAndroid Build Coastguard Worker } 7804*4bdc9457SAndroid Build Coastguard Worker } 7805*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,input_offset)7806*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, input_offset) { 7807*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7808*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7809*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7810*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7811*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7812*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7813*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 7814*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7815*4bdc9457SAndroid Build Coastguard Worker } 7816*4bdc9457SAndroid Build Coastguard Worker } 7817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2,zero)7818*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X3__FMA3_ACC2, zero) { 7819*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7820*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 7821*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7822*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7823*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7824*4bdc9457SAndroid Build Coastguard Worker .kr(3) 7825*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7826*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 7827*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 7828*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x3__fma3_acc2, xnn_init_f16_minmax_avx_params); 7829*4bdc9457SAndroid Build Coastguard Worker } 7830*4bdc9457SAndroid Build Coastguard Worker } 7831*4bdc9457SAndroid Build Coastguard Worker } 7832*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 7833*4bdc9457SAndroid Build Coastguard Worker 7834*4bdc9457SAndroid Build Coastguard Worker 7835*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,c_eq_32)7836*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, c_eq_32) { 7837*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7838*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7839*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7840*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7841*4bdc9457SAndroid Build Coastguard Worker .channels(32) 7842*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7843*4bdc9457SAndroid Build Coastguard Worker } 7844*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,c_div_32)7845*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, c_div_32) { 7846*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7847*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7848*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7849*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7850*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7851*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7852*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7853*4bdc9457SAndroid Build Coastguard Worker } 7854*4bdc9457SAndroid Build Coastguard Worker } 7855*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,c_div_32_with_qmin)7856*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, c_div_32_with_qmin) { 7857*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7858*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7859*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7860*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7861*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7862*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7863*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7864*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7865*4bdc9457SAndroid Build Coastguard Worker } 7866*4bdc9457SAndroid Build Coastguard Worker } 7867*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,c_div_32_with_qmax)7868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, c_div_32_with_qmax) { 7869*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7870*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7871*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7872*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7873*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7874*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7875*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7877*4bdc9457SAndroid Build Coastguard Worker } 7878*4bdc9457SAndroid Build Coastguard Worker } 7879*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,c_lt_32)7880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, c_lt_32) { 7881*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7882*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 7883*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7884*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7885*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7886*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7887*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7888*4bdc9457SAndroid Build Coastguard Worker } 7889*4bdc9457SAndroid Build Coastguard Worker } 7890*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,c_gt_32)7891*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, c_gt_32) { 7892*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7893*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7894*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7895*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7896*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7897*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7898*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7899*4bdc9457SAndroid Build Coastguard Worker } 7900*4bdc9457SAndroid Build Coastguard Worker } 7901*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,c_gt_32_with_qmin)7902*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, c_gt_32_with_qmin) { 7903*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7904*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7905*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7906*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7907*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7908*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7909*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7910*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7911*4bdc9457SAndroid Build Coastguard Worker } 7912*4bdc9457SAndroid Build Coastguard Worker } 7913*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,c_gt_32_with_qmax)7914*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, c_gt_32_with_qmax) { 7915*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7916*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 7917*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7918*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7919*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7920*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7921*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7923*4bdc9457SAndroid Build Coastguard Worker } 7924*4bdc9457SAndroid Build Coastguard Worker } 7925*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,multipixel)7926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, multipixel) { 7927*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7928*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7929*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7930*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7931*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7932*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7933*4bdc9457SAndroid Build Coastguard Worker .width(3) 7934*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7935*4bdc9457SAndroid Build Coastguard Worker } 7936*4bdc9457SAndroid Build Coastguard Worker } 7937*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,multipixel_with_step)7938*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, multipixel_with_step) { 7939*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7940*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7941*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 7942*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7943*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7944*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7945*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7946*4bdc9457SAndroid Build Coastguard Worker .width(3) 7947*4bdc9457SAndroid Build Coastguard Worker .step(step) 7948*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7949*4bdc9457SAndroid Build Coastguard Worker } 7950*4bdc9457SAndroid Build Coastguard Worker } 7951*4bdc9457SAndroid Build Coastguard Worker } 7952*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,multipixel_with_output_stride)7953*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, multipixel_with_output_stride) { 7954*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7955*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7956*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7957*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7958*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7959*4bdc9457SAndroid Build Coastguard Worker .channels(32) 7960*4bdc9457SAndroid Build Coastguard Worker .width(5) 7961*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 7962*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7963*4bdc9457SAndroid Build Coastguard Worker } 7964*4bdc9457SAndroid Build Coastguard Worker } 7965*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,multipixel_with_qmin)7966*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, multipixel_with_qmin) { 7967*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7968*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7969*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7970*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7971*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7972*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7973*4bdc9457SAndroid Build Coastguard Worker .width(3) 7974*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7975*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7976*4bdc9457SAndroid Build Coastguard Worker } 7977*4bdc9457SAndroid Build Coastguard Worker } 7978*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,multipixel_with_qmax)7979*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, multipixel_with_qmax) { 7980*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7981*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 7982*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7983*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7984*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7985*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7986*4bdc9457SAndroid Build Coastguard Worker .width(3) 7987*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7988*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 7989*4bdc9457SAndroid Build Coastguard Worker } 7990*4bdc9457SAndroid Build Coastguard Worker } 7991*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,input_offset)7992*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, input_offset) { 7993*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 7994*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 7995*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 7996*4bdc9457SAndroid Build Coastguard Worker .cr(32) 7997*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7998*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 7999*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8000*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 8001*4bdc9457SAndroid Build Coastguard Worker } 8002*4bdc9457SAndroid Build Coastguard Worker } 8003*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3,zero)8004*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3, zero) { 8005*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8006*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 8007*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8008*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8009*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8010*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8011*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8012*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8013*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 8014*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3, xnn_init_f16_minmax_avx_params); 8015*4bdc9457SAndroid Build Coastguard Worker } 8016*4bdc9457SAndroid Build Coastguard Worker } 8017*4bdc9457SAndroid Build Coastguard Worker } 8018*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 8019*4bdc9457SAndroid Build Coastguard Worker 8020*4bdc9457SAndroid Build Coastguard Worker 8021*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,c_eq_32)8022*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, c_eq_32) { 8023*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8024*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8025*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8026*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8027*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8028*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8029*4bdc9457SAndroid Build Coastguard Worker } 8030*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,c_div_32)8031*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, c_div_32) { 8032*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8033*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8034*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8035*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8036*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8037*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8038*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8039*4bdc9457SAndroid Build Coastguard Worker } 8040*4bdc9457SAndroid Build Coastguard Worker } 8041*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,c_div_32_with_qmin)8042*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, c_div_32_with_qmin) { 8043*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8044*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8045*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8046*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8047*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8048*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8049*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8050*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8051*4bdc9457SAndroid Build Coastguard Worker } 8052*4bdc9457SAndroid Build Coastguard Worker } 8053*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,c_div_32_with_qmax)8054*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, c_div_32_with_qmax) { 8055*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8056*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8057*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8058*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8059*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8060*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8061*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8063*4bdc9457SAndroid Build Coastguard Worker } 8064*4bdc9457SAndroid Build Coastguard Worker } 8065*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,c_lt_32)8066*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, c_lt_32) { 8067*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8068*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 8069*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8070*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8071*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8072*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8073*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8074*4bdc9457SAndroid Build Coastguard Worker } 8075*4bdc9457SAndroid Build Coastguard Worker } 8076*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,c_gt_32)8077*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, c_gt_32) { 8078*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8079*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8080*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8081*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8082*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8083*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8084*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8085*4bdc9457SAndroid Build Coastguard Worker } 8086*4bdc9457SAndroid Build Coastguard Worker } 8087*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,c_gt_32_with_qmin)8088*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, c_gt_32_with_qmin) { 8089*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8090*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8091*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8092*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8093*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8094*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8095*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8096*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8097*4bdc9457SAndroid Build Coastguard Worker } 8098*4bdc9457SAndroid Build Coastguard Worker } 8099*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,c_gt_32_with_qmax)8100*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, c_gt_32_with_qmax) { 8101*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8102*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8103*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8104*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8105*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8106*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8107*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8109*4bdc9457SAndroid Build Coastguard Worker } 8110*4bdc9457SAndroid Build Coastguard Worker } 8111*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,multipixel)8112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, multipixel) { 8113*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8114*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8115*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8116*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8117*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8118*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8119*4bdc9457SAndroid Build Coastguard Worker .width(3) 8120*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8121*4bdc9457SAndroid Build Coastguard Worker } 8122*4bdc9457SAndroid Build Coastguard Worker } 8123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,multipixel_with_step)8124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, multipixel_with_step) { 8125*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8126*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8127*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 4; step++) { 8128*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8129*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8130*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8131*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8132*4bdc9457SAndroid Build Coastguard Worker .width(3) 8133*4bdc9457SAndroid Build Coastguard Worker .step(step) 8134*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8135*4bdc9457SAndroid Build Coastguard Worker } 8136*4bdc9457SAndroid Build Coastguard Worker } 8137*4bdc9457SAndroid Build Coastguard Worker } 8138*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,multipixel_with_output_stride)8139*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, multipixel_with_output_stride) { 8140*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8141*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8142*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8143*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8144*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8145*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8146*4bdc9457SAndroid Build Coastguard Worker .width(5) 8147*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 8148*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8149*4bdc9457SAndroid Build Coastguard Worker } 8150*4bdc9457SAndroid Build Coastguard Worker } 8151*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,multipixel_with_qmin)8152*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, multipixel_with_qmin) { 8153*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8154*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8155*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8156*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8157*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8158*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8159*4bdc9457SAndroid Build Coastguard Worker .width(3) 8160*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8161*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8162*4bdc9457SAndroid Build Coastguard Worker } 8163*4bdc9457SAndroid Build Coastguard Worker } 8164*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,multipixel_with_qmax)8165*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, multipixel_with_qmax) { 8166*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8167*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8168*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8169*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8170*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8171*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8172*4bdc9457SAndroid Build Coastguard Worker .width(3) 8173*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8174*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8175*4bdc9457SAndroid Build Coastguard Worker } 8176*4bdc9457SAndroid Build Coastguard Worker } 8177*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,input_offset)8178*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, input_offset) { 8179*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8180*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8181*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8182*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8183*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8184*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8185*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8187*4bdc9457SAndroid Build Coastguard Worker } 8188*4bdc9457SAndroid Build Coastguard Worker } 8189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2,zero)8190*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X4__FMA3_ACC2, zero) { 8191*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8192*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 8193*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8194*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8195*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8196*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8197*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8198*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8199*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 8200*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x4__fma3_acc2, xnn_init_f16_minmax_avx_params); 8201*4bdc9457SAndroid Build Coastguard Worker } 8202*4bdc9457SAndroid Build Coastguard Worker } 8203*4bdc9457SAndroid Build Coastguard Worker } 8204*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 8205*4bdc9457SAndroid Build Coastguard Worker 8206*4bdc9457SAndroid Build Coastguard Worker 8207*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,c_eq_32)8208*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, c_eq_32) { 8209*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8210*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8211*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8212*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8213*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8214*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8215*4bdc9457SAndroid Build Coastguard Worker } 8216*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,c_div_32)8217*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, c_div_32) { 8218*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8219*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8220*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8221*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8222*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8223*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8224*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8225*4bdc9457SAndroid Build Coastguard Worker } 8226*4bdc9457SAndroid Build Coastguard Worker } 8227*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,c_div_32_with_qmin)8228*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, c_div_32_with_qmin) { 8229*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8230*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8231*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8232*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8233*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8234*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8235*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8236*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8237*4bdc9457SAndroid Build Coastguard Worker } 8238*4bdc9457SAndroid Build Coastguard Worker } 8239*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,c_div_32_with_qmax)8240*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, c_div_32_with_qmax) { 8241*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8242*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8243*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8244*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8245*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8246*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8247*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8249*4bdc9457SAndroid Build Coastguard Worker } 8250*4bdc9457SAndroid Build Coastguard Worker } 8251*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,c_lt_32)8252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, c_lt_32) { 8253*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8254*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 8255*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8256*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8257*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8258*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8259*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8260*4bdc9457SAndroid Build Coastguard Worker } 8261*4bdc9457SAndroid Build Coastguard Worker } 8262*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,c_gt_32)8263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, c_gt_32) { 8264*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8265*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8266*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8267*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8268*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8269*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8270*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8271*4bdc9457SAndroid Build Coastguard Worker } 8272*4bdc9457SAndroid Build Coastguard Worker } 8273*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,c_gt_32_with_qmin)8274*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, c_gt_32_with_qmin) { 8275*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8276*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8277*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8278*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8279*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8280*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8281*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8282*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8283*4bdc9457SAndroid Build Coastguard Worker } 8284*4bdc9457SAndroid Build Coastguard Worker } 8285*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,c_gt_32_with_qmax)8286*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, c_gt_32_with_qmax) { 8287*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8288*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8289*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8290*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8291*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8292*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8293*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8294*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8295*4bdc9457SAndroid Build Coastguard Worker } 8296*4bdc9457SAndroid Build Coastguard Worker } 8297*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,multipixel)8298*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, multipixel) { 8299*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8300*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8301*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8302*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8303*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8304*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8305*4bdc9457SAndroid Build Coastguard Worker .width(3) 8306*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8307*4bdc9457SAndroid Build Coastguard Worker } 8308*4bdc9457SAndroid Build Coastguard Worker } 8309*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,multipixel_with_step)8310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, multipixel_with_step) { 8311*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8312*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8313*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 8314*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8315*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8316*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8317*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8318*4bdc9457SAndroid Build Coastguard Worker .width(3) 8319*4bdc9457SAndroid Build Coastguard Worker .step(step) 8320*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8321*4bdc9457SAndroid Build Coastguard Worker } 8322*4bdc9457SAndroid Build Coastguard Worker } 8323*4bdc9457SAndroid Build Coastguard Worker } 8324*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,multipixel_with_output_stride)8325*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, multipixel_with_output_stride) { 8326*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8327*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8328*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8329*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8330*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8331*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8332*4bdc9457SAndroid Build Coastguard Worker .width(5) 8333*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 8334*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8335*4bdc9457SAndroid Build Coastguard Worker } 8336*4bdc9457SAndroid Build Coastguard Worker } 8337*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,multipixel_with_qmin)8338*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, multipixel_with_qmin) { 8339*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8340*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8341*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8342*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8343*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8344*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8345*4bdc9457SAndroid Build Coastguard Worker .width(3) 8346*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8347*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8348*4bdc9457SAndroid Build Coastguard Worker } 8349*4bdc9457SAndroid Build Coastguard Worker } 8350*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,multipixel_with_qmax)8351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, multipixel_with_qmax) { 8352*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8353*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8354*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8355*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8356*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8357*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8358*4bdc9457SAndroid Build Coastguard Worker .width(3) 8359*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8360*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8361*4bdc9457SAndroid Build Coastguard Worker } 8362*4bdc9457SAndroid Build Coastguard Worker } 8363*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,input_offset)8364*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, input_offset) { 8365*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8366*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8367*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8368*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8369*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8370*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8371*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8372*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8373*4bdc9457SAndroid Build Coastguard Worker } 8374*4bdc9457SAndroid Build Coastguard Worker } 8375*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3,zero)8376*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3, zero) { 8377*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8378*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 8379*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8380*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8381*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8382*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8383*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8384*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8385*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 8386*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3, xnn_init_f16_minmax_avx_params); 8387*4bdc9457SAndroid Build Coastguard Worker } 8388*4bdc9457SAndroid Build Coastguard Worker } 8389*4bdc9457SAndroid Build Coastguard Worker } 8390*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 8391*4bdc9457SAndroid Build Coastguard Worker 8392*4bdc9457SAndroid Build Coastguard Worker 8393*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,c_eq_32)8394*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, c_eq_32) { 8395*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8396*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8397*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8398*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8399*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8400*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8401*4bdc9457SAndroid Build Coastguard Worker } 8402*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,c_div_32)8403*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, c_div_32) { 8404*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8405*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8406*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8407*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8408*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8409*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8410*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8411*4bdc9457SAndroid Build Coastguard Worker } 8412*4bdc9457SAndroid Build Coastguard Worker } 8413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,c_div_32_with_qmin)8414*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, c_div_32_with_qmin) { 8415*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8416*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8417*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8418*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8419*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8420*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8421*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8422*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8423*4bdc9457SAndroid Build Coastguard Worker } 8424*4bdc9457SAndroid Build Coastguard Worker } 8425*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,c_div_32_with_qmax)8426*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, c_div_32_with_qmax) { 8427*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8428*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8429*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8430*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8431*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8432*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8433*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8434*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8435*4bdc9457SAndroid Build Coastguard Worker } 8436*4bdc9457SAndroid Build Coastguard Worker } 8437*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,c_lt_32)8438*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, c_lt_32) { 8439*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8440*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 8441*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8442*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8443*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8444*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8445*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8446*4bdc9457SAndroid Build Coastguard Worker } 8447*4bdc9457SAndroid Build Coastguard Worker } 8448*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,c_gt_32)8449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, c_gt_32) { 8450*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8451*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8452*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8453*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8454*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8455*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8456*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8457*4bdc9457SAndroid Build Coastguard Worker } 8458*4bdc9457SAndroid Build Coastguard Worker } 8459*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,c_gt_32_with_qmin)8460*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, c_gt_32_with_qmin) { 8461*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8462*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8463*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8464*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8465*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8466*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8467*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8468*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8469*4bdc9457SAndroid Build Coastguard Worker } 8470*4bdc9457SAndroid Build Coastguard Worker } 8471*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,c_gt_32_with_qmax)8472*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, c_gt_32_with_qmax) { 8473*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8474*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8475*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8476*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8477*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8478*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8479*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8480*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8481*4bdc9457SAndroid Build Coastguard Worker } 8482*4bdc9457SAndroid Build Coastguard Worker } 8483*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,multipixel)8484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, multipixel) { 8485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8486*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8487*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8488*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8489*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8490*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8491*4bdc9457SAndroid Build Coastguard Worker .width(3) 8492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8493*4bdc9457SAndroid Build Coastguard Worker } 8494*4bdc9457SAndroid Build Coastguard Worker } 8495*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,multipixel_with_step)8496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, multipixel_with_step) { 8497*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8498*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8499*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 9; step++) { 8500*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8501*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8502*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8503*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8504*4bdc9457SAndroid Build Coastguard Worker .width(3) 8505*4bdc9457SAndroid Build Coastguard Worker .step(step) 8506*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8507*4bdc9457SAndroid Build Coastguard Worker } 8508*4bdc9457SAndroid Build Coastguard Worker } 8509*4bdc9457SAndroid Build Coastguard Worker } 8510*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,multipixel_with_output_stride)8511*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, multipixel_with_output_stride) { 8512*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8513*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8514*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8515*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8516*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8517*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8518*4bdc9457SAndroid Build Coastguard Worker .width(5) 8519*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 8520*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8521*4bdc9457SAndroid Build Coastguard Worker } 8522*4bdc9457SAndroid Build Coastguard Worker } 8523*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,multipixel_with_qmin)8524*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, multipixel_with_qmin) { 8525*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8526*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8527*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8528*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8529*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8530*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8531*4bdc9457SAndroid Build Coastguard Worker .width(3) 8532*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8533*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8534*4bdc9457SAndroid Build Coastguard Worker } 8535*4bdc9457SAndroid Build Coastguard Worker } 8536*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,multipixel_with_qmax)8537*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, multipixel_with_qmax) { 8538*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8539*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8540*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8541*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8542*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8543*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8544*4bdc9457SAndroid Build Coastguard Worker .width(3) 8545*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8546*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8547*4bdc9457SAndroid Build Coastguard Worker } 8548*4bdc9457SAndroid Build Coastguard Worker } 8549*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,input_offset)8550*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, input_offset) { 8551*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8552*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8553*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8554*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8555*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8556*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8557*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8558*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8559*4bdc9457SAndroid Build Coastguard Worker } 8560*4bdc9457SAndroid Build Coastguard Worker } 8561*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2,zero)8562*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X9__FMA3_ACC2, zero) { 8563*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8564*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 9; mz++) { 8565*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8566*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8567*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8568*4bdc9457SAndroid Build Coastguard Worker .kr(9) 8569*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8570*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8571*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 8572*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x9__fma3_acc2, xnn_init_f16_minmax_avx_params); 8573*4bdc9457SAndroid Build Coastguard Worker } 8574*4bdc9457SAndroid Build Coastguard Worker } 8575*4bdc9457SAndroid Build Coastguard Worker } 8576*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 8577*4bdc9457SAndroid Build Coastguard Worker 8578*4bdc9457SAndroid Build Coastguard Worker 8579*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,c_eq_32)8580*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, c_eq_32) { 8581*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8582*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8583*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8584*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8585*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8586*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8587*4bdc9457SAndroid Build Coastguard Worker } 8588*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,c_div_32)8589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, c_div_32) { 8590*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8591*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8592*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8593*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8594*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8595*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8596*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8597*4bdc9457SAndroid Build Coastguard Worker } 8598*4bdc9457SAndroid Build Coastguard Worker } 8599*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,c_div_32_with_qmin)8600*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, c_div_32_with_qmin) { 8601*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8602*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8603*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8604*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8605*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8606*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8607*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8608*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8609*4bdc9457SAndroid Build Coastguard Worker } 8610*4bdc9457SAndroid Build Coastguard Worker } 8611*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,c_div_32_with_qmax)8612*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, c_div_32_with_qmax) { 8613*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8614*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8615*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8616*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8617*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8618*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8619*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8621*4bdc9457SAndroid Build Coastguard Worker } 8622*4bdc9457SAndroid Build Coastguard Worker } 8623*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,c_lt_32)8624*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, c_lt_32) { 8625*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8626*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 8627*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8628*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8629*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8630*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8631*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8632*4bdc9457SAndroid Build Coastguard Worker } 8633*4bdc9457SAndroid Build Coastguard Worker } 8634*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,c_gt_32)8635*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, c_gt_32) { 8636*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8637*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8638*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8639*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8640*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8641*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8642*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8643*4bdc9457SAndroid Build Coastguard Worker } 8644*4bdc9457SAndroid Build Coastguard Worker } 8645*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,c_gt_32_with_qmin)8646*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, c_gt_32_with_qmin) { 8647*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8648*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8649*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8650*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8651*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8652*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8653*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8654*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8655*4bdc9457SAndroid Build Coastguard Worker } 8656*4bdc9457SAndroid Build Coastguard Worker } 8657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,c_gt_32_with_qmax)8658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, c_gt_32_with_qmax) { 8659*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8660*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8661*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8662*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8663*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8664*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8665*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8666*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8667*4bdc9457SAndroid Build Coastguard Worker } 8668*4bdc9457SAndroid Build Coastguard Worker } 8669*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,multipixel)8670*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, multipixel) { 8671*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8672*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8673*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8674*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8675*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8676*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8677*4bdc9457SAndroid Build Coastguard Worker .width(3) 8678*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8679*4bdc9457SAndroid Build Coastguard Worker } 8680*4bdc9457SAndroid Build Coastguard Worker } 8681*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,multipixel_with_step)8682*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, multipixel_with_step) { 8683*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8684*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8685*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 8686*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8687*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8688*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8689*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8690*4bdc9457SAndroid Build Coastguard Worker .width(3) 8691*4bdc9457SAndroid Build Coastguard Worker .step(step) 8692*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8693*4bdc9457SAndroid Build Coastguard Worker } 8694*4bdc9457SAndroid Build Coastguard Worker } 8695*4bdc9457SAndroid Build Coastguard Worker } 8696*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,multipixel_with_output_stride)8697*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, multipixel_with_output_stride) { 8698*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8699*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8700*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8701*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8702*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8703*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8704*4bdc9457SAndroid Build Coastguard Worker .width(5) 8705*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 8706*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8707*4bdc9457SAndroid Build Coastguard Worker } 8708*4bdc9457SAndroid Build Coastguard Worker } 8709*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,multipixel_with_qmin)8710*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, multipixel_with_qmin) { 8711*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8712*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8713*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8714*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8715*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8716*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8717*4bdc9457SAndroid Build Coastguard Worker .width(3) 8718*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8719*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8720*4bdc9457SAndroid Build Coastguard Worker } 8721*4bdc9457SAndroid Build Coastguard Worker } 8722*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,multipixel_with_qmax)8723*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, multipixel_with_qmax) { 8724*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8725*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8726*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8727*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8728*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8729*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8730*4bdc9457SAndroid Build Coastguard Worker .width(3) 8731*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8732*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8733*4bdc9457SAndroid Build Coastguard Worker } 8734*4bdc9457SAndroid Build Coastguard Worker } 8735*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,input_offset)8736*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, input_offset) { 8737*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8738*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8739*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8740*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8741*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8742*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8743*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8744*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8745*4bdc9457SAndroid Build Coastguard Worker } 8746*4bdc9457SAndroid Build Coastguard Worker } 8747*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3,zero)8748*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3, zero) { 8749*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8750*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 8751*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8752*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8753*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8754*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8755*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8756*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8757*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 8758*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3, xnn_init_f16_minmax_avx_params); 8759*4bdc9457SAndroid Build Coastguard Worker } 8760*4bdc9457SAndroid Build Coastguard Worker } 8761*4bdc9457SAndroid Build Coastguard Worker } 8762*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 8763*4bdc9457SAndroid Build Coastguard Worker 8764*4bdc9457SAndroid Build Coastguard Worker 8765*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,c_eq_32)8766*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, c_eq_32) { 8767*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8768*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8769*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8770*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8771*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8772*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8773*4bdc9457SAndroid Build Coastguard Worker } 8774*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,c_div_32)8775*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, c_div_32) { 8776*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8777*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8778*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8779*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8780*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8781*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8782*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8783*4bdc9457SAndroid Build Coastguard Worker } 8784*4bdc9457SAndroid Build Coastguard Worker } 8785*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,c_div_32_with_qmin)8786*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, c_div_32_with_qmin) { 8787*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8788*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8789*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8790*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8791*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8792*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8793*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8794*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8795*4bdc9457SAndroid Build Coastguard Worker } 8796*4bdc9457SAndroid Build Coastguard Worker } 8797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,c_div_32_with_qmax)8798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, c_div_32_with_qmax) { 8799*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8800*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8801*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8802*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8803*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8804*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8805*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8806*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8807*4bdc9457SAndroid Build Coastguard Worker } 8808*4bdc9457SAndroid Build Coastguard Worker } 8809*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,c_lt_32)8810*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, c_lt_32) { 8811*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8812*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 1; channels < 32; channels++) { 8813*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8814*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8815*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8816*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8817*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8818*4bdc9457SAndroid Build Coastguard Worker } 8819*4bdc9457SAndroid Build Coastguard Worker } 8820*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,c_gt_32)8821*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, c_gt_32) { 8822*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8823*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8824*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8825*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8826*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8827*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8828*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8829*4bdc9457SAndroid Build Coastguard Worker } 8830*4bdc9457SAndroid Build Coastguard Worker } 8831*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,c_gt_32_with_qmin)8832*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, c_gt_32_with_qmin) { 8833*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8834*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8835*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8836*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8837*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8838*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8839*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8840*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8841*4bdc9457SAndroid Build Coastguard Worker } 8842*4bdc9457SAndroid Build Coastguard Worker } 8843*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,c_gt_32_with_qmax)8844*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, c_gt_32_with_qmax) { 8845*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8846*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 33; channels < 64; channels++) { 8847*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8848*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8849*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8850*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8851*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8852*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8853*4bdc9457SAndroid Build Coastguard Worker } 8854*4bdc9457SAndroid Build Coastguard Worker } 8855*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,multipixel)8856*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, multipixel) { 8857*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8858*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8859*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8860*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8861*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8862*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8863*4bdc9457SAndroid Build Coastguard Worker .width(3) 8864*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8865*4bdc9457SAndroid Build Coastguard Worker } 8866*4bdc9457SAndroid Build Coastguard Worker } 8867*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,multipixel_with_step)8868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, multipixel_with_step) { 8869*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8870*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8871*4bdc9457SAndroid Build Coastguard Worker for (size_t step = 2; step <= 25; step++) { 8872*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8873*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8874*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8875*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8876*4bdc9457SAndroid Build Coastguard Worker .width(3) 8877*4bdc9457SAndroid Build Coastguard Worker .step(step) 8878*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8879*4bdc9457SAndroid Build Coastguard Worker } 8880*4bdc9457SAndroid Build Coastguard Worker } 8881*4bdc9457SAndroid Build Coastguard Worker } 8882*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,multipixel_with_output_stride)8883*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, multipixel_with_output_stride) { 8884*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8885*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8886*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8887*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8888*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8889*4bdc9457SAndroid Build Coastguard Worker .channels(32) 8890*4bdc9457SAndroid Build Coastguard Worker .width(5) 8891*4bdc9457SAndroid Build Coastguard Worker .output_stride(163) 8892*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8893*4bdc9457SAndroid Build Coastguard Worker } 8894*4bdc9457SAndroid Build Coastguard Worker } 8895*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,multipixel_with_qmin)8896*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, multipixel_with_qmin) { 8897*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8898*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8899*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8900*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8901*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8902*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8903*4bdc9457SAndroid Build Coastguard Worker .width(3) 8904*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8905*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8906*4bdc9457SAndroid Build Coastguard Worker } 8907*4bdc9457SAndroid Build Coastguard Worker } 8908*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,multipixel_with_qmax)8909*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, multipixel_with_qmax) { 8910*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8911*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 160; channels += 31) { 8912*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8913*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8914*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8915*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8916*4bdc9457SAndroid Build Coastguard Worker .width(3) 8917*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8918*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8919*4bdc9457SAndroid Build Coastguard Worker } 8920*4bdc9457SAndroid Build Coastguard Worker } 8921*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,input_offset)8922*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, input_offset) { 8923*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8924*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8925*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8926*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8927*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8928*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8929*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8930*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8931*4bdc9457SAndroid Build Coastguard Worker } 8932*4bdc9457SAndroid Build Coastguard Worker } 8933*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2,zero)8934*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV_MINMAX_UP32X25__FMA3_ACC2, zero) { 8935*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_FMA3; 8936*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 25; mz++) { 8937*4bdc9457SAndroid Build Coastguard Worker for (uint32_t channels = 64; channels < 512; channels += 96) { 8938*4bdc9457SAndroid Build Coastguard Worker DWConvMicrokernelTester() 8939*4bdc9457SAndroid Build Coastguard Worker .cr(32) 8940*4bdc9457SAndroid Build Coastguard Worker .kr(25) 8941*4bdc9457SAndroid Build Coastguard Worker .channels(channels) 8942*4bdc9457SAndroid Build Coastguard Worker .input_offset(592) 8943*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 8944*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv_minmax_ukernel_up32x25__fma3_acc2, xnn_init_f16_minmax_avx_params); 8945*4bdc9457SAndroid Build Coastguard Worker } 8946*4bdc9457SAndroid Build Coastguard Worker } 8947*4bdc9457SAndroid Build Coastguard Worker } 8948*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 8949