1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2020 Google LLC 2*4bdc9457SAndroid Build Coastguard Worker // 3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 5*4bdc9457SAndroid Build Coastguard Worker // 6*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit! 7*4bdc9457SAndroid Build Coastguard Worker // Specification: test/f16-dwconv2d-chw.yaml 8*4bdc9457SAndroid Build Coastguard Worker // Generator: tools/generate-dwconv2d-chw-test.py 9*4bdc9457SAndroid Build Coastguard Worker 10*4bdc9457SAndroid Build Coastguard Worker 11*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h> 12*4bdc9457SAndroid Build Coastguard Worker 13*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h> 15*4bdc9457SAndroid Build Coastguard Worker 16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/dwconv.h> 17*4bdc9457SAndroid Build Coastguard Worker #include "dwconv2d-microkernel-tester.h" 18*4bdc9457SAndroid Build Coastguard Worker 19*4bdc9457SAndroid Build Coastguard Worker 20*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8,output_width_eq_8)21*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8, output_width_eq_8) { 22*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 23*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 24*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 25*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 26*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 27*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 28*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 29*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 30*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 31*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 32*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 33*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8, xnn_init_f16_chw_params); 34*4bdc9457SAndroid Build Coastguard Worker } 35*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8,output_width_div_8)36*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8, output_width_div_8) { 37*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 38*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 39*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 40*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 41*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 42*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 43*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 44*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 45*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 46*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 47*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 48*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 49*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8, xnn_init_f16_chw_params); 50*4bdc9457SAndroid Build Coastguard Worker } 51*4bdc9457SAndroid Build Coastguard Worker } 52*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8,output_width_lt_8)53*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8, output_width_lt_8) { 54*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 55*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 56*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 57*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 58*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 59*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 60*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 61*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 62*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 63*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 64*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 65*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 66*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8, xnn_init_f16_chw_params); 67*4bdc9457SAndroid Build Coastguard Worker } 68*4bdc9457SAndroid Build Coastguard Worker } 69*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8,output_width_gt_8)70*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8, output_width_gt_8) { 71*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 72*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 73*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 74*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 75*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 76*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 77*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 78*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 79*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 80*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 81*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 82*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 83*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8, xnn_init_f16_chw_params); 84*4bdc9457SAndroid Build Coastguard Worker } 85*4bdc9457SAndroid Build Coastguard Worker } 86*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8,output_height_gt_1)87*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8, output_height_gt_1) { 88*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 89*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 90*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 91*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 92*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 93*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 94*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 95*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 96*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 97*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 98*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 99*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 100*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 101*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8, xnn_init_f16_chw_params); 102*4bdc9457SAndroid Build Coastguard Worker } 103*4bdc9457SAndroid Build Coastguard Worker } 104*4bdc9457SAndroid Build Coastguard Worker } 105*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 106*4bdc9457SAndroid Build Coastguard Worker 107*4bdc9457SAndroid Build Coastguard Worker 108*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2,output_width_eq_8)109*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2, output_width_eq_8) { 110*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 111*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 112*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 113*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 114*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 115*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 116*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 117*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 118*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 119*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 120*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 121*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc2, xnn_init_f16_chw_params); 122*4bdc9457SAndroid Build Coastguard Worker } 123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2,output_width_div_8)124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2, output_width_div_8) { 125*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 126*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 127*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 128*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 129*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 130*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 131*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 132*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 133*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 134*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 135*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 136*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 137*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc2, xnn_init_f16_chw_params); 138*4bdc9457SAndroid Build Coastguard Worker } 139*4bdc9457SAndroid Build Coastguard Worker } 140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2,output_width_lt_8)141*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2, output_width_lt_8) { 142*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 143*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 144*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 145*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 146*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 147*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 148*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 149*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 150*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 151*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 152*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 153*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 154*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc2, xnn_init_f16_chw_params); 155*4bdc9457SAndroid Build Coastguard Worker } 156*4bdc9457SAndroid Build Coastguard Worker } 157*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2,output_width_gt_8)158*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2, output_width_gt_8) { 159*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 160*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 161*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 162*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 163*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 164*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 165*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 166*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 167*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 168*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 169*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 170*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 171*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc2, xnn_init_f16_chw_params); 172*4bdc9457SAndroid Build Coastguard Worker } 173*4bdc9457SAndroid Build Coastguard Worker } 174*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2,output_height_gt_1)175*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC2, output_height_gt_1) { 176*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 177*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 178*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 179*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 180*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 181*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 182*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 183*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 184*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 185*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 186*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 187*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 188*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 189*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc2, xnn_init_f16_chw_params); 190*4bdc9457SAndroid Build Coastguard Worker } 191*4bdc9457SAndroid Build Coastguard Worker } 192*4bdc9457SAndroid Build Coastguard Worker } 193*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 194*4bdc9457SAndroid Build Coastguard Worker 195*4bdc9457SAndroid Build Coastguard Worker 196*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3,output_width_eq_8)197*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3, output_width_eq_8) { 198*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 199*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 200*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 201*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 202*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 203*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 204*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 205*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 206*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 207*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 208*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 209*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc3, xnn_init_f16_chw_params); 210*4bdc9457SAndroid Build Coastguard Worker } 211*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3,output_width_div_8)212*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3, output_width_div_8) { 213*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 214*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 215*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 216*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 217*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 218*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 219*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 220*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 221*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 222*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 223*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 224*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 225*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc3, xnn_init_f16_chw_params); 226*4bdc9457SAndroid Build Coastguard Worker } 227*4bdc9457SAndroid Build Coastguard Worker } 228*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3,output_width_lt_8)229*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3, output_width_lt_8) { 230*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 231*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 232*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 233*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 234*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 235*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 236*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 237*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 238*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 239*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 240*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 241*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 242*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc3, xnn_init_f16_chw_params); 243*4bdc9457SAndroid Build Coastguard Worker } 244*4bdc9457SAndroid Build Coastguard Worker } 245*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3,output_width_gt_8)246*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3, output_width_gt_8) { 247*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 248*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 249*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 250*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 251*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 252*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 253*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 254*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 255*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 256*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 257*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 258*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 259*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc3, xnn_init_f16_chw_params); 260*4bdc9457SAndroid Build Coastguard Worker } 261*4bdc9457SAndroid Build Coastguard Worker } 262*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3,output_height_gt_1)263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC3, output_height_gt_1) { 264*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 265*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 266*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 267*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 268*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 269*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 270*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 271*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 272*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 273*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 274*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 275*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 276*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 277*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc3, xnn_init_f16_chw_params); 278*4bdc9457SAndroid Build Coastguard Worker } 279*4bdc9457SAndroid Build Coastguard Worker } 280*4bdc9457SAndroid Build Coastguard Worker } 281*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 282*4bdc9457SAndroid Build Coastguard Worker 283*4bdc9457SAndroid Build Coastguard Worker 284*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4,output_width_eq_8)285*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4, output_width_eq_8) { 286*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 287*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 288*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 289*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 290*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 291*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 292*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 293*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 294*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 295*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 296*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 297*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc4, xnn_init_f16_chw_params); 298*4bdc9457SAndroid Build Coastguard Worker } 299*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4,output_width_div_8)300*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4, output_width_div_8) { 301*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 302*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 303*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 304*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 305*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 306*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 307*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 308*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 309*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 310*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 311*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 312*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 313*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc4, xnn_init_f16_chw_params); 314*4bdc9457SAndroid Build Coastguard Worker } 315*4bdc9457SAndroid Build Coastguard Worker } 316*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4,output_width_lt_8)317*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4, output_width_lt_8) { 318*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 319*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 320*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 321*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 322*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 323*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 324*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 325*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 326*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 327*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 328*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 329*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 330*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc4, xnn_init_f16_chw_params); 331*4bdc9457SAndroid Build Coastguard Worker } 332*4bdc9457SAndroid Build Coastguard Worker } 333*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4,output_width_gt_8)334*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4, output_width_gt_8) { 335*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 336*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 337*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 338*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 339*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 340*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 341*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 342*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 343*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 344*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 345*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 346*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 347*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc4, xnn_init_f16_chw_params); 348*4bdc9457SAndroid Build Coastguard Worker } 349*4bdc9457SAndroid Build Coastguard Worker } 350*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4,output_height_gt_1)351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_1X8_ACC4, output_height_gt_1) { 352*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 353*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 354*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 355*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 356*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 357*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 358*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 359*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 360*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 361*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 362*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 363*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 364*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 365*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_1x8_acc4, xnn_init_f16_chw_params); 366*4bdc9457SAndroid Build Coastguard Worker } 367*4bdc9457SAndroid Build Coastguard Worker } 368*4bdc9457SAndroid Build Coastguard Worker } 369*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 370*4bdc9457SAndroid Build Coastguard Worker 371*4bdc9457SAndroid Build Coastguard Worker 372*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8,output_width_eq_8)373*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8, output_width_eq_8) { 374*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 375*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 376*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 377*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 378*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 379*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 380*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 381*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 382*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 383*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 384*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 385*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8, xnn_init_f16_chw_params); 386*4bdc9457SAndroid Build Coastguard Worker } 387*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8,output_width_div_8)388*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8, output_width_div_8) { 389*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 390*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 391*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 392*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 393*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 394*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 395*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 396*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 397*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 398*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 399*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 400*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 401*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8, xnn_init_f16_chw_params); 402*4bdc9457SAndroid Build Coastguard Worker } 403*4bdc9457SAndroid Build Coastguard Worker } 404*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8,output_width_lt_8)405*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8, output_width_lt_8) { 406*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 407*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 408*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 409*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 410*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 411*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 412*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 413*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 414*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 415*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 416*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 417*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 418*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8, xnn_init_f16_chw_params); 419*4bdc9457SAndroid Build Coastguard Worker } 420*4bdc9457SAndroid Build Coastguard Worker } 421*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8,output_width_gt_8)422*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8, output_width_gt_8) { 423*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 424*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 425*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 426*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 427*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 428*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 429*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 430*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 431*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 432*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 433*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 434*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 435*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8, xnn_init_f16_chw_params); 436*4bdc9457SAndroid Build Coastguard Worker } 437*4bdc9457SAndroid Build Coastguard Worker } 438*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8,output_height_div_2)439*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8, output_height_div_2) { 440*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 441*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 4; input_height < 16; input_height += 2) { 442*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 443*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 444*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 445*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 446*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 447*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 448*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 449*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 450*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 451*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 452*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 453*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8, xnn_init_f16_chw_params); 454*4bdc9457SAndroid Build Coastguard Worker } 455*4bdc9457SAndroid Build Coastguard Worker } 456*4bdc9457SAndroid Build Coastguard Worker } 457*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8,output_height_lt_2)458*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8, output_height_lt_2) { 459*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 460*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 2; input_height++) { 461*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 462*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 463*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 464*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 465*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 466*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 467*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 468*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 469*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 470*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 471*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 472*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8, xnn_init_f16_chw_params); 473*4bdc9457SAndroid Build Coastguard Worker } 474*4bdc9457SAndroid Build Coastguard Worker } 475*4bdc9457SAndroid Build Coastguard Worker } 476*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8,output_height_gt_2)477*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8, output_height_gt_2) { 478*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 479*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 480*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 481*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 482*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 483*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 484*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 485*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 486*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 487*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 488*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 489*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 490*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 491*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8, xnn_init_f16_chw_params); 492*4bdc9457SAndroid Build Coastguard Worker } 493*4bdc9457SAndroid Build Coastguard Worker } 494*4bdc9457SAndroid Build Coastguard Worker } 495*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 496*4bdc9457SAndroid Build Coastguard Worker 497*4bdc9457SAndroid Build Coastguard Worker 498*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2,output_width_eq_8)499*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2, output_width_eq_8) { 500*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 501*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 502*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 503*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 504*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 505*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 506*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 507*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 508*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 509*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 510*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 511*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8_acc2, xnn_init_f16_chw_params); 512*4bdc9457SAndroid Build Coastguard Worker } 513*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2,output_width_div_8)514*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2, output_width_div_8) { 515*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 516*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 517*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 518*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 519*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 520*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 521*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 522*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 523*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 524*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 525*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 526*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 527*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8_acc2, xnn_init_f16_chw_params); 528*4bdc9457SAndroid Build Coastguard Worker } 529*4bdc9457SAndroid Build Coastguard Worker } 530*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2,output_width_lt_8)531*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2, output_width_lt_8) { 532*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 533*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 534*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 535*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 536*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 537*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 538*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 539*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 540*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 541*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 542*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 543*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 544*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8_acc2, xnn_init_f16_chw_params); 545*4bdc9457SAndroid Build Coastguard Worker } 546*4bdc9457SAndroid Build Coastguard Worker } 547*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2,output_width_gt_8)548*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2, output_width_gt_8) { 549*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 550*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 551*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 552*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 553*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 554*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 555*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 556*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 557*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 558*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 559*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 560*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 561*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8_acc2, xnn_init_f16_chw_params); 562*4bdc9457SAndroid Build Coastguard Worker } 563*4bdc9457SAndroid Build Coastguard Worker } 564*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2,output_height_div_2)565*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2, output_height_div_2) { 566*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 567*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 4; input_height < 16; input_height += 2) { 568*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 569*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 570*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 571*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 572*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 573*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 574*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 575*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 576*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 577*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 578*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 579*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8_acc2, xnn_init_f16_chw_params); 580*4bdc9457SAndroid Build Coastguard Worker } 581*4bdc9457SAndroid Build Coastguard Worker } 582*4bdc9457SAndroid Build Coastguard Worker } 583*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2,output_height_lt_2)584*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2, output_height_lt_2) { 585*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 586*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 2; input_height++) { 587*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 588*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 589*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 590*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 591*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 592*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 593*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 594*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 595*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 596*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 597*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 598*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8_acc2, xnn_init_f16_chw_params); 599*4bdc9457SAndroid Build Coastguard Worker } 600*4bdc9457SAndroid Build Coastguard Worker } 601*4bdc9457SAndroid Build Coastguard Worker } 602*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2,output_height_gt_2)603*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_2X8_ACC2, output_height_gt_2) { 604*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 605*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 606*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 607*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 608*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 609*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 610*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 611*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 612*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 613*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 614*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 615*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 616*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 617*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_2x8_acc2, xnn_init_f16_chw_params); 618*4bdc9457SAndroid Build Coastguard Worker } 619*4bdc9457SAndroid Build Coastguard Worker } 620*4bdc9457SAndroid Build Coastguard Worker } 621*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 622*4bdc9457SAndroid Build Coastguard Worker 623*4bdc9457SAndroid Build Coastguard Worker 624*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8,output_width_eq_8)625*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8, output_width_eq_8) { 626*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 627*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 628*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 629*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 630*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 631*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 632*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 633*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 634*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 635*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 636*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 637*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_3x8, xnn_init_f16_chw_params); 638*4bdc9457SAndroid Build Coastguard Worker } 639*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8,output_width_div_8)640*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8, output_width_div_8) { 641*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 642*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 643*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 644*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 645*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 646*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 647*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 648*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 649*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 650*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 651*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 652*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 653*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_3x8, xnn_init_f16_chw_params); 654*4bdc9457SAndroid Build Coastguard Worker } 655*4bdc9457SAndroid Build Coastguard Worker } 656*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8,output_width_lt_8)657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8, output_width_lt_8) { 658*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 659*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 660*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 661*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 662*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 663*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 664*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 665*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 666*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 667*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 668*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 669*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 670*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_3x8, xnn_init_f16_chw_params); 671*4bdc9457SAndroid Build Coastguard Worker } 672*4bdc9457SAndroid Build Coastguard Worker } 673*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8,output_width_gt_8)674*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8, output_width_gt_8) { 675*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 676*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 677*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 678*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 679*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 680*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 681*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 682*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 683*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 684*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 685*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 686*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 687*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_3x8, xnn_init_f16_chw_params); 688*4bdc9457SAndroid Build Coastguard Worker } 689*4bdc9457SAndroid Build Coastguard Worker } 690*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8,output_height_div_3)691*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8, output_height_div_3) { 692*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 693*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 6; input_height < 24; input_height += 3) { 694*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 695*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 696*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 697*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 698*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 699*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 700*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 701*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 702*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 703*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 704*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 705*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_3x8, xnn_init_f16_chw_params); 706*4bdc9457SAndroid Build Coastguard Worker } 707*4bdc9457SAndroid Build Coastguard Worker } 708*4bdc9457SAndroid Build Coastguard Worker } 709*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8,output_height_lt_3)710*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8, output_height_lt_3) { 711*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 712*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 713*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 714*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 715*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 716*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 717*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 718*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 719*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 720*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 721*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 722*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 723*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 724*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_3x8, xnn_init_f16_chw_params); 725*4bdc9457SAndroid Build Coastguard Worker } 726*4bdc9457SAndroid Build Coastguard Worker } 727*4bdc9457SAndroid Build Coastguard Worker } 728*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8,output_height_gt_3)729*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_3X8, output_height_gt_3) { 730*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 731*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 4; input_height < 7; input_height++) { 732*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 733*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 734*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 735*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 736*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 737*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 738*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 739*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 740*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 741*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 742*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 743*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_3x8, xnn_init_f16_chw_params); 744*4bdc9457SAndroid Build Coastguard Worker } 745*4bdc9457SAndroid Build Coastguard Worker } 746*4bdc9457SAndroid Build Coastguard Worker } 747*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 748*4bdc9457SAndroid Build Coastguard Worker 749*4bdc9457SAndroid Build Coastguard Worker 750*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8,output_width_eq_8)751*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8, output_width_eq_8) { 752*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 753*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 754*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 755*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 756*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 757*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 758*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 759*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 760*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 761*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 762*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 763*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_4x8, xnn_init_f16_chw_params); 764*4bdc9457SAndroid Build Coastguard Worker } 765*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8,output_width_div_8)766*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8, output_width_div_8) { 767*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 768*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 769*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 770*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 771*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 772*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 773*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 774*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 775*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 776*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 777*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 778*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 779*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_4x8, xnn_init_f16_chw_params); 780*4bdc9457SAndroid Build Coastguard Worker } 781*4bdc9457SAndroid Build Coastguard Worker } 782*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8,output_width_lt_8)783*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8, output_width_lt_8) { 784*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 785*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 786*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 787*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 788*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 789*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 790*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 791*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 792*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 793*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 794*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 795*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 796*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_4x8, xnn_init_f16_chw_params); 797*4bdc9457SAndroid Build Coastguard Worker } 798*4bdc9457SAndroid Build Coastguard Worker } 799*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8,output_width_gt_8)800*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8, output_width_gt_8) { 801*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 802*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 803*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 804*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 805*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 806*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 807*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 808*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 809*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 810*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 811*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 812*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 813*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_4x8, xnn_init_f16_chw_params); 814*4bdc9457SAndroid Build Coastguard Worker } 815*4bdc9457SAndroid Build Coastguard Worker } 816*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8,output_height_div_4)817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8, output_height_div_4) { 818*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 819*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 8; input_height < 32; input_height += 4) { 820*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 821*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 822*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 823*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 824*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 825*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 826*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 827*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 828*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 829*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 830*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 831*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_4x8, xnn_init_f16_chw_params); 832*4bdc9457SAndroid Build Coastguard Worker } 833*4bdc9457SAndroid Build Coastguard Worker } 834*4bdc9457SAndroid Build Coastguard Worker } 835*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8,output_height_lt_4)836*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8, output_height_lt_4) { 837*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 838*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 4; input_height++) { 839*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 840*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 841*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 842*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 843*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 844*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 845*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 846*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 847*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 848*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 849*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 850*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_4x8, xnn_init_f16_chw_params); 851*4bdc9457SAndroid Build Coastguard Worker } 852*4bdc9457SAndroid Build Coastguard Worker } 853*4bdc9457SAndroid Build Coastguard Worker } 854*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8,output_height_gt_4)855*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_4X8, output_height_gt_4) { 856*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 857*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 9; input_height++) { 858*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 859*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 860*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 861*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 862*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 863*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 864*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 865*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 866*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 867*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 868*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 869*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_4x8, xnn_init_f16_chw_params); 870*4bdc9457SAndroid Build Coastguard Worker } 871*4bdc9457SAndroid Build Coastguard Worker } 872*4bdc9457SAndroid Build Coastguard Worker } 873*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 874*4bdc9457SAndroid Build Coastguard Worker 875*4bdc9457SAndroid Build Coastguard Worker 876*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8,output_width_eq_8)877*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8, output_width_eq_8) { 878*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 879*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 880*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 881*4bdc9457SAndroid Build Coastguard Worker .input_height(5) 882*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 883*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 884*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 885*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 886*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 887*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 888*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 889*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_5x8, xnn_init_f16_chw_params); 890*4bdc9457SAndroid Build Coastguard Worker } 891*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8,output_width_div_8)892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8, output_width_div_8) { 893*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 894*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 895*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 896*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 897*4bdc9457SAndroid Build Coastguard Worker .input_height(5) 898*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 899*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 900*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 901*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 902*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 903*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 904*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 905*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_5x8, xnn_init_f16_chw_params); 906*4bdc9457SAndroid Build Coastguard Worker } 907*4bdc9457SAndroid Build Coastguard Worker } 908*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8,output_width_lt_8)909*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8, output_width_lt_8) { 910*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 911*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 912*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 913*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 914*4bdc9457SAndroid Build Coastguard Worker .input_height(5) 915*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 916*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 917*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 918*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 919*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 920*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 921*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_5x8, xnn_init_f16_chw_params); 923*4bdc9457SAndroid Build Coastguard Worker } 924*4bdc9457SAndroid Build Coastguard Worker } 925*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8,output_width_gt_8)926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8, output_width_gt_8) { 927*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 928*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 929*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 930*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 931*4bdc9457SAndroid Build Coastguard Worker .input_height(5) 932*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 933*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 934*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 935*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 936*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 937*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 938*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 939*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_5x8, xnn_init_f16_chw_params); 940*4bdc9457SAndroid Build Coastguard Worker } 941*4bdc9457SAndroid Build Coastguard Worker } 942*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8,output_height_div_5)943*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8, output_height_div_5) { 944*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 945*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 10; input_height < 40; input_height += 5) { 946*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 947*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 948*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 949*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 950*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 951*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 952*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 953*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 954*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 955*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 956*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 957*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_5x8, xnn_init_f16_chw_params); 958*4bdc9457SAndroid Build Coastguard Worker } 959*4bdc9457SAndroid Build Coastguard Worker } 960*4bdc9457SAndroid Build Coastguard Worker } 961*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8,output_height_lt_5)962*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8, output_height_lt_5) { 963*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 964*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 5; input_height++) { 965*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 966*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 967*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 968*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 969*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 970*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 971*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 972*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 973*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 974*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 975*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 976*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_5x8, xnn_init_f16_chw_params); 977*4bdc9457SAndroid Build Coastguard Worker } 978*4bdc9457SAndroid Build Coastguard Worker } 979*4bdc9457SAndroid Build Coastguard Worker } 980*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8,output_height_gt_5)981*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_5X8, output_height_gt_5) { 982*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 983*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 6; input_height < 11; input_height++) { 984*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 985*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 986*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 987*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 988*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 989*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 990*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 991*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 992*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 993*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 994*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 995*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_5x8, xnn_init_f16_chw_params); 996*4bdc9457SAndroid Build Coastguard Worker } 997*4bdc9457SAndroid Build Coastguard Worker } 998*4bdc9457SAndroid Build Coastguard Worker } 999*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 1000*4bdc9457SAndroid Build Coastguard Worker 1001*4bdc9457SAndroid Build Coastguard Worker 1002*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8,output_width_eq_8)1003*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8, output_width_eq_8) { 1004*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1005*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1006*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 1007*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 1008*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1009*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1010*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 1011*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1012*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1013*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1014*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1015*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_6x8, xnn_init_f16_chw_params); 1016*4bdc9457SAndroid Build Coastguard Worker } 1017*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8,output_width_div_8)1018*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8, output_width_div_8) { 1019*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1020*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 1021*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1022*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1023*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 1024*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1025*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1026*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 1027*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1028*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1029*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1030*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1031*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_6x8, xnn_init_f16_chw_params); 1032*4bdc9457SAndroid Build Coastguard Worker } 1033*4bdc9457SAndroid Build Coastguard Worker } 1034*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8,output_width_lt_8)1035*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8, output_width_lt_8) { 1036*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1037*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 8; input_width++) { 1038*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1039*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 1040*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 1041*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1042*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1043*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 1044*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1045*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1046*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1047*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1048*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_6x8, xnn_init_f16_chw_params); 1049*4bdc9457SAndroid Build Coastguard Worker } 1050*4bdc9457SAndroid Build Coastguard Worker } 1051*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8,output_width_gt_8)1052*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8, output_width_gt_8) { 1053*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1054*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 1055*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1056*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1057*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 1058*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1059*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1060*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 1061*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1062*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1063*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1064*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1065*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_6x8, xnn_init_f16_chw_params); 1066*4bdc9457SAndroid Build Coastguard Worker } 1067*4bdc9457SAndroid Build Coastguard Worker } 1068*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8,output_height_div_6)1069*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8, output_height_div_6) { 1070*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1071*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 12; input_height < 48; input_height += 6) { 1072*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1073*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1074*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1075*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1076*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1077*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1078*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 1079*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1080*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1081*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1082*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1083*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_6x8, xnn_init_f16_chw_params); 1084*4bdc9457SAndroid Build Coastguard Worker } 1085*4bdc9457SAndroid Build Coastguard Worker } 1086*4bdc9457SAndroid Build Coastguard Worker } 1087*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8,output_height_lt_6)1088*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8, output_height_lt_6) { 1089*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1090*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 6; input_height++) { 1091*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1092*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1093*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1094*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1095*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1096*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1097*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 1098*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1099*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1100*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1101*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1102*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_6x8, xnn_init_f16_chw_params); 1103*4bdc9457SAndroid Build Coastguard Worker } 1104*4bdc9457SAndroid Build Coastguard Worker } 1105*4bdc9457SAndroid Build Coastguard Worker } 1106*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8,output_height_gt_6)1107*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3P1__NEONFP16ARITH_6X8, output_height_gt_6) { 1108*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1109*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 7; input_height < 13; input_height++) { 1110*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1111*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1112*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1113*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1114*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1115*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1116*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 1117*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1118*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1119*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1120*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1121*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3p1__neonfp16arith_6x8, xnn_init_f16_chw_params); 1122*4bdc9457SAndroid Build Coastguard Worker } 1123*4bdc9457SAndroid Build Coastguard Worker } 1124*4bdc9457SAndroid Build Coastguard Worker } 1125*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 1126*4bdc9457SAndroid Build Coastguard Worker 1127*4bdc9457SAndroid Build Coastguard Worker 1128*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4,output_width_eq_4)1129*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4, output_width_eq_4) { 1130*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1131*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 1132*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1133*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1134*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1135*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1136*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1137*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1138*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1139*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1140*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1141*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4, xnn_init_f16_chw_params); 1143*4bdc9457SAndroid Build Coastguard Worker } 1144*4bdc9457SAndroid Build Coastguard Worker } 1145*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4,output_width_div_4)1146*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4, output_width_div_4) { 1147*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1148*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 1149*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1150*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1151*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1152*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1153*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1154*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1155*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1156*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1157*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1158*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1159*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4, xnn_init_f16_chw_params); 1160*4bdc9457SAndroid Build Coastguard Worker } 1161*4bdc9457SAndroid Build Coastguard Worker } 1162*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4,output_width_lt_4)1163*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4, output_width_lt_4) { 1164*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1165*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 1166*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1167*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 1168*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1169*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1170*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1171*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1172*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1173*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1174*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1175*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1176*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4, xnn_init_f16_chw_params); 1177*4bdc9457SAndroid Build Coastguard Worker } 1178*4bdc9457SAndroid Build Coastguard Worker } 1179*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4,output_width_gt_4)1180*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4, output_width_gt_4) { 1181*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1182*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 1183*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1184*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1185*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1186*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1187*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1188*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1189*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1190*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1191*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1192*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1193*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4, xnn_init_f16_chw_params); 1194*4bdc9457SAndroid Build Coastguard Worker } 1195*4bdc9457SAndroid Build Coastguard Worker } 1196*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4,output_height_eq_1)1197*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4, output_height_eq_1) { 1198*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1199*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 1200*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1201*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1202*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1203*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1204*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1205*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1206*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1207*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1208*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1209*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1210*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1211*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4, xnn_init_f16_chw_params); 1212*4bdc9457SAndroid Build Coastguard Worker } 1213*4bdc9457SAndroid Build Coastguard Worker } 1214*4bdc9457SAndroid Build Coastguard Worker } 1215*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4,output_height_gt_1)1216*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4, output_height_gt_1) { 1217*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1218*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 1219*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1220*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1221*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1222*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1223*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1224*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1225*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1226*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1227*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1228*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1229*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1230*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4, xnn_init_f16_chw_params); 1231*4bdc9457SAndroid Build Coastguard Worker } 1232*4bdc9457SAndroid Build Coastguard Worker } 1233*4bdc9457SAndroid Build Coastguard Worker } 1234*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4,padding_top_eq_1)1235*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4, padding_top_eq_1) { 1236*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1237*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 1238*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1239*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1240*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1241*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1242*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1243*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1244*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1245*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1246*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1247*4bdc9457SAndroid Build Coastguard Worker .padding_top(0) 1248*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1249*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4, xnn_init_f16_chw_params); 1250*4bdc9457SAndroid Build Coastguard Worker } 1251*4bdc9457SAndroid Build Coastguard Worker } 1252*4bdc9457SAndroid Build Coastguard Worker } 1253*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 1254*4bdc9457SAndroid Build Coastguard Worker 1255*4bdc9457SAndroid Build Coastguard Worker 1256*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2,output_width_eq_4)1257*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2, output_width_eq_4) { 1258*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1259*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 1260*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1261*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1262*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1263*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1264*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1265*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1266*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1267*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1268*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1269*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1270*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 1271*4bdc9457SAndroid Build Coastguard Worker } 1272*4bdc9457SAndroid Build Coastguard Worker } 1273*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2,output_width_div_4)1274*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2, output_width_div_4) { 1275*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1276*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 1277*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1278*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1279*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1280*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1281*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1282*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1283*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1284*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1285*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1286*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1287*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 1288*4bdc9457SAndroid Build Coastguard Worker } 1289*4bdc9457SAndroid Build Coastguard Worker } 1290*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2,output_width_lt_4)1291*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2, output_width_lt_4) { 1292*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1293*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 1294*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1295*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 1296*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1297*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1298*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1299*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1300*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1301*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1302*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1303*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1304*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 1305*4bdc9457SAndroid Build Coastguard Worker } 1306*4bdc9457SAndroid Build Coastguard Worker } 1307*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2,output_width_gt_4)1308*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2, output_width_gt_4) { 1309*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1310*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 1311*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1312*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1313*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1314*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1315*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1316*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1317*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1318*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1319*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1320*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1321*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 1322*4bdc9457SAndroid Build Coastguard Worker } 1323*4bdc9457SAndroid Build Coastguard Worker } 1324*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2,output_height_eq_1)1325*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2, output_height_eq_1) { 1326*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1327*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 1328*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1329*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1330*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1331*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1332*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1333*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1334*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1335*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1336*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1337*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1338*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1339*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 1340*4bdc9457SAndroid Build Coastguard Worker } 1341*4bdc9457SAndroid Build Coastguard Worker } 1342*4bdc9457SAndroid Build Coastguard Worker } 1343*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2,output_height_gt_1)1344*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2, output_height_gt_1) { 1345*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1346*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 1347*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1348*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1349*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1350*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1351*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1352*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1353*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1354*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1355*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1356*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1357*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1358*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 1359*4bdc9457SAndroid Build Coastguard Worker } 1360*4bdc9457SAndroid Build Coastguard Worker } 1361*4bdc9457SAndroid Build Coastguard Worker } 1362*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2,padding_top_eq_1)1363*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC2, padding_top_eq_1) { 1364*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1365*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 1366*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1367*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1368*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1369*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1370*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1371*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1372*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1373*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1374*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1375*4bdc9457SAndroid Build Coastguard Worker .padding_top(0) 1376*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1377*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 1378*4bdc9457SAndroid Build Coastguard Worker } 1379*4bdc9457SAndroid Build Coastguard Worker } 1380*4bdc9457SAndroid Build Coastguard Worker } 1381*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 1382*4bdc9457SAndroid Build Coastguard Worker 1383*4bdc9457SAndroid Build Coastguard Worker 1384*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3,output_width_eq_4)1385*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3, output_width_eq_4) { 1386*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1387*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 1388*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1389*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1390*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1391*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1392*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1393*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1394*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1395*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1396*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1397*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1398*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 1399*4bdc9457SAndroid Build Coastguard Worker } 1400*4bdc9457SAndroid Build Coastguard Worker } 1401*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3,output_width_div_4)1402*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3, output_width_div_4) { 1403*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1404*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 1405*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1406*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1407*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1408*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1409*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1410*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1411*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1412*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1413*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1414*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1415*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 1416*4bdc9457SAndroid Build Coastguard Worker } 1417*4bdc9457SAndroid Build Coastguard Worker } 1418*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3,output_width_lt_4)1419*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3, output_width_lt_4) { 1420*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1421*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 1422*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1423*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 1424*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1425*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1426*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1427*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1428*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1429*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1430*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1431*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1432*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 1433*4bdc9457SAndroid Build Coastguard Worker } 1434*4bdc9457SAndroid Build Coastguard Worker } 1435*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3,output_width_gt_4)1436*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3, output_width_gt_4) { 1437*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1438*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 1439*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1440*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1441*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1442*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1443*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1444*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1445*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1446*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1447*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1448*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1449*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 1450*4bdc9457SAndroid Build Coastguard Worker } 1451*4bdc9457SAndroid Build Coastguard Worker } 1452*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3,output_height_eq_1)1453*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3, output_height_eq_1) { 1454*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1455*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 1456*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1457*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1458*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1459*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1460*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1461*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1462*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1463*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1464*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1465*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1466*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1467*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 1468*4bdc9457SAndroid Build Coastguard Worker } 1469*4bdc9457SAndroid Build Coastguard Worker } 1470*4bdc9457SAndroid Build Coastguard Worker } 1471*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3,output_height_gt_1)1472*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3, output_height_gt_1) { 1473*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1474*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 1475*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1476*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1477*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1478*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1479*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1480*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1481*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1482*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1483*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1484*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1485*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1486*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 1487*4bdc9457SAndroid Build Coastguard Worker } 1488*4bdc9457SAndroid Build Coastguard Worker } 1489*4bdc9457SAndroid Build Coastguard Worker } 1490*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3,padding_top_eq_1)1491*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC3, padding_top_eq_1) { 1492*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1493*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 1494*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1495*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1496*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1497*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1498*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1499*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1500*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1501*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1502*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1503*4bdc9457SAndroid Build Coastguard Worker .padding_top(0) 1504*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1505*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 1506*4bdc9457SAndroid Build Coastguard Worker } 1507*4bdc9457SAndroid Build Coastguard Worker } 1508*4bdc9457SAndroid Build Coastguard Worker } 1509*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 1510*4bdc9457SAndroid Build Coastguard Worker 1511*4bdc9457SAndroid Build Coastguard Worker 1512*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4,output_width_eq_4)1513*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4, output_width_eq_4) { 1514*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1515*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 1516*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1517*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1518*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1519*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1520*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1521*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1522*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1523*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1524*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1525*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 1527*4bdc9457SAndroid Build Coastguard Worker } 1528*4bdc9457SAndroid Build Coastguard Worker } 1529*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4,output_width_div_4)1530*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4, output_width_div_4) { 1531*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1532*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 1533*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1534*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1535*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1536*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1537*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1538*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1539*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1540*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1541*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1542*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1543*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 1544*4bdc9457SAndroid Build Coastguard Worker } 1545*4bdc9457SAndroid Build Coastguard Worker } 1546*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4,output_width_lt_4)1547*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4, output_width_lt_4) { 1548*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1549*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 1550*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1551*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 1552*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1553*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1554*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1555*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1556*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1557*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1558*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1559*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1560*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 1561*4bdc9457SAndroid Build Coastguard Worker } 1562*4bdc9457SAndroid Build Coastguard Worker } 1563*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4,output_width_gt_4)1564*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4, output_width_gt_4) { 1565*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1566*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 1567*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1568*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1569*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 1570*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1571*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1572*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1573*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1574*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1575*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1576*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1577*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 1578*4bdc9457SAndroid Build Coastguard Worker } 1579*4bdc9457SAndroid Build Coastguard Worker } 1580*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4,output_height_eq_1)1581*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4, output_height_eq_1) { 1582*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1583*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 1584*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1585*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1586*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1587*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1588*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1589*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1590*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1591*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1592*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1593*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1594*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1595*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 1596*4bdc9457SAndroid Build Coastguard Worker } 1597*4bdc9457SAndroid Build Coastguard Worker } 1598*4bdc9457SAndroid Build Coastguard Worker } 1599*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4,output_height_gt_1)1600*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4, output_height_gt_1) { 1601*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1602*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 1603*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1604*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1605*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1606*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1607*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1608*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1609*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1610*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1611*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1612*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1613*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1614*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 1615*4bdc9457SAndroid Build Coastguard Worker } 1616*4bdc9457SAndroid Build Coastguard Worker } 1617*4bdc9457SAndroid Build Coastguard Worker } 1618*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4,padding_top_eq_1)1619*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_1X4_ACC4, padding_top_eq_1) { 1620*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1621*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 1622*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1623*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1624*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1625*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1626*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1627*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1628*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1629*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1630*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1631*4bdc9457SAndroid Build Coastguard Worker .padding_top(0) 1632*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1633*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 1634*4bdc9457SAndroid Build Coastguard Worker } 1635*4bdc9457SAndroid Build Coastguard Worker } 1636*4bdc9457SAndroid Build Coastguard Worker } 1637*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 1638*4bdc9457SAndroid Build Coastguard Worker 1639*4bdc9457SAndroid Build Coastguard Worker 1640*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,output_width_eq_4)1641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, output_width_eq_4) { 1642*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1643*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 1644*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1645*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1646*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 1647*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1648*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1649*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1650*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1651*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1652*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1653*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1654*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1655*4bdc9457SAndroid Build Coastguard Worker } 1656*4bdc9457SAndroid Build Coastguard Worker } 1657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,output_width_div_4)1658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, output_width_div_4) { 1659*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1660*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 1661*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1662*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1663*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 1664*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1665*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1666*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1667*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1668*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1669*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1670*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1671*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1672*4bdc9457SAndroid Build Coastguard Worker } 1673*4bdc9457SAndroid Build Coastguard Worker } 1674*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,output_width_lt_4)1675*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, output_width_lt_4) { 1676*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1677*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 1678*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1679*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 1680*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 1681*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1682*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1683*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1684*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1685*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1686*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1687*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1688*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1689*4bdc9457SAndroid Build Coastguard Worker } 1690*4bdc9457SAndroid Build Coastguard Worker } 1691*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,output_width_gt_4)1692*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, output_width_gt_4) { 1693*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1694*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 1695*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1696*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1697*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 1698*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1699*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1700*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1701*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1702*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1703*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1704*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1705*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1706*4bdc9457SAndroid Build Coastguard Worker } 1707*4bdc9457SAndroid Build Coastguard Worker } 1708*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,output_height_eq_2)1709*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, output_height_eq_2) { 1710*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1711*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 1712*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1713*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1714*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1715*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1716*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1717*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1718*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1719*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1720*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1721*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1722*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1723*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1724*4bdc9457SAndroid Build Coastguard Worker } 1725*4bdc9457SAndroid Build Coastguard Worker } 1726*4bdc9457SAndroid Build Coastguard Worker } 1727*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,output_height_div_2)1728*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, output_height_div_2) { 1729*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1730*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 8; input_height < 32; input_height += 4) { 1731*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1732*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1733*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1734*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1735*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1736*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1737*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1738*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1739*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1740*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1741*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1742*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1743*4bdc9457SAndroid Build Coastguard Worker } 1744*4bdc9457SAndroid Build Coastguard Worker } 1745*4bdc9457SAndroid Build Coastguard Worker } 1746*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,output_height_lt_2)1747*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, output_height_lt_2) { 1748*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1749*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 1750*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1751*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1752*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1753*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1754*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1755*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1756*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1757*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1758*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1759*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1760*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1761*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1762*4bdc9457SAndroid Build Coastguard Worker } 1763*4bdc9457SAndroid Build Coastguard Worker } 1764*4bdc9457SAndroid Build Coastguard Worker } 1765*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,output_height_gt_2)1766*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, output_height_gt_2) { 1767*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1768*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 9; input_height++) { 1769*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1770*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1771*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1772*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1773*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1774*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1775*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1776*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1777*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1778*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1779*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1780*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1781*4bdc9457SAndroid Build Coastguard Worker } 1782*4bdc9457SAndroid Build Coastguard Worker } 1783*4bdc9457SAndroid Build Coastguard Worker } 1784*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4,padding_top_eq_1)1785*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4, padding_top_eq_1) { 1786*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1787*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 14; input_height++) { 1788*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1789*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1790*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1791*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1792*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1793*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1794*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1795*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1796*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1797*4bdc9457SAndroid Build Coastguard Worker .padding_top(0) 1798*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1799*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4, xnn_init_f16_chw_params); 1800*4bdc9457SAndroid Build Coastguard Worker } 1801*4bdc9457SAndroid Build Coastguard Worker } 1802*4bdc9457SAndroid Build Coastguard Worker } 1803*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 1804*4bdc9457SAndroid Build Coastguard Worker 1805*4bdc9457SAndroid Build Coastguard Worker 1806*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,output_width_eq_4)1807*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, output_width_eq_4) { 1808*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1809*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 1810*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1811*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1812*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 1813*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1814*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1815*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1816*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1817*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1818*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1819*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1820*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1821*4bdc9457SAndroid Build Coastguard Worker } 1822*4bdc9457SAndroid Build Coastguard Worker } 1823*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,output_width_div_4)1824*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, output_width_div_4) { 1825*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1826*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 1827*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1828*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1829*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 1830*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1831*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1832*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1833*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1834*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1835*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1836*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1837*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1838*4bdc9457SAndroid Build Coastguard Worker } 1839*4bdc9457SAndroid Build Coastguard Worker } 1840*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,output_width_lt_4)1841*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, output_width_lt_4) { 1842*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1843*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 1844*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1845*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 1846*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 1847*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1848*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1849*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1850*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1851*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1852*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1853*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1854*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1855*4bdc9457SAndroid Build Coastguard Worker } 1856*4bdc9457SAndroid Build Coastguard Worker } 1857*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,output_width_gt_4)1858*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, output_width_gt_4) { 1859*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1860*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 1861*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1862*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1863*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 1864*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1865*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1866*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1867*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1868*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1869*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1870*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1871*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1872*4bdc9457SAndroid Build Coastguard Worker } 1873*4bdc9457SAndroid Build Coastguard Worker } 1874*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,output_height_eq_2)1875*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, output_height_eq_2) { 1876*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1877*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 1878*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1879*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1880*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1881*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1882*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1883*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1884*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1885*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1886*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1887*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1888*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1889*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1890*4bdc9457SAndroid Build Coastguard Worker } 1891*4bdc9457SAndroid Build Coastguard Worker } 1892*4bdc9457SAndroid Build Coastguard Worker } 1893*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,output_height_div_2)1894*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, output_height_div_2) { 1895*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1896*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 8; input_height < 32; input_height += 4) { 1897*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1898*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1899*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1900*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1901*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1902*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1903*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1904*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1905*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1906*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1907*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1908*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1909*4bdc9457SAndroid Build Coastguard Worker } 1910*4bdc9457SAndroid Build Coastguard Worker } 1911*4bdc9457SAndroid Build Coastguard Worker } 1912*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,output_height_lt_2)1913*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, output_height_lt_2) { 1914*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1915*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 1916*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1917*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1918*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1919*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1920*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1921*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1922*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1923*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1924*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1925*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1926*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1927*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1928*4bdc9457SAndroid Build Coastguard Worker } 1929*4bdc9457SAndroid Build Coastguard Worker } 1930*4bdc9457SAndroid Build Coastguard Worker } 1931*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,output_height_gt_2)1932*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, output_height_gt_2) { 1933*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1934*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 9; input_height++) { 1935*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1936*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1937*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1938*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1939*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1940*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1941*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1942*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1943*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1944*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1945*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1946*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1947*4bdc9457SAndroid Build Coastguard Worker } 1948*4bdc9457SAndroid Build Coastguard Worker } 1949*4bdc9457SAndroid Build Coastguard Worker } 1950*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2,padding_top_eq_1)1951*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_2X4_ACC2, padding_top_eq_1) { 1952*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1953*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 14; input_height++) { 1954*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 1955*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1956*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1957*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 1958*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1959*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1960*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1961*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1962*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1963*4bdc9457SAndroid Build Coastguard Worker .padding_top(0) 1964*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1965*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 1966*4bdc9457SAndroid Build Coastguard Worker } 1967*4bdc9457SAndroid Build Coastguard Worker } 1968*4bdc9457SAndroid Build Coastguard Worker } 1969*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 1970*4bdc9457SAndroid Build Coastguard Worker 1971*4bdc9457SAndroid Build Coastguard Worker 1972*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,output_width_eq_4)1973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, output_width_eq_4) { 1974*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1975*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 1976*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1977*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1978*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 1979*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1980*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1981*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1982*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 1983*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 1984*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 1985*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 1986*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 1987*4bdc9457SAndroid Build Coastguard Worker } 1988*4bdc9457SAndroid Build Coastguard Worker } 1989*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,output_width_div_4)1990*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, output_width_div_4) { 1991*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1992*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 1993*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 1994*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 1995*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 1996*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 1997*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 1998*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 1999*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2000*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2001*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2002*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2003*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 2004*4bdc9457SAndroid Build Coastguard Worker } 2005*4bdc9457SAndroid Build Coastguard Worker } 2006*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,output_width_lt_4)2007*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, output_width_lt_4) { 2008*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2009*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 2010*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2011*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 2012*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 2013*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2014*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2015*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2016*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2017*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2018*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2019*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2020*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 2021*4bdc9457SAndroid Build Coastguard Worker } 2022*4bdc9457SAndroid Build Coastguard Worker } 2023*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,output_width_gt_4)2024*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, output_width_gt_4) { 2025*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2026*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 2027*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2028*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2029*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 2030*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2031*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2032*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2033*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2034*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2035*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2036*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2037*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 2038*4bdc9457SAndroid Build Coastguard Worker } 2039*4bdc9457SAndroid Build Coastguard Worker } 2040*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,output_height_eq_3)2041*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, output_height_eq_3) { 2042*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2043*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 7; input_height++) { 2044*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2045*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2046*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2047*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2048*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2049*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2050*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2051*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2052*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2053*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2054*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2055*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 2056*4bdc9457SAndroid Build Coastguard Worker } 2057*4bdc9457SAndroid Build Coastguard Worker } 2058*4bdc9457SAndroid Build Coastguard Worker } 2059*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,output_height_div_3)2060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, output_height_div_3) { 2061*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2062*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 12; input_height < 48; input_height += 6) { 2063*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2064*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2065*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2066*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2067*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2068*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2069*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2070*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2071*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2072*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2073*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2074*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 2075*4bdc9457SAndroid Build Coastguard Worker } 2076*4bdc9457SAndroid Build Coastguard Worker } 2077*4bdc9457SAndroid Build Coastguard Worker } 2078*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,output_height_lt_3)2079*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, output_height_lt_3) { 2080*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2081*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 5; input_height++) { 2082*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2083*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2084*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2085*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2086*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2087*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2088*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2089*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2090*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2091*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2092*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2093*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 2094*4bdc9457SAndroid Build Coastguard Worker } 2095*4bdc9457SAndroid Build Coastguard Worker } 2096*4bdc9457SAndroid Build Coastguard Worker } 2097*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,output_height_gt_3)2098*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, output_height_gt_3) { 2099*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2100*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 7; input_height < 13; input_height++) { 2101*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2102*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2103*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2104*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2105*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2106*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2107*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2108*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2109*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2110*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2111*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2112*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 2113*4bdc9457SAndroid Build Coastguard Worker } 2114*4bdc9457SAndroid Build Coastguard Worker } 2115*4bdc9457SAndroid Build Coastguard Worker } 2116*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4,padding_top_eq_1)2117*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_3X4, padding_top_eq_1) { 2118*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2119*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 20; input_height++) { 2120*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2121*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2122*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2123*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2124*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2125*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2126*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2127*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2128*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2129*4bdc9457SAndroid Build Coastguard Worker .padding_top(0) 2130*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2131*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_3x4, xnn_init_f16_chw_params); 2132*4bdc9457SAndroid Build Coastguard Worker } 2133*4bdc9457SAndroid Build Coastguard Worker } 2134*4bdc9457SAndroid Build Coastguard Worker } 2135*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2136*4bdc9457SAndroid Build Coastguard Worker 2137*4bdc9457SAndroid Build Coastguard Worker 2138*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,output_width_eq_4)2139*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, output_width_eq_4) { 2140*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2141*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 2142*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2143*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2144*4bdc9457SAndroid Build Coastguard Worker .input_height(8) 2145*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2146*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2147*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2148*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2149*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2150*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2151*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2152*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2153*4bdc9457SAndroid Build Coastguard Worker } 2154*4bdc9457SAndroid Build Coastguard Worker } 2155*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,output_width_div_4)2156*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, output_width_div_4) { 2157*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2158*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 2159*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2160*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2161*4bdc9457SAndroid Build Coastguard Worker .input_height(8) 2162*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2163*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2164*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2165*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2166*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2167*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2168*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2169*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2170*4bdc9457SAndroid Build Coastguard Worker } 2171*4bdc9457SAndroid Build Coastguard Worker } 2172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,output_width_lt_4)2173*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, output_width_lt_4) { 2174*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2175*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 2176*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2177*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 2178*4bdc9457SAndroid Build Coastguard Worker .input_height(8) 2179*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2180*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2181*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2182*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2183*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2184*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2185*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2187*4bdc9457SAndroid Build Coastguard Worker } 2188*4bdc9457SAndroid Build Coastguard Worker } 2189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,output_width_gt_4)2190*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, output_width_gt_4) { 2191*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2192*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 2193*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2194*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2195*4bdc9457SAndroid Build Coastguard Worker .input_height(8) 2196*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2197*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2198*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2199*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2200*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2201*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2202*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2203*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2204*4bdc9457SAndroid Build Coastguard Worker } 2205*4bdc9457SAndroid Build Coastguard Worker } 2206*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,output_height_eq_4)2207*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, output_height_eq_4) { 2208*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2209*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 7; input_height < 9; input_height++) { 2210*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2211*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2212*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2213*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2214*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2215*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2216*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2217*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2218*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2219*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2220*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2221*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2222*4bdc9457SAndroid Build Coastguard Worker } 2223*4bdc9457SAndroid Build Coastguard Worker } 2224*4bdc9457SAndroid Build Coastguard Worker } 2225*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,output_height_div_4)2226*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, output_height_div_4) { 2227*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2228*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 16; input_height < 64; input_height += 8) { 2229*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2230*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2231*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2232*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2233*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2234*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2235*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2236*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2237*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2238*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2239*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2240*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2241*4bdc9457SAndroid Build Coastguard Worker } 2242*4bdc9457SAndroid Build Coastguard Worker } 2243*4bdc9457SAndroid Build Coastguard Worker } 2244*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,output_height_lt_4)2245*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, output_height_lt_4) { 2246*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2247*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 7; input_height++) { 2248*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2249*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2250*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2251*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2252*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2253*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2254*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2255*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2256*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2257*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2258*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2259*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2260*4bdc9457SAndroid Build Coastguard Worker } 2261*4bdc9457SAndroid Build Coastguard Worker } 2262*4bdc9457SAndroid Build Coastguard Worker } 2263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,output_height_gt_4)2264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, output_height_gt_4) { 2265*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2266*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 9; input_height < 17; input_height++) { 2267*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2268*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2269*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2270*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2271*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2272*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2273*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2274*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2275*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2276*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 2277*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2278*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2279*4bdc9457SAndroid Build Coastguard Worker } 2280*4bdc9457SAndroid Build Coastguard Worker } 2281*4bdc9457SAndroid Build Coastguard Worker } 2282*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4,padding_top_eq_1)2283*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_3X3S2P1__NEONFP16ARITH_4X4, padding_top_eq_1) { 2284*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2285*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 26; input_height++) { 2286*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 2287*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2288*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2289*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2290*4bdc9457SAndroid Build Coastguard Worker .kernel_height(3) 2291*4bdc9457SAndroid Build Coastguard Worker .kernel_width(3) 2292*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 2293*4bdc9457SAndroid Build Coastguard Worker .padding_left(1) 2294*4bdc9457SAndroid Build Coastguard Worker .padding_right(1) 2295*4bdc9457SAndroid Build Coastguard Worker .padding_top(0) 2296*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(1) 2297*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_3x3s2p1__neonfp16arith_4x4, xnn_init_f16_chw_params); 2298*4bdc9457SAndroid Build Coastguard Worker } 2299*4bdc9457SAndroid Build Coastguard Worker } 2300*4bdc9457SAndroid Build Coastguard Worker } 2301*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2302*4bdc9457SAndroid Build Coastguard Worker 2303*4bdc9457SAndroid Build Coastguard Worker 2304*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4,output_width_eq_4)2305*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4, output_width_eq_4) { 2306*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2307*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2308*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2309*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2310*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2311*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2312*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2313*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2314*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2315*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2316*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2317*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 2318*4bdc9457SAndroid Build Coastguard Worker } 2319*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4,output_width_div_4)2320*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4, output_width_div_4) { 2321*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2322*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 2323*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2324*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2325*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2326*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2327*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2328*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2329*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2330*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2331*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2332*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2333*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 2334*4bdc9457SAndroid Build Coastguard Worker } 2335*4bdc9457SAndroid Build Coastguard Worker } 2336*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4,output_width_lt_4)2337*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4, output_width_lt_4) { 2338*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2339*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 2340*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2341*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2342*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2343*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2344*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2345*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2346*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2347*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2348*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2349*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2350*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 2351*4bdc9457SAndroid Build Coastguard Worker } 2352*4bdc9457SAndroid Build Coastguard Worker } 2353*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4,output_width_gt_4)2354*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4, output_width_gt_4) { 2355*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2356*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 2357*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2358*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2359*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2360*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2361*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2362*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2363*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2364*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2365*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2366*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2367*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 2368*4bdc9457SAndroid Build Coastguard Worker } 2369*4bdc9457SAndroid Build Coastguard Worker } 2370*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4,output_height_gt_1)2371*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4, output_height_gt_1) { 2372*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2373*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 2374*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2375*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2376*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2377*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2378*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2379*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2380*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2381*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2382*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2383*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2384*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2385*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 2386*4bdc9457SAndroid Build Coastguard Worker } 2387*4bdc9457SAndroid Build Coastguard Worker } 2388*4bdc9457SAndroid Build Coastguard Worker } 2389*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2390*4bdc9457SAndroid Build Coastguard Worker 2391*4bdc9457SAndroid Build Coastguard Worker 2392*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2,output_width_eq_4)2393*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2, output_width_eq_4) { 2394*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2395*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2396*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2397*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2398*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2399*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2400*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2401*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2402*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2403*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2404*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2405*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 2406*4bdc9457SAndroid Build Coastguard Worker } 2407*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2,output_width_div_4)2408*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2, output_width_div_4) { 2409*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2410*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 2411*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2412*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2413*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2414*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2415*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2416*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2417*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2418*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2419*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2420*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2421*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 2422*4bdc9457SAndroid Build Coastguard Worker } 2423*4bdc9457SAndroid Build Coastguard Worker } 2424*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2,output_width_lt_4)2425*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2, output_width_lt_4) { 2426*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2427*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 2428*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2429*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2430*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2431*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2432*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2433*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2434*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2435*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2436*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2437*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2438*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 2439*4bdc9457SAndroid Build Coastguard Worker } 2440*4bdc9457SAndroid Build Coastguard Worker } 2441*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2,output_width_gt_4)2442*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2, output_width_gt_4) { 2443*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2444*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 2445*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2446*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2447*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2448*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2449*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2450*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2451*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2452*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2453*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2454*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2455*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 2456*4bdc9457SAndroid Build Coastguard Worker } 2457*4bdc9457SAndroid Build Coastguard Worker } 2458*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2,output_height_gt_1)2459*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC2, output_height_gt_1) { 2460*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2461*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 2462*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2463*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2464*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2465*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2466*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2467*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2468*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2469*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2470*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2471*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2472*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2473*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 2474*4bdc9457SAndroid Build Coastguard Worker } 2475*4bdc9457SAndroid Build Coastguard Worker } 2476*4bdc9457SAndroid Build Coastguard Worker } 2477*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2478*4bdc9457SAndroid Build Coastguard Worker 2479*4bdc9457SAndroid Build Coastguard Worker 2480*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3,output_width_eq_4)2481*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3, output_width_eq_4) { 2482*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2483*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2484*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2485*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2486*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2487*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2488*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2489*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2490*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2491*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2492*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2493*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 2494*4bdc9457SAndroid Build Coastguard Worker } 2495*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3,output_width_div_4)2496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3, output_width_div_4) { 2497*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2498*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 2499*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2500*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2501*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2502*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2503*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2504*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2505*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2506*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2507*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2508*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2509*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 2510*4bdc9457SAndroid Build Coastguard Worker } 2511*4bdc9457SAndroid Build Coastguard Worker } 2512*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3,output_width_lt_4)2513*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3, output_width_lt_4) { 2514*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2515*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 2516*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2517*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2518*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2519*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2520*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2521*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2522*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2523*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2524*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2525*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 2527*4bdc9457SAndroid Build Coastguard Worker } 2528*4bdc9457SAndroid Build Coastguard Worker } 2529*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3,output_width_gt_4)2530*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3, output_width_gt_4) { 2531*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2532*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 2533*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2534*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2535*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2536*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2537*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2538*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2539*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2540*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2541*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2542*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2543*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 2544*4bdc9457SAndroid Build Coastguard Worker } 2545*4bdc9457SAndroid Build Coastguard Worker } 2546*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3,output_height_gt_1)2547*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC3, output_height_gt_1) { 2548*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2549*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 2550*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2551*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2552*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2553*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2554*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2555*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2556*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2557*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2558*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2559*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2560*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2561*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 2562*4bdc9457SAndroid Build Coastguard Worker } 2563*4bdc9457SAndroid Build Coastguard Worker } 2564*4bdc9457SAndroid Build Coastguard Worker } 2565*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2566*4bdc9457SAndroid Build Coastguard Worker 2567*4bdc9457SAndroid Build Coastguard Worker 2568*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4,output_width_eq_4)2569*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4, output_width_eq_4) { 2570*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2571*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2572*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2573*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2574*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2575*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2576*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2577*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2578*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2579*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2580*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2581*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 2582*4bdc9457SAndroid Build Coastguard Worker } 2583*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4,output_width_div_4)2584*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4, output_width_div_4) { 2585*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2586*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 2587*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2588*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2589*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2590*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2591*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2592*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2593*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2594*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2595*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2596*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2597*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 2598*4bdc9457SAndroid Build Coastguard Worker } 2599*4bdc9457SAndroid Build Coastguard Worker } 2600*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4,output_width_lt_4)2601*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4, output_width_lt_4) { 2602*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2603*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 2604*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2605*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2606*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2607*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2608*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2609*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2610*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2611*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2612*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2613*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2614*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 2615*4bdc9457SAndroid Build Coastguard Worker } 2616*4bdc9457SAndroid Build Coastguard Worker } 2617*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4,output_width_gt_4)2618*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4, output_width_gt_4) { 2619*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2620*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 2621*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2622*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2623*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2624*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2625*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2626*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2627*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2628*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2629*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2630*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2631*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 2632*4bdc9457SAndroid Build Coastguard Worker } 2633*4bdc9457SAndroid Build Coastguard Worker } 2634*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4,output_height_gt_1)2635*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC4, output_height_gt_1) { 2636*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2637*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 2638*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2639*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2640*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2641*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2642*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2643*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2644*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2645*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2646*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2647*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2648*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2649*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 2650*4bdc9457SAndroid Build Coastguard Worker } 2651*4bdc9457SAndroid Build Coastguard Worker } 2652*4bdc9457SAndroid Build Coastguard Worker } 2653*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2654*4bdc9457SAndroid Build Coastguard Worker 2655*4bdc9457SAndroid Build Coastguard Worker 2656*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5,output_width_eq_4)2657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5, output_width_eq_4) { 2658*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2659*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2660*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2661*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2662*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2663*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2664*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2665*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2666*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2667*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2668*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2669*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 2670*4bdc9457SAndroid Build Coastguard Worker } 2671*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5,output_width_div_4)2672*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5, output_width_div_4) { 2673*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2674*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 2675*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2676*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2677*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2678*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2679*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2680*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2681*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2682*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2683*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2684*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2685*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 2686*4bdc9457SAndroid Build Coastguard Worker } 2687*4bdc9457SAndroid Build Coastguard Worker } 2688*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5,output_width_lt_4)2689*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5, output_width_lt_4) { 2690*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2691*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 2692*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2693*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2694*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2695*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2696*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2697*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2698*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2699*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2700*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2701*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2702*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 2703*4bdc9457SAndroid Build Coastguard Worker } 2704*4bdc9457SAndroid Build Coastguard Worker } 2705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5,output_width_gt_4)2706*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5, output_width_gt_4) { 2707*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2708*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 2709*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2710*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2711*4bdc9457SAndroid Build Coastguard Worker .input_height(1) 2712*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2713*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2714*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2715*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2716*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2717*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2718*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2719*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 2720*4bdc9457SAndroid Build Coastguard Worker } 2721*4bdc9457SAndroid Build Coastguard Worker } 2722*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5,output_height_gt_1)2723*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_1X4_ACC5, output_height_gt_1) { 2724*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2725*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 3; input_height++) { 2726*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2727*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2728*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2729*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2730*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2731*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2732*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2733*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2734*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2735*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2736*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2737*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 2738*4bdc9457SAndroid Build Coastguard Worker } 2739*4bdc9457SAndroid Build Coastguard Worker } 2740*4bdc9457SAndroid Build Coastguard Worker } 2741*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2742*4bdc9457SAndroid Build Coastguard Worker 2743*4bdc9457SAndroid Build Coastguard Worker 2744*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4,output_width_eq_4)2745*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4, output_width_eq_4) { 2746*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2747*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2748*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2749*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 2750*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2751*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2752*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2753*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2754*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2755*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2756*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2757*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 2758*4bdc9457SAndroid Build Coastguard Worker } 2759*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4,output_width_div_4)2760*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4, output_width_div_4) { 2761*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2762*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 2763*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2764*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2765*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 2766*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2767*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2768*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2769*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2770*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2771*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2772*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2773*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 2774*4bdc9457SAndroid Build Coastguard Worker } 2775*4bdc9457SAndroid Build Coastguard Worker } 2776*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4,output_width_lt_4)2777*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4, output_width_lt_4) { 2778*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2779*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 2780*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2781*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2782*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 2783*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2784*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2785*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2786*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2787*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2788*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2789*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2790*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 2791*4bdc9457SAndroid Build Coastguard Worker } 2792*4bdc9457SAndroid Build Coastguard Worker } 2793*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4,output_width_gt_4)2794*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4, output_width_gt_4) { 2795*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2796*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 2797*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2798*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2799*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 2800*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2801*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2802*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2803*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2804*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2805*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2806*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2807*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 2808*4bdc9457SAndroid Build Coastguard Worker } 2809*4bdc9457SAndroid Build Coastguard Worker } 2810*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4,output_height_div_2)2811*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4, output_height_div_2) { 2812*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2813*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 4; input_height < 16; input_height += 2) { 2814*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2815*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2816*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2817*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2818*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2819*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2820*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2821*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2822*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2823*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2824*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2825*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 2826*4bdc9457SAndroid Build Coastguard Worker } 2827*4bdc9457SAndroid Build Coastguard Worker } 2828*4bdc9457SAndroid Build Coastguard Worker } 2829*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4,output_height_lt_2)2830*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4, output_height_lt_2) { 2831*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2832*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 2; input_height++) { 2833*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2834*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2835*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2836*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2837*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2838*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2839*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2840*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2841*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2842*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2843*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2844*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 2845*4bdc9457SAndroid Build Coastguard Worker } 2846*4bdc9457SAndroid Build Coastguard Worker } 2847*4bdc9457SAndroid Build Coastguard Worker } 2848*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4,output_height_gt_2)2849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4, output_height_gt_2) { 2850*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2851*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 2852*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2853*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2854*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2855*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2856*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2857*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2858*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2859*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2860*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2861*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2862*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2863*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 2864*4bdc9457SAndroid Build Coastguard Worker } 2865*4bdc9457SAndroid Build Coastguard Worker } 2866*4bdc9457SAndroid Build Coastguard Worker } 2867*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2868*4bdc9457SAndroid Build Coastguard Worker 2869*4bdc9457SAndroid Build Coastguard Worker 2870*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2,output_width_eq_4)2871*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2, output_width_eq_4) { 2872*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2873*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2874*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2875*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 2876*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2877*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2878*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2879*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2880*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2881*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2882*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2883*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 2884*4bdc9457SAndroid Build Coastguard Worker } 2885*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2,output_width_div_4)2886*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2, output_width_div_4) { 2887*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2888*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 2889*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2890*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2891*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 2892*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2893*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2894*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2895*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2896*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2897*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2898*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2899*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 2900*4bdc9457SAndroid Build Coastguard Worker } 2901*4bdc9457SAndroid Build Coastguard Worker } 2902*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2,output_width_lt_4)2903*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2, output_width_lt_4) { 2904*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2905*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 2906*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2907*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 2908*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 2909*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2910*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2911*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2912*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2913*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2914*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2915*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2916*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 2917*4bdc9457SAndroid Build Coastguard Worker } 2918*4bdc9457SAndroid Build Coastguard Worker } 2919*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2,output_width_gt_4)2920*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2, output_width_gt_4) { 2921*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2922*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 2923*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2924*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2925*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 2926*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2927*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2928*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2929*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2930*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2931*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2932*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2933*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 2934*4bdc9457SAndroid Build Coastguard Worker } 2935*4bdc9457SAndroid Build Coastguard Worker } 2936*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2,output_height_div_2)2937*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2, output_height_div_2) { 2938*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2939*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 4; input_height < 16; input_height += 2) { 2940*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2941*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2942*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2943*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2944*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2945*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2946*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2947*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2948*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2949*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2950*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2951*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 2952*4bdc9457SAndroid Build Coastguard Worker } 2953*4bdc9457SAndroid Build Coastguard Worker } 2954*4bdc9457SAndroid Build Coastguard Worker } 2955*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2,output_height_lt_2)2956*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2, output_height_lt_2) { 2957*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2958*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 2; input_height++) { 2959*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2960*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2961*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2962*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2963*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2964*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2965*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2966*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2967*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2968*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2969*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2970*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 2971*4bdc9457SAndroid Build Coastguard Worker } 2972*4bdc9457SAndroid Build Coastguard Worker } 2973*4bdc9457SAndroid Build Coastguard Worker } 2974*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2,output_height_gt_2)2975*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC2, output_height_gt_2) { 2976*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2977*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 2978*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 2979*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 2980*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 2981*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 2982*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 2983*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 2984*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 2985*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 2986*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 2987*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 2988*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 2989*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 2990*4bdc9457SAndroid Build Coastguard Worker } 2991*4bdc9457SAndroid Build Coastguard Worker } 2992*4bdc9457SAndroid Build Coastguard Worker } 2993*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 2994*4bdc9457SAndroid Build Coastguard Worker 2995*4bdc9457SAndroid Build Coastguard Worker 2996*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3,output_width_eq_4)2997*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3, output_width_eq_4) { 2998*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2999*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3000*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3001*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3002*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3003*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3004*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3005*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3006*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3007*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3008*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3009*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 3010*4bdc9457SAndroid Build Coastguard Worker } 3011*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3,output_width_div_4)3012*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3, output_width_div_4) { 3013*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3014*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 3015*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3016*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3017*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3018*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3019*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3020*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3021*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3022*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3023*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3024*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3025*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 3026*4bdc9457SAndroid Build Coastguard Worker } 3027*4bdc9457SAndroid Build Coastguard Worker } 3028*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3,output_width_lt_4)3029*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3, output_width_lt_4) { 3030*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3031*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 3032*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3033*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3034*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3035*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3036*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3037*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3038*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3039*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3040*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3041*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3042*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 3043*4bdc9457SAndroid Build Coastguard Worker } 3044*4bdc9457SAndroid Build Coastguard Worker } 3045*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3,output_width_gt_4)3046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3, output_width_gt_4) { 3047*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3048*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 3049*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3050*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3051*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3052*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3053*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3054*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3055*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3056*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3057*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3058*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3059*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 3060*4bdc9457SAndroid Build Coastguard Worker } 3061*4bdc9457SAndroid Build Coastguard Worker } 3062*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3,output_height_div_2)3063*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3, output_height_div_2) { 3064*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3065*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 4; input_height < 16; input_height += 2) { 3066*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3067*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3068*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3069*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3070*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3071*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3072*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3073*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3074*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3075*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3076*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3077*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 3078*4bdc9457SAndroid Build Coastguard Worker } 3079*4bdc9457SAndroid Build Coastguard Worker } 3080*4bdc9457SAndroid Build Coastguard Worker } 3081*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3,output_height_lt_2)3082*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3, output_height_lt_2) { 3083*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3084*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 2; input_height++) { 3085*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3086*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3087*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3088*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3089*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3090*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3091*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3092*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3093*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3094*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3095*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3096*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 3097*4bdc9457SAndroid Build Coastguard Worker } 3098*4bdc9457SAndroid Build Coastguard Worker } 3099*4bdc9457SAndroid Build Coastguard Worker } 3100*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3,output_height_gt_2)3101*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_2X4_ACC3, output_height_gt_2) { 3102*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3103*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 3104*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3105*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3106*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3107*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3108*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3109*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3110*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3111*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3112*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3113*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3114*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3115*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 3116*4bdc9457SAndroid Build Coastguard Worker } 3117*4bdc9457SAndroid Build Coastguard Worker } 3118*4bdc9457SAndroid Build Coastguard Worker } 3119*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 3120*4bdc9457SAndroid Build Coastguard Worker 3121*4bdc9457SAndroid Build Coastguard Worker 3122*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4,output_width_eq_4)3123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4, output_width_eq_4) { 3124*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3125*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3126*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3127*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 3128*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3129*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3130*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3131*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3132*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3133*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3134*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3135*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 3136*4bdc9457SAndroid Build Coastguard Worker } 3137*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4,output_width_div_4)3138*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4, output_width_div_4) { 3139*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3140*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 3141*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3142*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3143*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 3144*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3145*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3146*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3147*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3148*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3149*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3150*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3151*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 3152*4bdc9457SAndroid Build Coastguard Worker } 3153*4bdc9457SAndroid Build Coastguard Worker } 3154*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4,output_width_lt_4)3155*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4, output_width_lt_4) { 3156*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3157*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 3158*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3159*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3160*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 3161*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3162*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3163*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3164*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3165*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3166*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3167*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3168*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 3169*4bdc9457SAndroid Build Coastguard Worker } 3170*4bdc9457SAndroid Build Coastguard Worker } 3171*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4,output_width_gt_4)3172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4, output_width_gt_4) { 3173*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3174*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 3175*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3176*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3177*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 3178*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3179*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3180*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3181*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3182*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3183*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3184*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3185*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 3186*4bdc9457SAndroid Build Coastguard Worker } 3187*4bdc9457SAndroid Build Coastguard Worker } 3188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4,output_height_div_3)3189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4, output_height_div_3) { 3190*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3191*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 6; input_height < 24; input_height += 3) { 3192*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3193*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3194*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3195*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3196*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3197*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3198*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3199*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3200*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3201*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3202*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3203*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 3204*4bdc9457SAndroid Build Coastguard Worker } 3205*4bdc9457SAndroid Build Coastguard Worker } 3206*4bdc9457SAndroid Build Coastguard Worker } 3207*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4,output_height_lt_3)3208*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4, output_height_lt_3) { 3209*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3210*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 3211*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3212*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3213*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3214*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3215*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3216*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3217*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3218*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3219*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3220*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3221*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3222*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 3223*4bdc9457SAndroid Build Coastguard Worker } 3224*4bdc9457SAndroid Build Coastguard Worker } 3225*4bdc9457SAndroid Build Coastguard Worker } 3226*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4,output_height_gt_3)3227*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4, output_height_gt_3) { 3228*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3229*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 4; input_height < 7; input_height++) { 3230*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3231*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3232*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3233*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3234*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3235*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3236*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3237*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3238*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3239*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3240*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3241*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 3242*4bdc9457SAndroid Build Coastguard Worker } 3243*4bdc9457SAndroid Build Coastguard Worker } 3244*4bdc9457SAndroid Build Coastguard Worker } 3245*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 3246*4bdc9457SAndroid Build Coastguard Worker 3247*4bdc9457SAndroid Build Coastguard Worker 3248*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2,output_width_eq_4)3249*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2, output_width_eq_4) { 3250*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3251*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3252*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3253*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 3254*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3255*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3256*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3257*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3258*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3259*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3260*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3261*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 3262*4bdc9457SAndroid Build Coastguard Worker } 3263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2,output_width_div_4)3264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2, output_width_div_4) { 3265*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3266*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 3267*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3268*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3269*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 3270*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3271*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3272*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3273*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3274*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3275*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3276*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3277*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 3278*4bdc9457SAndroid Build Coastguard Worker } 3279*4bdc9457SAndroid Build Coastguard Worker } 3280*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2,output_width_lt_4)3281*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2, output_width_lt_4) { 3282*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3283*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 3284*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3285*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3286*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 3287*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3288*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3289*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3290*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3291*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3292*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3293*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3294*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 3295*4bdc9457SAndroid Build Coastguard Worker } 3296*4bdc9457SAndroid Build Coastguard Worker } 3297*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2,output_width_gt_4)3298*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2, output_width_gt_4) { 3299*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3300*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 3301*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3302*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3303*4bdc9457SAndroid Build Coastguard Worker .input_height(3) 3304*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3305*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3306*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3307*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3308*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3309*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3310*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3311*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 3312*4bdc9457SAndroid Build Coastguard Worker } 3313*4bdc9457SAndroid Build Coastguard Worker } 3314*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2,output_height_div_3)3315*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2, output_height_div_3) { 3316*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3317*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 6; input_height < 24; input_height += 3) { 3318*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3319*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3320*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3321*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3322*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3323*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3324*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3325*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3326*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3327*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3328*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3329*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 3330*4bdc9457SAndroid Build Coastguard Worker } 3331*4bdc9457SAndroid Build Coastguard Worker } 3332*4bdc9457SAndroid Build Coastguard Worker } 3333*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2,output_height_lt_3)3334*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2, output_height_lt_3) { 3335*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3336*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 3337*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3338*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3339*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3340*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3341*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3342*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3343*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3344*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3345*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3346*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3347*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3348*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 3349*4bdc9457SAndroid Build Coastguard Worker } 3350*4bdc9457SAndroid Build Coastguard Worker } 3351*4bdc9457SAndroid Build Coastguard Worker } 3352*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2,output_height_gt_3)3353*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_3X4_ACC2, output_height_gt_3) { 3354*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3355*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 4; input_height < 7; input_height++) { 3356*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3357*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3358*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3359*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3360*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3361*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3362*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3363*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3364*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3365*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3366*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3367*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 3368*4bdc9457SAndroid Build Coastguard Worker } 3369*4bdc9457SAndroid Build Coastguard Worker } 3370*4bdc9457SAndroid Build Coastguard Worker } 3371*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 3372*4bdc9457SAndroid Build Coastguard Worker 3373*4bdc9457SAndroid Build Coastguard Worker 3374*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4,output_width_eq_4)3375*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4, output_width_eq_4) { 3376*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3377*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3378*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3379*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 3380*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3381*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3382*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3383*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3384*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3385*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3386*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3387*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4, xnn_init_f16_chw_params); 3388*4bdc9457SAndroid Build Coastguard Worker } 3389*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4,output_width_div_4)3390*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4, output_width_div_4) { 3391*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3392*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 3393*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3394*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3395*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 3396*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3397*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3398*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3399*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3400*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3401*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3402*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3403*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4, xnn_init_f16_chw_params); 3404*4bdc9457SAndroid Build Coastguard Worker } 3405*4bdc9457SAndroid Build Coastguard Worker } 3406*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4,output_width_lt_4)3407*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4, output_width_lt_4) { 3408*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3409*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 3410*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3411*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3412*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 3413*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3414*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3415*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3416*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3417*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3418*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3419*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3420*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4, xnn_init_f16_chw_params); 3421*4bdc9457SAndroid Build Coastguard Worker } 3422*4bdc9457SAndroid Build Coastguard Worker } 3423*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4,output_width_gt_4)3424*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4, output_width_gt_4) { 3425*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3426*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 3427*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3428*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3429*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 3430*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3431*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3432*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3433*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3434*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3435*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3436*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3437*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4, xnn_init_f16_chw_params); 3438*4bdc9457SAndroid Build Coastguard Worker } 3439*4bdc9457SAndroid Build Coastguard Worker } 3440*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4,output_height_div_4)3441*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4, output_height_div_4) { 3442*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3443*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 8; input_height < 32; input_height += 4) { 3444*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3445*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3446*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3447*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3448*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3449*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3450*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3451*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3452*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3453*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3454*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3455*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4, xnn_init_f16_chw_params); 3456*4bdc9457SAndroid Build Coastguard Worker } 3457*4bdc9457SAndroid Build Coastguard Worker } 3458*4bdc9457SAndroid Build Coastguard Worker } 3459*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4,output_height_lt_4)3460*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4, output_height_lt_4) { 3461*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3462*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 4; input_height++) { 3463*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3464*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3465*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3466*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3467*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3468*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3469*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3470*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3471*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3472*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3473*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3474*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4, xnn_init_f16_chw_params); 3475*4bdc9457SAndroid Build Coastguard Worker } 3476*4bdc9457SAndroid Build Coastguard Worker } 3477*4bdc9457SAndroid Build Coastguard Worker } 3478*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4,output_height_gt_4)3479*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4, output_height_gt_4) { 3480*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3481*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 9; input_height++) { 3482*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3483*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3484*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3485*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3486*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3487*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3488*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3489*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3490*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3491*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3492*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3493*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4, xnn_init_f16_chw_params); 3494*4bdc9457SAndroid Build Coastguard Worker } 3495*4bdc9457SAndroid Build Coastguard Worker } 3496*4bdc9457SAndroid Build Coastguard Worker } 3497*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 3498*4bdc9457SAndroid Build Coastguard Worker 3499*4bdc9457SAndroid Build Coastguard Worker 3500*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2,output_width_eq_4)3501*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2, output_width_eq_4) { 3502*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3503*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3504*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3505*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 3506*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3507*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3508*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3509*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3510*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3511*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3512*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3513*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4_acc2, xnn_init_f16_chw_params); 3514*4bdc9457SAndroid Build Coastguard Worker } 3515*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2,output_width_div_4)3516*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2, output_width_div_4) { 3517*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3518*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 3519*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3520*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3521*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 3522*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3523*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3524*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3525*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3526*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3527*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3528*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3529*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4_acc2, xnn_init_f16_chw_params); 3530*4bdc9457SAndroid Build Coastguard Worker } 3531*4bdc9457SAndroid Build Coastguard Worker } 3532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2,output_width_lt_4)3533*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2, output_width_lt_4) { 3534*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3535*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 3536*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3537*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3538*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 3539*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3540*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3541*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3542*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3543*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3544*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3545*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3546*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4_acc2, xnn_init_f16_chw_params); 3547*4bdc9457SAndroid Build Coastguard Worker } 3548*4bdc9457SAndroid Build Coastguard Worker } 3549*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2,output_width_gt_4)3550*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2, output_width_gt_4) { 3551*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3552*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 3553*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3554*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3555*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 3556*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3557*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3558*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3559*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3560*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3561*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3562*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3563*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4_acc2, xnn_init_f16_chw_params); 3564*4bdc9457SAndroid Build Coastguard Worker } 3565*4bdc9457SAndroid Build Coastguard Worker } 3566*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2,output_height_div_4)3567*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2, output_height_div_4) { 3568*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3569*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 8; input_height < 32; input_height += 4) { 3570*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3571*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3572*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3573*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3574*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3575*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3576*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3577*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3578*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3579*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3580*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3581*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4_acc2, xnn_init_f16_chw_params); 3582*4bdc9457SAndroid Build Coastguard Worker } 3583*4bdc9457SAndroid Build Coastguard Worker } 3584*4bdc9457SAndroid Build Coastguard Worker } 3585*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2,output_height_lt_4)3586*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2, output_height_lt_4) { 3587*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3588*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 4; input_height++) { 3589*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3590*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3591*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3592*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3593*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3594*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3595*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3596*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3597*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3598*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3599*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3600*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4_acc2, xnn_init_f16_chw_params); 3601*4bdc9457SAndroid Build Coastguard Worker } 3602*4bdc9457SAndroid Build Coastguard Worker } 3603*4bdc9457SAndroid Build Coastguard Worker } 3604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2,output_height_gt_4)3605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_4X4_ACC2, output_height_gt_4) { 3606*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3607*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 9; input_height++) { 3608*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3609*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3610*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3611*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3612*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3613*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3614*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3615*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3616*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3617*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3618*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3619*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_4x4_acc2, xnn_init_f16_chw_params); 3620*4bdc9457SAndroid Build Coastguard Worker } 3621*4bdc9457SAndroid Build Coastguard Worker } 3622*4bdc9457SAndroid Build Coastguard Worker } 3623*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 3624*4bdc9457SAndroid Build Coastguard Worker 3625*4bdc9457SAndroid Build Coastguard Worker 3626*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4,output_width_eq_4)3627*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4, output_width_eq_4) { 3628*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3629*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3630*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3631*4bdc9457SAndroid Build Coastguard Worker .input_height(5) 3632*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3633*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3634*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3635*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3636*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3637*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3638*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3639*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_5x4, xnn_init_f16_chw_params); 3640*4bdc9457SAndroid Build Coastguard Worker } 3641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4,output_width_div_4)3642*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4, output_width_div_4) { 3643*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3644*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 8; input_width < 32; input_width += 4) { 3645*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3646*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3647*4bdc9457SAndroid Build Coastguard Worker .input_height(5) 3648*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3649*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3650*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3651*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3652*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3653*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3654*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3655*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_5x4, xnn_init_f16_chw_params); 3656*4bdc9457SAndroid Build Coastguard Worker } 3657*4bdc9457SAndroid Build Coastguard Worker } 3658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4,output_width_lt_4)3659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4, output_width_lt_4) { 3660*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3661*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 4; input_width++) { 3662*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3663*4bdc9457SAndroid Build Coastguard Worker .input_width(4) 3664*4bdc9457SAndroid Build Coastguard Worker .input_height(5) 3665*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3666*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3667*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3668*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3669*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3670*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3671*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3672*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_5x4, xnn_init_f16_chw_params); 3673*4bdc9457SAndroid Build Coastguard Worker } 3674*4bdc9457SAndroid Build Coastguard Worker } 3675*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4,output_width_gt_4)3676*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4, output_width_gt_4) { 3677*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3678*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 5; input_width < 9; input_width++) { 3679*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3680*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3681*4bdc9457SAndroid Build Coastguard Worker .input_height(5) 3682*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3683*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3684*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3685*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3686*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3687*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3688*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3689*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_5x4, xnn_init_f16_chw_params); 3690*4bdc9457SAndroid Build Coastguard Worker } 3691*4bdc9457SAndroid Build Coastguard Worker } 3692*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4,output_height_div_5)3693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4, output_height_div_5) { 3694*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3695*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 10; input_height < 40; input_height += 5) { 3696*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3697*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3698*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3699*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3700*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3701*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3702*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3703*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3704*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3705*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3706*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3707*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_5x4, xnn_init_f16_chw_params); 3708*4bdc9457SAndroid Build Coastguard Worker } 3709*4bdc9457SAndroid Build Coastguard Worker } 3710*4bdc9457SAndroid Build Coastguard Worker } 3711*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4,output_height_lt_5)3712*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4, output_height_lt_5) { 3713*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3714*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 5; input_height++) { 3715*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3716*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3717*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3718*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3719*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3720*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3721*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3722*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3723*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3724*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3725*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3726*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_5x4, xnn_init_f16_chw_params); 3727*4bdc9457SAndroid Build Coastguard Worker } 3728*4bdc9457SAndroid Build Coastguard Worker } 3729*4bdc9457SAndroid Build Coastguard Worker } 3730*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4,output_height_gt_5)3731*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5P2__NEONFP16ARITH_5X4, output_height_gt_5) { 3732*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3733*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 6; input_height < 11; input_height++) { 3734*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 21; input_width += 3) { 3735*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3736*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3737*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3738*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3739*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3740*4bdc9457SAndroid Build Coastguard Worker .subsampling(1) 3741*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3742*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3743*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3744*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3745*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5p2__neonfp16arith_5x4, xnn_init_f16_chw_params); 3746*4bdc9457SAndroid Build Coastguard Worker } 3747*4bdc9457SAndroid Build Coastguard Worker } 3748*4bdc9457SAndroid Build Coastguard Worker } 3749*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 3750*4bdc9457SAndroid Build Coastguard Worker 3751*4bdc9457SAndroid Build Coastguard Worker 3752*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4,output_width_eq_4)3753*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4, output_width_eq_4) { 3754*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3755*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 3756*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3757*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3758*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3759*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3760*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3761*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3762*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3763*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3764*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3765*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3766*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 3767*4bdc9457SAndroid Build Coastguard Worker } 3768*4bdc9457SAndroid Build Coastguard Worker } 3769*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4,output_width_div_4)3770*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4, output_width_div_4) { 3771*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3772*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 3773*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3774*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3775*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3776*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3777*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3778*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3779*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3780*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3781*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3782*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3783*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 3784*4bdc9457SAndroid Build Coastguard Worker } 3785*4bdc9457SAndroid Build Coastguard Worker } 3786*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4,output_width_lt_4)3787*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4, output_width_lt_4) { 3788*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3789*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 3790*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3791*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 3792*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3793*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3794*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3795*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3796*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3797*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3798*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3799*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3800*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 3801*4bdc9457SAndroid Build Coastguard Worker } 3802*4bdc9457SAndroid Build Coastguard Worker } 3803*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4,output_width_gt_4)3804*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4, output_width_gt_4) { 3805*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3806*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 3807*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3808*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3809*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3810*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3811*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3812*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3813*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3814*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3815*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3816*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3817*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 3818*4bdc9457SAndroid Build Coastguard Worker } 3819*4bdc9457SAndroid Build Coastguard Worker } 3820*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4,output_height_eq_1)3821*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4, output_height_eq_1) { 3822*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3823*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 3824*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 3825*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3826*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3827*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3828*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3829*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3830*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3831*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3832*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3833*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3834*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3835*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 3836*4bdc9457SAndroid Build Coastguard Worker } 3837*4bdc9457SAndroid Build Coastguard Worker } 3838*4bdc9457SAndroid Build Coastguard Worker } 3839*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4,output_height_gt_1)3840*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4, output_height_gt_1) { 3841*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3842*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 3843*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 3844*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3845*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3846*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3847*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3848*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3849*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3850*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3851*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3852*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3853*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3854*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 3855*4bdc9457SAndroid Build Coastguard Worker } 3856*4bdc9457SAndroid Build Coastguard Worker } 3857*4bdc9457SAndroid Build Coastguard Worker } 3858*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4,padding_top_eq_1)3859*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4, padding_top_eq_1) { 3860*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3861*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 3862*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 3863*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3864*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3865*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3866*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3867*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3868*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3869*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3870*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3871*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 3872*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3873*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4, xnn_init_f16_chw_params); 3874*4bdc9457SAndroid Build Coastguard Worker } 3875*4bdc9457SAndroid Build Coastguard Worker } 3876*4bdc9457SAndroid Build Coastguard Worker } 3877*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 3878*4bdc9457SAndroid Build Coastguard Worker 3879*4bdc9457SAndroid Build Coastguard Worker 3880*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2,output_width_eq_4)3881*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2, output_width_eq_4) { 3882*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3883*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 3884*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3885*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3886*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3887*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3888*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3889*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3890*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3891*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3892*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3893*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3894*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 3895*4bdc9457SAndroid Build Coastguard Worker } 3896*4bdc9457SAndroid Build Coastguard Worker } 3897*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2,output_width_div_4)3898*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2, output_width_div_4) { 3899*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3900*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 3901*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3902*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3903*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3904*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3905*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3906*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3907*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3908*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3909*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3910*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3911*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 3912*4bdc9457SAndroid Build Coastguard Worker } 3913*4bdc9457SAndroid Build Coastguard Worker } 3914*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2,output_width_lt_4)3915*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2, output_width_lt_4) { 3916*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3917*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 3918*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3919*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 3920*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3921*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3922*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3923*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3924*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3925*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3926*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3927*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3928*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 3929*4bdc9457SAndroid Build Coastguard Worker } 3930*4bdc9457SAndroid Build Coastguard Worker } 3931*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2,output_width_gt_4)3932*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2, output_width_gt_4) { 3933*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3934*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 3935*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3936*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3937*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 3938*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3939*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3940*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3941*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3942*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3943*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3944*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3945*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 3946*4bdc9457SAndroid Build Coastguard Worker } 3947*4bdc9457SAndroid Build Coastguard Worker } 3948*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2,output_height_eq_1)3949*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2, output_height_eq_1) { 3950*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3951*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 3952*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 3953*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3954*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3955*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3956*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3957*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3958*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3959*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3960*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3961*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3962*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3963*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 3964*4bdc9457SAndroid Build Coastguard Worker } 3965*4bdc9457SAndroid Build Coastguard Worker } 3966*4bdc9457SAndroid Build Coastguard Worker } 3967*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2,output_height_gt_1)3968*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2, output_height_gt_1) { 3969*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3970*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 3971*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 3972*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3973*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3974*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3975*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3976*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3977*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3978*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3979*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3980*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 3981*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 3982*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 3983*4bdc9457SAndroid Build Coastguard Worker } 3984*4bdc9457SAndroid Build Coastguard Worker } 3985*4bdc9457SAndroid Build Coastguard Worker } 3986*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2,padding_top_eq_1)3987*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC2, padding_top_eq_1) { 3988*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3989*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 3990*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 3991*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 3992*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 3993*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 3994*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 3995*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 3996*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 3997*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 3998*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 3999*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 4000*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4001*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc2, xnn_init_f16_chw_params); 4002*4bdc9457SAndroid Build Coastguard Worker } 4003*4bdc9457SAndroid Build Coastguard Worker } 4004*4bdc9457SAndroid Build Coastguard Worker } 4005*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 4006*4bdc9457SAndroid Build Coastguard Worker 4007*4bdc9457SAndroid Build Coastguard Worker 4008*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3,output_width_eq_4)4009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3, output_width_eq_4) { 4010*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4011*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 4012*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4013*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4014*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4015*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4016*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4017*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4018*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4019*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4020*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4021*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4022*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 4023*4bdc9457SAndroid Build Coastguard Worker } 4024*4bdc9457SAndroid Build Coastguard Worker } 4025*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3,output_width_div_4)4026*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3, output_width_div_4) { 4027*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4028*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 4029*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4030*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4031*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4032*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4033*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4034*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4035*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4036*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4037*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4038*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4039*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 4040*4bdc9457SAndroid Build Coastguard Worker } 4041*4bdc9457SAndroid Build Coastguard Worker } 4042*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3,output_width_lt_4)4043*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3, output_width_lt_4) { 4044*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4045*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 4046*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4047*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 4048*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4049*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4050*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4051*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4052*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4053*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4054*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4055*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4056*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 4057*4bdc9457SAndroid Build Coastguard Worker } 4058*4bdc9457SAndroid Build Coastguard Worker } 4059*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3,output_width_gt_4)4060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3, output_width_gt_4) { 4061*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4062*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 4063*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4064*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4065*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4066*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4067*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4068*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4069*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4070*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4071*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4072*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4073*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 4074*4bdc9457SAndroid Build Coastguard Worker } 4075*4bdc9457SAndroid Build Coastguard Worker } 4076*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3,output_height_eq_1)4077*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3, output_height_eq_1) { 4078*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4079*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 4080*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4081*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4082*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4083*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4084*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4085*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4086*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4087*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4088*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4089*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4090*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4091*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 4092*4bdc9457SAndroid Build Coastguard Worker } 4093*4bdc9457SAndroid Build Coastguard Worker } 4094*4bdc9457SAndroid Build Coastguard Worker } 4095*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3,output_height_gt_1)4096*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3, output_height_gt_1) { 4097*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4098*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 4099*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4100*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4101*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4102*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4103*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4104*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4105*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4106*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4107*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4108*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4109*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4110*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 4111*4bdc9457SAndroid Build Coastguard Worker } 4112*4bdc9457SAndroid Build Coastguard Worker } 4113*4bdc9457SAndroid Build Coastguard Worker } 4114*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3,padding_top_eq_1)4115*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC3, padding_top_eq_1) { 4116*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4117*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 4118*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4119*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4120*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4121*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4122*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4123*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4124*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4125*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4126*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4127*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 4128*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4129*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc3, xnn_init_f16_chw_params); 4130*4bdc9457SAndroid Build Coastguard Worker } 4131*4bdc9457SAndroid Build Coastguard Worker } 4132*4bdc9457SAndroid Build Coastguard Worker } 4133*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 4134*4bdc9457SAndroid Build Coastguard Worker 4135*4bdc9457SAndroid Build Coastguard Worker 4136*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4,output_width_eq_4)4137*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4, output_width_eq_4) { 4138*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4139*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 4140*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4141*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4142*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4143*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4144*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4145*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4146*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4147*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4148*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4149*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4150*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 4151*4bdc9457SAndroid Build Coastguard Worker } 4152*4bdc9457SAndroid Build Coastguard Worker } 4153*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4,output_width_div_4)4154*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4, output_width_div_4) { 4155*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4156*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 4157*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4158*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4159*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4160*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4161*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4162*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4163*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4164*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4165*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4166*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4167*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 4168*4bdc9457SAndroid Build Coastguard Worker } 4169*4bdc9457SAndroid Build Coastguard Worker } 4170*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4,output_width_lt_4)4171*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4, output_width_lt_4) { 4172*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4173*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 4174*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4175*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 4176*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4177*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4178*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4179*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4180*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4181*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4182*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4183*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4184*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 4185*4bdc9457SAndroid Build Coastguard Worker } 4186*4bdc9457SAndroid Build Coastguard Worker } 4187*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4,output_width_gt_4)4188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4, output_width_gt_4) { 4189*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4190*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 4191*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4192*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4193*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4194*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4195*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4196*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4197*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4198*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4199*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4200*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4201*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 4202*4bdc9457SAndroid Build Coastguard Worker } 4203*4bdc9457SAndroid Build Coastguard Worker } 4204*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4,output_height_eq_1)4205*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4, output_height_eq_1) { 4206*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4207*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 4208*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4209*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4210*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4211*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4212*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4213*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4214*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4215*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4216*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4217*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4218*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4219*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 4220*4bdc9457SAndroid Build Coastguard Worker } 4221*4bdc9457SAndroid Build Coastguard Worker } 4222*4bdc9457SAndroid Build Coastguard Worker } 4223*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4,output_height_gt_1)4224*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4, output_height_gt_1) { 4225*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4226*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 4227*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4228*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4229*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4230*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4231*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4232*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4233*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4234*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4235*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4236*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4237*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4238*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 4239*4bdc9457SAndroid Build Coastguard Worker } 4240*4bdc9457SAndroid Build Coastguard Worker } 4241*4bdc9457SAndroid Build Coastguard Worker } 4242*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4,padding_top_eq_1)4243*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC4, padding_top_eq_1) { 4244*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4245*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 4246*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4247*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4248*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4249*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4250*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4251*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4252*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4253*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4254*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4255*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 4256*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4257*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc4, xnn_init_f16_chw_params); 4258*4bdc9457SAndroid Build Coastguard Worker } 4259*4bdc9457SAndroid Build Coastguard Worker } 4260*4bdc9457SAndroid Build Coastguard Worker } 4261*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 4262*4bdc9457SAndroid Build Coastguard Worker 4263*4bdc9457SAndroid Build Coastguard Worker 4264*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5,output_width_eq_4)4265*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5, output_width_eq_4) { 4266*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4267*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 4268*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4269*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4270*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4271*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4272*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4273*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4274*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4275*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4276*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4277*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4278*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 4279*4bdc9457SAndroid Build Coastguard Worker } 4280*4bdc9457SAndroid Build Coastguard Worker } 4281*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5,output_width_div_4)4282*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5, output_width_div_4) { 4283*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4284*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 4285*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4286*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4287*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4288*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4289*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4290*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4291*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4292*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4293*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4294*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4295*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 4296*4bdc9457SAndroid Build Coastguard Worker } 4297*4bdc9457SAndroid Build Coastguard Worker } 4298*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5,output_width_lt_4)4299*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5, output_width_lt_4) { 4300*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4301*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 4302*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4303*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 4304*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4305*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4306*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4307*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4308*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4309*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4310*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4311*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4312*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 4313*4bdc9457SAndroid Build Coastguard Worker } 4314*4bdc9457SAndroid Build Coastguard Worker } 4315*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5,output_width_gt_4)4316*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5, output_width_gt_4) { 4317*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4318*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 4319*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4320*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4321*4bdc9457SAndroid Build Coastguard Worker .input_height(2) 4322*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4323*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4324*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4325*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4326*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4327*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4328*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4329*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 4330*4bdc9457SAndroid Build Coastguard Worker } 4331*4bdc9457SAndroid Build Coastguard Worker } 4332*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5,output_height_eq_1)4333*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5, output_height_eq_1) { 4334*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4335*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 4336*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4337*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4338*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4339*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4340*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4341*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4342*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4343*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4344*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4345*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4346*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4347*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 4348*4bdc9457SAndroid Build Coastguard Worker } 4349*4bdc9457SAndroid Build Coastguard Worker } 4350*4bdc9457SAndroid Build Coastguard Worker } 4351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5,output_height_gt_1)4352*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5, output_height_gt_1) { 4353*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4354*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 4355*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4356*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4357*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4358*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4359*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4360*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4361*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4362*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4363*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4364*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4365*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4366*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 4367*4bdc9457SAndroid Build Coastguard Worker } 4368*4bdc9457SAndroid Build Coastguard Worker } 4369*4bdc9457SAndroid Build Coastguard Worker } 4370*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5,padding_top_eq_1)4371*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_1X4_ACC5, padding_top_eq_1) { 4372*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4373*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 8; input_height++) { 4374*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4375*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4376*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4377*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4378*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4379*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4380*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4381*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4382*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4383*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 4384*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4385*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_1x4_acc5, xnn_init_f16_chw_params); 4386*4bdc9457SAndroid Build Coastguard Worker } 4387*4bdc9457SAndroid Build Coastguard Worker } 4388*4bdc9457SAndroid Build Coastguard Worker } 4389*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 4390*4bdc9457SAndroid Build Coastguard Worker 4391*4bdc9457SAndroid Build Coastguard Worker 4392*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,output_width_eq_4)4393*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, output_width_eq_4) { 4394*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4395*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 4396*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4397*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4398*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4399*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4400*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4401*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4402*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4403*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4404*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4405*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4406*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4407*4bdc9457SAndroid Build Coastguard Worker } 4408*4bdc9457SAndroid Build Coastguard Worker } 4409*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,output_width_div_4)4410*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, output_width_div_4) { 4411*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4412*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 4413*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4414*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4415*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4416*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4417*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4418*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4419*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4420*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4421*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4422*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4423*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4424*4bdc9457SAndroid Build Coastguard Worker } 4425*4bdc9457SAndroid Build Coastguard Worker } 4426*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,output_width_lt_4)4427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, output_width_lt_4) { 4428*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4429*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 4430*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4431*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 4432*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4433*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4434*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4435*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4436*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4437*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4438*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4439*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4440*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4441*4bdc9457SAndroid Build Coastguard Worker } 4442*4bdc9457SAndroid Build Coastguard Worker } 4443*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,output_width_gt_4)4444*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, output_width_gt_4) { 4445*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4446*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 4447*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4448*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4449*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4450*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4451*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4452*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4453*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4454*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4455*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4456*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4457*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4458*4bdc9457SAndroid Build Coastguard Worker } 4459*4bdc9457SAndroid Build Coastguard Worker } 4460*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,output_height_eq_2)4461*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, output_height_eq_2) { 4462*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4463*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 4464*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4465*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4466*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4467*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4468*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4469*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4470*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4471*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4472*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4473*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4474*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4475*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4476*4bdc9457SAndroid Build Coastguard Worker } 4477*4bdc9457SAndroid Build Coastguard Worker } 4478*4bdc9457SAndroid Build Coastguard Worker } 4479*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,output_height_div_2)4480*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, output_height_div_2) { 4481*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4482*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 8; input_height < 32; input_height += 4) { 4483*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4484*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4485*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4486*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4487*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4488*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4489*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4490*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4491*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4492*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4493*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4494*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4495*4bdc9457SAndroid Build Coastguard Worker } 4496*4bdc9457SAndroid Build Coastguard Worker } 4497*4bdc9457SAndroid Build Coastguard Worker } 4498*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,output_height_lt_2)4499*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, output_height_lt_2) { 4500*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4501*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 4502*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4503*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4504*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4505*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4506*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4507*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4508*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4509*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4510*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4511*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4512*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4513*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4514*4bdc9457SAndroid Build Coastguard Worker } 4515*4bdc9457SAndroid Build Coastguard Worker } 4516*4bdc9457SAndroid Build Coastguard Worker } 4517*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,output_height_gt_2)4518*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, output_height_gt_2) { 4519*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4520*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 9; input_height++) { 4521*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4522*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4523*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4524*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4525*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4526*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4527*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4528*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4529*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4530*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4531*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4532*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4533*4bdc9457SAndroid Build Coastguard Worker } 4534*4bdc9457SAndroid Build Coastguard Worker } 4535*4bdc9457SAndroid Build Coastguard Worker } 4536*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4,padding_top_eq_1)4537*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4, padding_top_eq_1) { 4538*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4539*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 14; input_height++) { 4540*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4541*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4542*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4543*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4544*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4545*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4546*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4547*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4548*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4549*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 4550*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4551*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4, xnn_init_f16_chw_params); 4552*4bdc9457SAndroid Build Coastguard Worker } 4553*4bdc9457SAndroid Build Coastguard Worker } 4554*4bdc9457SAndroid Build Coastguard Worker } 4555*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 4556*4bdc9457SAndroid Build Coastguard Worker 4557*4bdc9457SAndroid Build Coastguard Worker 4558*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,output_width_eq_4)4559*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, output_width_eq_4) { 4560*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4561*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 4562*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4563*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4564*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4565*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4566*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4567*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4568*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4569*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4570*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4571*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4572*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4573*4bdc9457SAndroid Build Coastguard Worker } 4574*4bdc9457SAndroid Build Coastguard Worker } 4575*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,output_width_div_4)4576*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, output_width_div_4) { 4577*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4578*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 4579*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4580*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4581*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4582*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4583*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4584*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4585*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4586*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4587*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4588*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4589*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4590*4bdc9457SAndroid Build Coastguard Worker } 4591*4bdc9457SAndroid Build Coastguard Worker } 4592*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,output_width_lt_4)4593*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, output_width_lt_4) { 4594*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4595*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 4596*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4597*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 4598*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4599*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4600*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4601*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4602*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4603*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4604*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4605*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4606*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4607*4bdc9457SAndroid Build Coastguard Worker } 4608*4bdc9457SAndroid Build Coastguard Worker } 4609*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,output_width_gt_4)4610*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, output_width_gt_4) { 4611*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4612*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 4613*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4614*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4615*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4616*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4617*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4618*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4619*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4620*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4621*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4622*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4623*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4624*4bdc9457SAndroid Build Coastguard Worker } 4625*4bdc9457SAndroid Build Coastguard Worker } 4626*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,output_height_eq_2)4627*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, output_height_eq_2) { 4628*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4629*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 4630*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4631*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4632*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4633*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4634*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4635*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4636*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4637*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4638*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4639*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4640*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4641*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4642*4bdc9457SAndroid Build Coastguard Worker } 4643*4bdc9457SAndroid Build Coastguard Worker } 4644*4bdc9457SAndroid Build Coastguard Worker } 4645*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,output_height_div_2)4646*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, output_height_div_2) { 4647*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4648*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 8; input_height < 32; input_height += 4) { 4649*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4650*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4651*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4652*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4653*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4654*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4655*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4656*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4657*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4658*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4659*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4660*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4661*4bdc9457SAndroid Build Coastguard Worker } 4662*4bdc9457SAndroid Build Coastguard Worker } 4663*4bdc9457SAndroid Build Coastguard Worker } 4664*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,output_height_lt_2)4665*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, output_height_lt_2) { 4666*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4667*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 4668*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4669*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4670*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4671*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4672*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4673*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4674*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4675*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4676*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4677*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4678*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4679*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4680*4bdc9457SAndroid Build Coastguard Worker } 4681*4bdc9457SAndroid Build Coastguard Worker } 4682*4bdc9457SAndroid Build Coastguard Worker } 4683*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,output_height_gt_2)4684*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, output_height_gt_2) { 4685*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4686*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 9; input_height++) { 4687*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4688*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4689*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4690*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4691*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4692*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4693*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4694*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4695*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4696*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4697*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4698*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4699*4bdc9457SAndroid Build Coastguard Worker } 4700*4bdc9457SAndroid Build Coastguard Worker } 4701*4bdc9457SAndroid Build Coastguard Worker } 4702*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2,padding_top_eq_1)4703*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC2, padding_top_eq_1) { 4704*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4705*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 14; input_height++) { 4706*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4707*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4708*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4709*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4710*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4711*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4712*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4713*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4714*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4715*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 4716*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4717*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc2, xnn_init_f16_chw_params); 4718*4bdc9457SAndroid Build Coastguard Worker } 4719*4bdc9457SAndroid Build Coastguard Worker } 4720*4bdc9457SAndroid Build Coastguard Worker } 4721*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 4722*4bdc9457SAndroid Build Coastguard Worker 4723*4bdc9457SAndroid Build Coastguard Worker 4724*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,output_width_eq_4)4725*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, output_width_eq_4) { 4726*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4727*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 4728*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4729*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4730*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4731*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4732*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4733*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4734*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4735*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4736*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4737*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4738*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4739*4bdc9457SAndroid Build Coastguard Worker } 4740*4bdc9457SAndroid Build Coastguard Worker } 4741*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,output_width_div_4)4742*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, output_width_div_4) { 4743*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4744*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 4745*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4746*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4747*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4748*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4749*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4750*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4751*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4752*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4753*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4754*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4755*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4756*4bdc9457SAndroid Build Coastguard Worker } 4757*4bdc9457SAndroid Build Coastguard Worker } 4758*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,output_width_lt_4)4759*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, output_width_lt_4) { 4760*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4761*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 4762*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4763*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 4764*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4765*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4766*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4767*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4768*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4769*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4770*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4771*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4772*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4773*4bdc9457SAndroid Build Coastguard Worker } 4774*4bdc9457SAndroid Build Coastguard Worker } 4775*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,output_width_gt_4)4776*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, output_width_gt_4) { 4777*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4778*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 4779*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4780*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4781*4bdc9457SAndroid Build Coastguard Worker .input_height(4) 4782*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4783*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4784*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4785*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4786*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4787*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4788*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4789*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4790*4bdc9457SAndroid Build Coastguard Worker } 4791*4bdc9457SAndroid Build Coastguard Worker } 4792*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,output_height_eq_2)4793*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, output_height_eq_2) { 4794*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4795*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 3; input_height < 5; input_height++) { 4796*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4797*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4798*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4799*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4800*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4801*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4802*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4803*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4804*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4805*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4806*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4807*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4808*4bdc9457SAndroid Build Coastguard Worker } 4809*4bdc9457SAndroid Build Coastguard Worker } 4810*4bdc9457SAndroid Build Coastguard Worker } 4811*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,output_height_div_2)4812*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, output_height_div_2) { 4813*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4814*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 8; input_height < 32; input_height += 4) { 4815*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4816*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4817*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4818*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4819*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4820*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4821*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4822*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4823*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4824*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4825*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4826*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4827*4bdc9457SAndroid Build Coastguard Worker } 4828*4bdc9457SAndroid Build Coastguard Worker } 4829*4bdc9457SAndroid Build Coastguard Worker } 4830*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,output_height_lt_2)4831*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, output_height_lt_2) { 4832*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4833*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 3; input_height++) { 4834*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4835*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4836*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4837*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4838*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4839*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4840*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4841*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4842*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4843*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4844*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4845*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4846*4bdc9457SAndroid Build Coastguard Worker } 4847*4bdc9457SAndroid Build Coastguard Worker } 4848*4bdc9457SAndroid Build Coastguard Worker } 4849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,output_height_gt_2)4850*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, output_height_gt_2) { 4851*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4852*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 9; input_height++) { 4853*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4854*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4855*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4856*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4857*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4858*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4859*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4860*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4861*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4862*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4863*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4864*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4865*4bdc9457SAndroid Build Coastguard Worker } 4866*4bdc9457SAndroid Build Coastguard Worker } 4867*4bdc9457SAndroid Build Coastguard Worker } 4868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3,padding_top_eq_1)4869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_2X4_ACC3, padding_top_eq_1) { 4870*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4871*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 14; input_height++) { 4872*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4873*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4874*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4875*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4876*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4877*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4878*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4879*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4880*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4881*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 4882*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4883*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_2x4_acc3, xnn_init_f16_chw_params); 4884*4bdc9457SAndroid Build Coastguard Worker } 4885*4bdc9457SAndroid Build Coastguard Worker } 4886*4bdc9457SAndroid Build Coastguard Worker } 4887*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 4888*4bdc9457SAndroid Build Coastguard Worker 4889*4bdc9457SAndroid Build Coastguard Worker 4890*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,output_width_eq_4)4891*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, output_width_eq_4) { 4892*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4893*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 4894*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4895*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4896*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 4897*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4898*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4899*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4900*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4901*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4902*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4903*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4904*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 4905*4bdc9457SAndroid Build Coastguard Worker } 4906*4bdc9457SAndroid Build Coastguard Worker } 4907*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,output_width_div_4)4908*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, output_width_div_4) { 4909*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4910*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 4911*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4912*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4913*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 4914*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4915*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4916*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4917*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4918*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4919*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4920*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4921*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 4922*4bdc9457SAndroid Build Coastguard Worker } 4923*4bdc9457SAndroid Build Coastguard Worker } 4924*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,output_width_lt_4)4925*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, output_width_lt_4) { 4926*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4927*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 4928*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4929*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 4930*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 4931*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4932*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4933*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4934*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4935*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4936*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4937*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4938*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 4939*4bdc9457SAndroid Build Coastguard Worker } 4940*4bdc9457SAndroid Build Coastguard Worker } 4941*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,output_width_gt_4)4942*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, output_width_gt_4) { 4943*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4944*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 4945*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4946*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4947*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 4948*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4949*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4950*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4951*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4952*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4953*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4954*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4955*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 4956*4bdc9457SAndroid Build Coastguard Worker } 4957*4bdc9457SAndroid Build Coastguard Worker } 4958*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,output_height_eq_3)4959*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, output_height_eq_3) { 4960*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4961*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 7; input_height++) { 4962*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4963*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4964*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4965*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4966*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4967*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4968*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4969*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4970*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4971*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4972*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4973*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 4974*4bdc9457SAndroid Build Coastguard Worker } 4975*4bdc9457SAndroid Build Coastguard Worker } 4976*4bdc9457SAndroid Build Coastguard Worker } 4977*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,output_height_div_3)4978*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, output_height_div_3) { 4979*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4980*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 12; input_height < 48; input_height += 6) { 4981*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 4982*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 4983*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 4984*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 4985*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 4986*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 4987*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 4988*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 4989*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 4990*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 4991*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 4992*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 4993*4bdc9457SAndroid Build Coastguard Worker } 4994*4bdc9457SAndroid Build Coastguard Worker } 4995*4bdc9457SAndroid Build Coastguard Worker } 4996*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,output_height_lt_3)4997*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, output_height_lt_3) { 4998*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4999*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 5; input_height++) { 5000*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 5001*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5002*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5003*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 5004*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5005*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5006*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5007*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5008*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5009*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5010*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5011*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 5012*4bdc9457SAndroid Build Coastguard Worker } 5013*4bdc9457SAndroid Build Coastguard Worker } 5014*4bdc9457SAndroid Build Coastguard Worker } 5015*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,output_height_gt_3)5016*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, output_height_gt_3) { 5017*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5018*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 7; input_height < 13; input_height++) { 5019*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 5020*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5021*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5022*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 5023*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5024*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5025*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5026*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5027*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5028*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5029*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5030*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 5031*4bdc9457SAndroid Build Coastguard Worker } 5032*4bdc9457SAndroid Build Coastguard Worker } 5033*4bdc9457SAndroid Build Coastguard Worker } 5034*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4,padding_top_eq_1)5035*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4, padding_top_eq_1) { 5036*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5037*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 20; input_height++) { 5038*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 5039*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5040*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5041*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 5042*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5043*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5044*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5045*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5046*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5047*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 5048*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5049*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4, xnn_init_f16_chw_params); 5050*4bdc9457SAndroid Build Coastguard Worker } 5051*4bdc9457SAndroid Build Coastguard Worker } 5052*4bdc9457SAndroid Build Coastguard Worker } 5053*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 5054*4bdc9457SAndroid Build Coastguard Worker 5055*4bdc9457SAndroid Build Coastguard Worker 5056*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,output_width_eq_4)5057*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, output_width_eq_4) { 5058*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5059*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 7; input_width < 9; input_width++) { 5060*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5061*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5062*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 5063*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5064*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5065*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5066*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5067*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5068*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5069*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5070*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5071*4bdc9457SAndroid Build Coastguard Worker } 5072*4bdc9457SAndroid Build Coastguard Worker } 5073*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,output_width_div_4)5074*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, output_width_div_4) { 5075*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5076*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 16; input_width < 64; input_width += 8) { 5077*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5078*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5079*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 5080*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5081*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5082*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5083*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5084*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5085*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5086*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5087*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5088*4bdc9457SAndroid Build Coastguard Worker } 5089*4bdc9457SAndroid Build Coastguard Worker } 5090*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,output_width_lt_4)5091*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, output_width_lt_4) { 5092*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5093*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 7; input_width++) { 5094*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5095*4bdc9457SAndroid Build Coastguard Worker .input_width(8) 5096*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 5097*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5098*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5099*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5100*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5101*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5102*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5103*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5104*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5105*4bdc9457SAndroid Build Coastguard Worker } 5106*4bdc9457SAndroid Build Coastguard Worker } 5107*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,output_width_gt_4)5108*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, output_width_gt_4) { 5109*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5110*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 9; input_width < 17; input_width++) { 5111*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5112*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5113*4bdc9457SAndroid Build Coastguard Worker .input_height(6) 5114*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5115*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5116*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5117*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5118*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5119*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5120*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5121*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5122*4bdc9457SAndroid Build Coastguard Worker } 5123*4bdc9457SAndroid Build Coastguard Worker } 5124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,output_height_eq_3)5125*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, output_height_eq_3) { 5126*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5127*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 5; input_height < 7; input_height++) { 5128*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 5129*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5130*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5131*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 5132*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5133*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5134*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5135*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5136*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5137*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5138*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5139*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5140*4bdc9457SAndroid Build Coastguard Worker } 5141*4bdc9457SAndroid Build Coastguard Worker } 5142*4bdc9457SAndroid Build Coastguard Worker } 5143*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,output_height_div_3)5144*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, output_height_div_3) { 5145*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5146*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 12; input_height < 48; input_height += 6) { 5147*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 5148*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5149*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5150*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 5151*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5152*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5153*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5154*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5155*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5156*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5157*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5158*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5159*4bdc9457SAndroid Build Coastguard Worker } 5160*4bdc9457SAndroid Build Coastguard Worker } 5161*4bdc9457SAndroid Build Coastguard Worker } 5162*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,output_height_lt_3)5163*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, output_height_lt_3) { 5164*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5165*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 1; input_height < 5; input_height++) { 5166*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 5167*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5168*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5169*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 5170*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5171*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5172*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5173*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5174*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5175*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5176*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5177*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5178*4bdc9457SAndroid Build Coastguard Worker } 5179*4bdc9457SAndroid Build Coastguard Worker } 5180*4bdc9457SAndroid Build Coastguard Worker } 5181*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,output_height_gt_3)5182*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, output_height_gt_3) { 5183*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5184*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 7; input_height < 13; input_height++) { 5185*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 5186*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5187*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5188*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 5189*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5190*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5191*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5192*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5193*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5194*4bdc9457SAndroid Build Coastguard Worker .padding_top(2) 5195*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5196*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5197*4bdc9457SAndroid Build Coastguard Worker } 5198*4bdc9457SAndroid Build Coastguard Worker } 5199*4bdc9457SAndroid Build Coastguard Worker } 5200*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2,padding_top_eq_1)5201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_DWCONV2D_CHW_5X5S2P2__NEONFP16ARITH_3X4_ACC2, padding_top_eq_1) { 5202*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5203*4bdc9457SAndroid Build Coastguard Worker for (size_t input_height = 2; input_height < 20; input_height++) { 5204*4bdc9457SAndroid Build Coastguard Worker for (size_t input_width = 1; input_width < 41; input_width += 7) { 5205*4bdc9457SAndroid Build Coastguard Worker DWConv2DMicrokernelTester() 5206*4bdc9457SAndroid Build Coastguard Worker .input_width(input_width) 5207*4bdc9457SAndroid Build Coastguard Worker .input_height(input_height) 5208*4bdc9457SAndroid Build Coastguard Worker .kernel_height(5) 5209*4bdc9457SAndroid Build Coastguard Worker .kernel_width(5) 5210*4bdc9457SAndroid Build Coastguard Worker .subsampling(2) 5211*4bdc9457SAndroid Build Coastguard Worker .padding_left(2) 5212*4bdc9457SAndroid Build Coastguard Worker .padding_right(2) 5213*4bdc9457SAndroid Build Coastguard Worker .padding_top(1) 5214*4bdc9457SAndroid Build Coastguard Worker .padding_bottom(2) 5215*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_dwconv2d_chw_ukernel_5x5s2p2__neonfp16arith_3x4_acc2, xnn_init_f16_chw_params); 5216*4bdc9457SAndroid Build Coastguard Worker } 5217*4bdc9457SAndroid Build Coastguard Worker } 5218*4bdc9457SAndroid Build Coastguard Worker } 5219*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 5220