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