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