1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates. 2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved. 3*4bdc9457SAndroid Build Coastguard Worker // 4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 5*4bdc9457SAndroid Build Coastguard Worker // 6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 8*4bdc9457SAndroid Build Coastguard Worker // 9*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit! 10*4bdc9457SAndroid Build Coastguard Worker // Specification: test/qu8-gemm-minmax-rndnu.yaml 11*4bdc9457SAndroid Build Coastguard Worker // Generator: tools/generate-gemm-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/allocator.h> 17*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h> 18*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h> 19*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/microparams-init.h> 20*4bdc9457SAndroid Build Coastguard Worker 21*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/gemm.h> 22*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/igemm.h> 23*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/ppmm.h> 24*4bdc9457SAndroid Build Coastguard Worker #include "gemm-microkernel-tester.h" 25*4bdc9457SAndroid Build Coastguard Worker 26*4bdc9457SAndroid Build Coastguard Worker 27*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8)28*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8) { 29*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 30*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 31*4bdc9457SAndroid Build Coastguard Worker .mr(1) 32*4bdc9457SAndroid Build Coastguard Worker .nr(8) 33*4bdc9457SAndroid Build Coastguard Worker .kr(1) 34*4bdc9457SAndroid Build Coastguard Worker .sr(1) 35*4bdc9457SAndroid Build Coastguard Worker .m(1) 36*4bdc9457SAndroid Build Coastguard Worker .n(8) 37*4bdc9457SAndroid Build Coastguard Worker .k(8) 38*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 39*4bdc9457SAndroid Build Coastguard Worker } 40*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,strided_cn)41*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, strided_cn) { 42*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 43*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 44*4bdc9457SAndroid Build Coastguard Worker .mr(1) 45*4bdc9457SAndroid Build Coastguard Worker .nr(8) 46*4bdc9457SAndroid Build Coastguard Worker .kr(1) 47*4bdc9457SAndroid Build Coastguard Worker .sr(1) 48*4bdc9457SAndroid Build Coastguard Worker .m(1) 49*4bdc9457SAndroid Build Coastguard Worker .n(8) 50*4bdc9457SAndroid Build Coastguard Worker .k(8) 51*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 52*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 53*4bdc9457SAndroid Build Coastguard Worker } 54*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8_strided_a)55*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8_strided_a) { 56*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 57*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 58*4bdc9457SAndroid Build Coastguard Worker .mr(1) 59*4bdc9457SAndroid Build Coastguard Worker .nr(8) 60*4bdc9457SAndroid Build Coastguard Worker .kr(1) 61*4bdc9457SAndroid Build Coastguard Worker .sr(1) 62*4bdc9457SAndroid Build Coastguard Worker .m(1) 63*4bdc9457SAndroid Build Coastguard Worker .n(8) 64*4bdc9457SAndroid Build Coastguard Worker .k(8) 65*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 66*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 67*4bdc9457SAndroid Build Coastguard Worker } 68*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8_subtile)69*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8_subtile) { 70*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 71*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 72*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 73*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 74*4bdc9457SAndroid Build Coastguard Worker .mr(1) 75*4bdc9457SAndroid Build Coastguard Worker .nr(8) 76*4bdc9457SAndroid Build Coastguard Worker .kr(1) 77*4bdc9457SAndroid Build Coastguard Worker .sr(1) 78*4bdc9457SAndroid Build Coastguard Worker .m(m) 79*4bdc9457SAndroid Build Coastguard Worker .n(n) 80*4bdc9457SAndroid Build Coastguard Worker .k(8) 81*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 82*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 83*4bdc9457SAndroid Build Coastguard Worker } 84*4bdc9457SAndroid Build Coastguard Worker } 85*4bdc9457SAndroid Build Coastguard Worker } 86*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8_subtile_m)87*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8_subtile_m) { 88*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 89*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 90*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 91*4bdc9457SAndroid Build Coastguard Worker .mr(1) 92*4bdc9457SAndroid Build Coastguard Worker .nr(8) 93*4bdc9457SAndroid Build Coastguard Worker .kr(1) 94*4bdc9457SAndroid Build Coastguard Worker .sr(1) 95*4bdc9457SAndroid Build Coastguard Worker .m(m) 96*4bdc9457SAndroid Build Coastguard Worker .n(8) 97*4bdc9457SAndroid Build Coastguard Worker .k(8) 98*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 99*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 100*4bdc9457SAndroid Build Coastguard Worker } 101*4bdc9457SAndroid Build Coastguard Worker } 102*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8_subtile_n)103*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8_subtile_n) { 104*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 105*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 106*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 107*4bdc9457SAndroid Build Coastguard Worker .mr(1) 108*4bdc9457SAndroid Build Coastguard Worker .nr(8) 109*4bdc9457SAndroid Build Coastguard Worker .kr(1) 110*4bdc9457SAndroid Build Coastguard Worker .sr(1) 111*4bdc9457SAndroid Build Coastguard Worker .m(1) 112*4bdc9457SAndroid Build Coastguard Worker .n(n) 113*4bdc9457SAndroid Build Coastguard Worker .k(8) 114*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 115*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 116*4bdc9457SAndroid Build Coastguard Worker } 117*4bdc9457SAndroid Build Coastguard Worker } 118*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_lt_8)119*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_lt_8) { 120*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 121*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 122*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 123*4bdc9457SAndroid Build Coastguard Worker .mr(1) 124*4bdc9457SAndroid Build Coastguard Worker .nr(8) 125*4bdc9457SAndroid Build Coastguard Worker .kr(1) 126*4bdc9457SAndroid Build Coastguard Worker .sr(1) 127*4bdc9457SAndroid Build Coastguard Worker .m(1) 128*4bdc9457SAndroid Build Coastguard Worker .n(8) 129*4bdc9457SAndroid Build Coastguard Worker .k(k) 130*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 131*4bdc9457SAndroid Build Coastguard Worker } 132*4bdc9457SAndroid Build Coastguard Worker } 133*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_lt_8_strided_a)134*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_lt_8_strided_a) { 135*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 136*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 137*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 138*4bdc9457SAndroid Build Coastguard Worker .mr(1) 139*4bdc9457SAndroid Build Coastguard Worker .nr(8) 140*4bdc9457SAndroid Build Coastguard Worker .kr(1) 141*4bdc9457SAndroid Build Coastguard Worker .sr(1) 142*4bdc9457SAndroid Build Coastguard Worker .m(1) 143*4bdc9457SAndroid Build Coastguard Worker .n(8) 144*4bdc9457SAndroid Build Coastguard Worker .k(k) 145*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 146*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 147*4bdc9457SAndroid Build Coastguard Worker } 148*4bdc9457SAndroid Build Coastguard Worker } 149*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_lt_8_subtile)150*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_lt_8_subtile) { 151*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 152*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 153*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 154*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 155*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 156*4bdc9457SAndroid Build Coastguard Worker .mr(1) 157*4bdc9457SAndroid Build Coastguard Worker .nr(8) 158*4bdc9457SAndroid Build Coastguard Worker .kr(1) 159*4bdc9457SAndroid Build Coastguard Worker .sr(1) 160*4bdc9457SAndroid Build Coastguard Worker .m(m) 161*4bdc9457SAndroid Build Coastguard Worker .n(n) 162*4bdc9457SAndroid Build Coastguard Worker .k(k) 163*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 164*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 165*4bdc9457SAndroid Build Coastguard Worker } 166*4bdc9457SAndroid Build Coastguard Worker } 167*4bdc9457SAndroid Build Coastguard Worker } 168*4bdc9457SAndroid Build Coastguard Worker } 169*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_gt_8)170*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_gt_8) { 171*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 172*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 173*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 174*4bdc9457SAndroid Build Coastguard Worker .mr(1) 175*4bdc9457SAndroid Build Coastguard Worker .nr(8) 176*4bdc9457SAndroid Build Coastguard Worker .kr(1) 177*4bdc9457SAndroid Build Coastguard Worker .sr(1) 178*4bdc9457SAndroid Build Coastguard Worker .m(1) 179*4bdc9457SAndroid Build Coastguard Worker .n(8) 180*4bdc9457SAndroid Build Coastguard Worker .k(k) 181*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 182*4bdc9457SAndroid Build Coastguard Worker } 183*4bdc9457SAndroid Build Coastguard Worker } 184*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_gt_8_strided_a)185*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_gt_8_strided_a) { 186*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 187*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 188*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 189*4bdc9457SAndroid Build Coastguard Worker .mr(1) 190*4bdc9457SAndroid Build Coastguard Worker .nr(8) 191*4bdc9457SAndroid Build Coastguard Worker .kr(1) 192*4bdc9457SAndroid Build Coastguard Worker .sr(1) 193*4bdc9457SAndroid Build Coastguard Worker .m(1) 194*4bdc9457SAndroid Build Coastguard Worker .n(8) 195*4bdc9457SAndroid Build Coastguard Worker .k(k) 196*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 197*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 198*4bdc9457SAndroid Build Coastguard Worker } 199*4bdc9457SAndroid Build Coastguard Worker } 200*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_gt_8_subtile)201*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_gt_8_subtile) { 202*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 203*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 204*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 205*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 206*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 207*4bdc9457SAndroid Build Coastguard Worker .mr(1) 208*4bdc9457SAndroid Build Coastguard Worker .nr(8) 209*4bdc9457SAndroid Build Coastguard Worker .kr(1) 210*4bdc9457SAndroid Build Coastguard Worker .sr(1) 211*4bdc9457SAndroid Build Coastguard Worker .m(m) 212*4bdc9457SAndroid Build Coastguard Worker .n(n) 213*4bdc9457SAndroid Build Coastguard Worker .k(k) 214*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 215*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 216*4bdc9457SAndroid Build Coastguard Worker } 217*4bdc9457SAndroid Build Coastguard Worker } 218*4bdc9457SAndroid Build Coastguard Worker } 219*4bdc9457SAndroid Build Coastguard Worker } 220*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_div_8)221*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_div_8) { 222*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 223*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 224*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 225*4bdc9457SAndroid Build Coastguard Worker .mr(1) 226*4bdc9457SAndroid Build Coastguard Worker .nr(8) 227*4bdc9457SAndroid Build Coastguard Worker .kr(1) 228*4bdc9457SAndroid Build Coastguard Worker .sr(1) 229*4bdc9457SAndroid Build Coastguard Worker .m(1) 230*4bdc9457SAndroid Build Coastguard Worker .n(8) 231*4bdc9457SAndroid Build Coastguard Worker .k(k) 232*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 233*4bdc9457SAndroid Build Coastguard Worker } 234*4bdc9457SAndroid Build Coastguard Worker } 235*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_div_8_strided_a)236*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_div_8_strided_a) { 237*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 238*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 239*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 240*4bdc9457SAndroid Build Coastguard Worker .mr(1) 241*4bdc9457SAndroid Build Coastguard Worker .nr(8) 242*4bdc9457SAndroid Build Coastguard Worker .kr(1) 243*4bdc9457SAndroid Build Coastguard Worker .sr(1) 244*4bdc9457SAndroid Build Coastguard Worker .m(1) 245*4bdc9457SAndroid Build Coastguard Worker .n(8) 246*4bdc9457SAndroid Build Coastguard Worker .k(k) 247*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 249*4bdc9457SAndroid Build Coastguard Worker } 250*4bdc9457SAndroid Build Coastguard Worker } 251*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_div_8_subtile)252*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_div_8_subtile) { 253*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 254*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 255*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 256*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 257*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 258*4bdc9457SAndroid Build Coastguard Worker .mr(1) 259*4bdc9457SAndroid Build Coastguard Worker .nr(8) 260*4bdc9457SAndroid Build Coastguard Worker .kr(1) 261*4bdc9457SAndroid Build Coastguard Worker .sr(1) 262*4bdc9457SAndroid Build Coastguard Worker .m(m) 263*4bdc9457SAndroid Build Coastguard Worker .n(n) 264*4bdc9457SAndroid Build Coastguard Worker .k(k) 265*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 266*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 267*4bdc9457SAndroid Build Coastguard Worker } 268*4bdc9457SAndroid Build Coastguard Worker } 269*4bdc9457SAndroid Build Coastguard Worker } 270*4bdc9457SAndroid Build Coastguard Worker } 271*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_gt_8)272*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_gt_8) { 273*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 274*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 275*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 276*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 277*4bdc9457SAndroid Build Coastguard Worker .mr(1) 278*4bdc9457SAndroid Build Coastguard Worker .nr(8) 279*4bdc9457SAndroid Build Coastguard Worker .kr(1) 280*4bdc9457SAndroid Build Coastguard Worker .sr(1) 281*4bdc9457SAndroid Build Coastguard Worker .m(1) 282*4bdc9457SAndroid Build Coastguard Worker .n(n) 283*4bdc9457SAndroid Build Coastguard Worker .k(k) 284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 285*4bdc9457SAndroid Build Coastguard Worker } 286*4bdc9457SAndroid Build Coastguard Worker } 287*4bdc9457SAndroid Build Coastguard Worker } 288*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_gt_8_strided_cn)289*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_gt_8_strided_cn) { 290*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 291*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 292*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 293*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 294*4bdc9457SAndroid Build Coastguard Worker .mr(1) 295*4bdc9457SAndroid Build Coastguard Worker .nr(8) 296*4bdc9457SAndroid Build Coastguard Worker .kr(1) 297*4bdc9457SAndroid Build Coastguard Worker .sr(1) 298*4bdc9457SAndroid Build Coastguard Worker .m(1) 299*4bdc9457SAndroid Build Coastguard Worker .n(n) 300*4bdc9457SAndroid Build Coastguard Worker .k(k) 301*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 302*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 303*4bdc9457SAndroid Build Coastguard Worker } 304*4bdc9457SAndroid Build Coastguard Worker } 305*4bdc9457SAndroid Build Coastguard Worker } 306*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_gt_8_strided_a)307*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_gt_8_strided_a) { 308*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 309*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 310*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 311*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 312*4bdc9457SAndroid Build Coastguard Worker .mr(1) 313*4bdc9457SAndroid Build Coastguard Worker .nr(8) 314*4bdc9457SAndroid Build Coastguard Worker .kr(1) 315*4bdc9457SAndroid Build Coastguard Worker .sr(1) 316*4bdc9457SAndroid Build Coastguard Worker .m(1) 317*4bdc9457SAndroid Build Coastguard Worker .n(n) 318*4bdc9457SAndroid Build Coastguard Worker .k(k) 319*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 320*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 321*4bdc9457SAndroid Build Coastguard Worker } 322*4bdc9457SAndroid Build Coastguard Worker } 323*4bdc9457SAndroid Build Coastguard Worker } 324*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_gt_8_subtile)325*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_gt_8_subtile) { 326*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 327*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 328*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 329*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 330*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 331*4bdc9457SAndroid Build Coastguard Worker .mr(1) 332*4bdc9457SAndroid Build Coastguard Worker .nr(8) 333*4bdc9457SAndroid Build Coastguard Worker .kr(1) 334*4bdc9457SAndroid Build Coastguard Worker .sr(1) 335*4bdc9457SAndroid Build Coastguard Worker .m(m) 336*4bdc9457SAndroid Build Coastguard Worker .n(n) 337*4bdc9457SAndroid Build Coastguard Worker .k(k) 338*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 339*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 340*4bdc9457SAndroid Build Coastguard Worker } 341*4bdc9457SAndroid Build Coastguard Worker } 342*4bdc9457SAndroid Build Coastguard Worker } 343*4bdc9457SAndroid Build Coastguard Worker } 344*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_div_8)345*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_div_8) { 346*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 347*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 348*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 349*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 350*4bdc9457SAndroid Build Coastguard Worker .mr(1) 351*4bdc9457SAndroid Build Coastguard Worker .nr(8) 352*4bdc9457SAndroid Build Coastguard Worker .kr(1) 353*4bdc9457SAndroid Build Coastguard Worker .sr(1) 354*4bdc9457SAndroid Build Coastguard Worker .m(1) 355*4bdc9457SAndroid Build Coastguard Worker .n(n) 356*4bdc9457SAndroid Build Coastguard Worker .k(k) 357*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 358*4bdc9457SAndroid Build Coastguard Worker } 359*4bdc9457SAndroid Build Coastguard Worker } 360*4bdc9457SAndroid Build Coastguard Worker } 361*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_div_8_strided_cn)362*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_div_8_strided_cn) { 363*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 364*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 365*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 366*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 367*4bdc9457SAndroid Build Coastguard Worker .mr(1) 368*4bdc9457SAndroid Build Coastguard Worker .nr(8) 369*4bdc9457SAndroid Build Coastguard Worker .kr(1) 370*4bdc9457SAndroid Build Coastguard Worker .sr(1) 371*4bdc9457SAndroid Build Coastguard Worker .m(1) 372*4bdc9457SAndroid Build Coastguard Worker .n(n) 373*4bdc9457SAndroid Build Coastguard Worker .k(k) 374*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 375*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 376*4bdc9457SAndroid Build Coastguard Worker } 377*4bdc9457SAndroid Build Coastguard Worker } 378*4bdc9457SAndroid Build Coastguard Worker } 379*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_div_8_strided_a)380*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_div_8_strided_a) { 381*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 382*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 383*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 384*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 385*4bdc9457SAndroid Build Coastguard Worker .mr(1) 386*4bdc9457SAndroid Build Coastguard Worker .nr(8) 387*4bdc9457SAndroid Build Coastguard Worker .kr(1) 388*4bdc9457SAndroid Build Coastguard Worker .sr(1) 389*4bdc9457SAndroid Build Coastguard Worker .m(1) 390*4bdc9457SAndroid Build Coastguard Worker .n(n) 391*4bdc9457SAndroid Build Coastguard Worker .k(k) 392*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 393*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 394*4bdc9457SAndroid Build Coastguard Worker } 395*4bdc9457SAndroid Build Coastguard Worker } 396*4bdc9457SAndroid Build Coastguard Worker } 397*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_div_8_subtile)398*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_div_8_subtile) { 399*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 400*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 401*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 402*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 403*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 404*4bdc9457SAndroid Build Coastguard Worker .mr(1) 405*4bdc9457SAndroid Build Coastguard Worker .nr(8) 406*4bdc9457SAndroid Build Coastguard Worker .kr(1) 407*4bdc9457SAndroid Build Coastguard Worker .sr(1) 408*4bdc9457SAndroid Build Coastguard Worker .m(m) 409*4bdc9457SAndroid Build Coastguard Worker .n(n) 410*4bdc9457SAndroid Build Coastguard Worker .k(k) 411*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 413*4bdc9457SAndroid Build Coastguard Worker } 414*4bdc9457SAndroid Build Coastguard Worker } 415*4bdc9457SAndroid Build Coastguard Worker } 416*4bdc9457SAndroid Build Coastguard Worker } 417*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,strided_cm_subtile)418*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, strided_cm_subtile) { 419*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 420*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 421*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 422*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 423*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 424*4bdc9457SAndroid Build Coastguard Worker .mr(1) 425*4bdc9457SAndroid Build Coastguard Worker .nr(8) 426*4bdc9457SAndroid Build Coastguard Worker .kr(1) 427*4bdc9457SAndroid Build Coastguard Worker .sr(1) 428*4bdc9457SAndroid Build Coastguard Worker .m(m) 429*4bdc9457SAndroid Build Coastguard Worker .n(n) 430*4bdc9457SAndroid Build Coastguard Worker .k(k) 431*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 432*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 433*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 434*4bdc9457SAndroid Build Coastguard Worker } 435*4bdc9457SAndroid Build Coastguard Worker } 436*4bdc9457SAndroid Build Coastguard Worker } 437*4bdc9457SAndroid Build Coastguard Worker } 438*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,qmin)439*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, qmin) { 440*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 441*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 442*4bdc9457SAndroid Build Coastguard Worker .mr(1) 443*4bdc9457SAndroid Build Coastguard Worker .nr(8) 444*4bdc9457SAndroid Build Coastguard Worker .kr(1) 445*4bdc9457SAndroid Build Coastguard Worker .sr(1) 446*4bdc9457SAndroid Build Coastguard Worker .m(1) 447*4bdc9457SAndroid Build Coastguard Worker .n(8) 448*4bdc9457SAndroid Build Coastguard Worker .k(8) 449*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 450*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 451*4bdc9457SAndroid Build Coastguard Worker } 452*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,qmax)453*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, qmax) { 454*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 455*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 456*4bdc9457SAndroid Build Coastguard Worker .mr(1) 457*4bdc9457SAndroid Build Coastguard Worker .nr(8) 458*4bdc9457SAndroid Build Coastguard Worker .kr(1) 459*4bdc9457SAndroid Build Coastguard Worker .sr(1) 460*4bdc9457SAndroid Build Coastguard Worker .m(1) 461*4bdc9457SAndroid Build Coastguard Worker .n(8) 462*4bdc9457SAndroid Build Coastguard Worker .k(8) 463*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 464*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 465*4bdc9457SAndroid Build Coastguard Worker } 466*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,strided_cm)467*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, strided_cm) { 468*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 469*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 470*4bdc9457SAndroid Build Coastguard Worker .mr(1) 471*4bdc9457SAndroid Build Coastguard Worker .nr(8) 472*4bdc9457SAndroid Build Coastguard Worker .kr(1) 473*4bdc9457SAndroid Build Coastguard Worker .sr(1) 474*4bdc9457SAndroid Build Coastguard Worker .m(1) 475*4bdc9457SAndroid Build Coastguard Worker .n(8) 476*4bdc9457SAndroid Build Coastguard Worker .k(8) 477*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 478*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 479*4bdc9457SAndroid Build Coastguard Worker } 480*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,no_a_zero_point)481*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, no_a_zero_point) { 482*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 483*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 484*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 485*4bdc9457SAndroid Build Coastguard Worker .mr(1) 486*4bdc9457SAndroid Build Coastguard Worker .nr(8) 487*4bdc9457SAndroid Build Coastguard Worker .kr(1) 488*4bdc9457SAndroid Build Coastguard Worker .sr(1) 489*4bdc9457SAndroid Build Coastguard Worker .m(1) 490*4bdc9457SAndroid Build Coastguard Worker .n(8) 491*4bdc9457SAndroid Build Coastguard Worker .k(k) 492*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 493*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 494*4bdc9457SAndroid Build Coastguard Worker } 495*4bdc9457SAndroid Build Coastguard Worker } 496*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,no_b_zero_point)497*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, no_b_zero_point) { 498*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 499*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 500*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 501*4bdc9457SAndroid Build Coastguard Worker .mr(1) 502*4bdc9457SAndroid Build Coastguard Worker .nr(8) 503*4bdc9457SAndroid Build Coastguard Worker .kr(1) 504*4bdc9457SAndroid Build Coastguard Worker .sr(1) 505*4bdc9457SAndroid Build Coastguard Worker .m(1) 506*4bdc9457SAndroid Build Coastguard Worker .n(8) 507*4bdc9457SAndroid Build Coastguard Worker .k(k) 508*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 509*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 510*4bdc9457SAndroid Build Coastguard Worker } 511*4bdc9457SAndroid Build Coastguard Worker } 512*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,no_zero_point)513*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, no_zero_point) { 514*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 515*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 516*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 517*4bdc9457SAndroid Build Coastguard Worker .mr(1) 518*4bdc9457SAndroid Build Coastguard Worker .nr(8) 519*4bdc9457SAndroid Build Coastguard Worker .kr(1) 520*4bdc9457SAndroid Build Coastguard Worker .sr(1) 521*4bdc9457SAndroid Build Coastguard Worker .m(1) 522*4bdc9457SAndroid Build Coastguard Worker .n(8) 523*4bdc9457SAndroid Build Coastguard Worker .k(k) 524*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 525*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 527*4bdc9457SAndroid Build Coastguard Worker } 528*4bdc9457SAndroid Build Coastguard Worker } 529*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY 530*4bdc9457SAndroid Build Coastguard Worker 531*4bdc9457SAndroid Build Coastguard Worker 532*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8)533*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8) { 534*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 535*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 536*4bdc9457SAndroid Build Coastguard Worker .mr(4) 537*4bdc9457SAndroid Build Coastguard Worker .nr(8) 538*4bdc9457SAndroid Build Coastguard Worker .kr(1) 539*4bdc9457SAndroid Build Coastguard Worker .sr(1) 540*4bdc9457SAndroid Build Coastguard Worker .m(4) 541*4bdc9457SAndroid Build Coastguard Worker .n(8) 542*4bdc9457SAndroid Build Coastguard Worker .k(8) 543*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 544*4bdc9457SAndroid Build Coastguard Worker } 545*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,strided_cn)546*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, strided_cn) { 547*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 548*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 549*4bdc9457SAndroid Build Coastguard Worker .mr(4) 550*4bdc9457SAndroid Build Coastguard Worker .nr(8) 551*4bdc9457SAndroid Build Coastguard Worker .kr(1) 552*4bdc9457SAndroid Build Coastguard Worker .sr(1) 553*4bdc9457SAndroid Build Coastguard Worker .m(4) 554*4bdc9457SAndroid Build Coastguard Worker .n(8) 555*4bdc9457SAndroid Build Coastguard Worker .k(8) 556*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 557*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 558*4bdc9457SAndroid Build Coastguard Worker } 559*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8_strided_a)560*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8_strided_a) { 561*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 562*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 563*4bdc9457SAndroid Build Coastguard Worker .mr(4) 564*4bdc9457SAndroid Build Coastguard Worker .nr(8) 565*4bdc9457SAndroid Build Coastguard Worker .kr(1) 566*4bdc9457SAndroid Build Coastguard Worker .sr(1) 567*4bdc9457SAndroid Build Coastguard Worker .m(4) 568*4bdc9457SAndroid Build Coastguard Worker .n(8) 569*4bdc9457SAndroid Build Coastguard Worker .k(8) 570*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 571*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 572*4bdc9457SAndroid Build Coastguard Worker } 573*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8_subtile)574*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8_subtile) { 575*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 576*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 577*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 578*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 579*4bdc9457SAndroid Build Coastguard Worker .mr(4) 580*4bdc9457SAndroid Build Coastguard Worker .nr(8) 581*4bdc9457SAndroid Build Coastguard Worker .kr(1) 582*4bdc9457SAndroid Build Coastguard Worker .sr(1) 583*4bdc9457SAndroid Build Coastguard Worker .m(m) 584*4bdc9457SAndroid Build Coastguard Worker .n(n) 585*4bdc9457SAndroid Build Coastguard Worker .k(8) 586*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 587*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 588*4bdc9457SAndroid Build Coastguard Worker } 589*4bdc9457SAndroid Build Coastguard Worker } 590*4bdc9457SAndroid Build Coastguard Worker } 591*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8_subtile_m)592*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8_subtile_m) { 593*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 594*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 595*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 596*4bdc9457SAndroid Build Coastguard Worker .mr(4) 597*4bdc9457SAndroid Build Coastguard Worker .nr(8) 598*4bdc9457SAndroid Build Coastguard Worker .kr(1) 599*4bdc9457SAndroid Build Coastguard Worker .sr(1) 600*4bdc9457SAndroid Build Coastguard Worker .m(m) 601*4bdc9457SAndroid Build Coastguard Worker .n(8) 602*4bdc9457SAndroid Build Coastguard Worker .k(8) 603*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 604*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 605*4bdc9457SAndroid Build Coastguard Worker } 606*4bdc9457SAndroid Build Coastguard Worker } 607*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_eq_8_subtile_n)608*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_eq_8_subtile_n) { 609*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 610*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 611*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 612*4bdc9457SAndroid Build Coastguard Worker .mr(4) 613*4bdc9457SAndroid Build Coastguard Worker .nr(8) 614*4bdc9457SAndroid Build Coastguard Worker .kr(1) 615*4bdc9457SAndroid Build Coastguard Worker .sr(1) 616*4bdc9457SAndroid Build Coastguard Worker .m(4) 617*4bdc9457SAndroid Build Coastguard Worker .n(n) 618*4bdc9457SAndroid Build Coastguard Worker .k(8) 619*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 621*4bdc9457SAndroid Build Coastguard Worker } 622*4bdc9457SAndroid Build Coastguard Worker } 623*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_lt_8)624*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_lt_8) { 625*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 626*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 627*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 628*4bdc9457SAndroid Build Coastguard Worker .mr(4) 629*4bdc9457SAndroid Build Coastguard Worker .nr(8) 630*4bdc9457SAndroid Build Coastguard Worker .kr(1) 631*4bdc9457SAndroid Build Coastguard Worker .sr(1) 632*4bdc9457SAndroid Build Coastguard Worker .m(4) 633*4bdc9457SAndroid Build Coastguard Worker .n(8) 634*4bdc9457SAndroid Build Coastguard Worker .k(k) 635*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 636*4bdc9457SAndroid Build Coastguard Worker } 637*4bdc9457SAndroid Build Coastguard Worker } 638*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_lt_8_strided_a)639*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_lt_8_strided_a) { 640*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 641*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 642*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 643*4bdc9457SAndroid Build Coastguard Worker .mr(4) 644*4bdc9457SAndroid Build Coastguard Worker .nr(8) 645*4bdc9457SAndroid Build Coastguard Worker .kr(1) 646*4bdc9457SAndroid Build Coastguard Worker .sr(1) 647*4bdc9457SAndroid Build Coastguard Worker .m(4) 648*4bdc9457SAndroid Build Coastguard Worker .n(8) 649*4bdc9457SAndroid Build Coastguard Worker .k(k) 650*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 651*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 652*4bdc9457SAndroid Build Coastguard Worker } 653*4bdc9457SAndroid Build Coastguard Worker } 654*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_lt_8_subtile)655*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_lt_8_subtile) { 656*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 657*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 658*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 659*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 660*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 661*4bdc9457SAndroid Build Coastguard Worker .mr(4) 662*4bdc9457SAndroid Build Coastguard Worker .nr(8) 663*4bdc9457SAndroid Build Coastguard Worker .kr(1) 664*4bdc9457SAndroid Build Coastguard Worker .sr(1) 665*4bdc9457SAndroid Build Coastguard Worker .m(m) 666*4bdc9457SAndroid Build Coastguard Worker .n(n) 667*4bdc9457SAndroid Build Coastguard Worker .k(k) 668*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 669*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 670*4bdc9457SAndroid Build Coastguard Worker } 671*4bdc9457SAndroid Build Coastguard Worker } 672*4bdc9457SAndroid Build Coastguard Worker } 673*4bdc9457SAndroid Build Coastguard Worker } 674*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_gt_8)675*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_gt_8) { 676*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 677*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 678*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 679*4bdc9457SAndroid Build Coastguard Worker .mr(4) 680*4bdc9457SAndroid Build Coastguard Worker .nr(8) 681*4bdc9457SAndroid Build Coastguard Worker .kr(1) 682*4bdc9457SAndroid Build Coastguard Worker .sr(1) 683*4bdc9457SAndroid Build Coastguard Worker .m(4) 684*4bdc9457SAndroid Build Coastguard Worker .n(8) 685*4bdc9457SAndroid Build Coastguard Worker .k(k) 686*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 687*4bdc9457SAndroid Build Coastguard Worker } 688*4bdc9457SAndroid Build Coastguard Worker } 689*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_gt_8_strided_a)690*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_gt_8_strided_a) { 691*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 692*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 693*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 694*4bdc9457SAndroid Build Coastguard Worker .mr(4) 695*4bdc9457SAndroid Build Coastguard Worker .nr(8) 696*4bdc9457SAndroid Build Coastguard Worker .kr(1) 697*4bdc9457SAndroid Build Coastguard Worker .sr(1) 698*4bdc9457SAndroid Build Coastguard Worker .m(4) 699*4bdc9457SAndroid Build Coastguard Worker .n(8) 700*4bdc9457SAndroid Build Coastguard Worker .k(k) 701*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 702*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 703*4bdc9457SAndroid Build Coastguard Worker } 704*4bdc9457SAndroid Build Coastguard Worker } 705*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_gt_8_subtile)706*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_gt_8_subtile) { 707*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 708*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 709*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 710*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 711*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 712*4bdc9457SAndroid Build Coastguard Worker .mr(4) 713*4bdc9457SAndroid Build Coastguard Worker .nr(8) 714*4bdc9457SAndroid Build Coastguard Worker .kr(1) 715*4bdc9457SAndroid Build Coastguard Worker .sr(1) 716*4bdc9457SAndroid Build Coastguard Worker .m(m) 717*4bdc9457SAndroid Build Coastguard Worker .n(n) 718*4bdc9457SAndroid Build Coastguard Worker .k(k) 719*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 720*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 721*4bdc9457SAndroid Build Coastguard Worker } 722*4bdc9457SAndroid Build Coastguard Worker } 723*4bdc9457SAndroid Build Coastguard Worker } 724*4bdc9457SAndroid Build Coastguard Worker } 725*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_div_8)726*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_div_8) { 727*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 728*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 729*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 730*4bdc9457SAndroid Build Coastguard Worker .mr(4) 731*4bdc9457SAndroid Build Coastguard Worker .nr(8) 732*4bdc9457SAndroid Build Coastguard Worker .kr(1) 733*4bdc9457SAndroid Build Coastguard Worker .sr(1) 734*4bdc9457SAndroid Build Coastguard Worker .m(4) 735*4bdc9457SAndroid Build Coastguard Worker .n(8) 736*4bdc9457SAndroid Build Coastguard Worker .k(k) 737*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 738*4bdc9457SAndroid Build Coastguard Worker } 739*4bdc9457SAndroid Build Coastguard Worker } 740*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_div_8_strided_a)741*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_div_8_strided_a) { 742*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 743*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 744*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 745*4bdc9457SAndroid Build Coastguard Worker .mr(4) 746*4bdc9457SAndroid Build Coastguard Worker .nr(8) 747*4bdc9457SAndroid Build Coastguard Worker .kr(1) 748*4bdc9457SAndroid Build Coastguard Worker .sr(1) 749*4bdc9457SAndroid Build Coastguard Worker .m(4) 750*4bdc9457SAndroid Build Coastguard Worker .n(8) 751*4bdc9457SAndroid Build Coastguard Worker .k(k) 752*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 753*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 754*4bdc9457SAndroid Build Coastguard Worker } 755*4bdc9457SAndroid Build Coastguard Worker } 756*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,k_div_8_subtile)757*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, k_div_8_subtile) { 758*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 759*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 760*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 761*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 762*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 763*4bdc9457SAndroid Build Coastguard Worker .mr(4) 764*4bdc9457SAndroid Build Coastguard Worker .nr(8) 765*4bdc9457SAndroid Build Coastguard Worker .kr(1) 766*4bdc9457SAndroid Build Coastguard Worker .sr(1) 767*4bdc9457SAndroid Build Coastguard Worker .m(m) 768*4bdc9457SAndroid Build Coastguard Worker .n(n) 769*4bdc9457SAndroid Build Coastguard Worker .k(k) 770*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 771*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 772*4bdc9457SAndroid Build Coastguard Worker } 773*4bdc9457SAndroid Build Coastguard Worker } 774*4bdc9457SAndroid Build Coastguard Worker } 775*4bdc9457SAndroid Build Coastguard Worker } 776*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_gt_8)777*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_gt_8) { 778*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 779*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 780*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 781*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 782*4bdc9457SAndroid Build Coastguard Worker .mr(4) 783*4bdc9457SAndroid Build Coastguard Worker .nr(8) 784*4bdc9457SAndroid Build Coastguard Worker .kr(1) 785*4bdc9457SAndroid Build Coastguard Worker .sr(1) 786*4bdc9457SAndroid Build Coastguard Worker .m(4) 787*4bdc9457SAndroid Build Coastguard Worker .n(n) 788*4bdc9457SAndroid Build Coastguard Worker .k(k) 789*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 790*4bdc9457SAndroid Build Coastguard Worker } 791*4bdc9457SAndroid Build Coastguard Worker } 792*4bdc9457SAndroid Build Coastguard Worker } 793*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_gt_8_strided_cn)794*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_gt_8_strided_cn) { 795*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 796*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 797*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 798*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 799*4bdc9457SAndroid Build Coastguard Worker .mr(4) 800*4bdc9457SAndroid Build Coastguard Worker .nr(8) 801*4bdc9457SAndroid Build Coastguard Worker .kr(1) 802*4bdc9457SAndroid Build Coastguard Worker .sr(1) 803*4bdc9457SAndroid Build Coastguard Worker .m(4) 804*4bdc9457SAndroid Build Coastguard Worker .n(n) 805*4bdc9457SAndroid Build Coastguard Worker .k(k) 806*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 807*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 808*4bdc9457SAndroid Build Coastguard Worker } 809*4bdc9457SAndroid Build Coastguard Worker } 810*4bdc9457SAndroid Build Coastguard Worker } 811*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_gt_8_strided_a)812*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_gt_8_strided_a) { 813*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 814*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 815*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 816*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 817*4bdc9457SAndroid Build Coastguard Worker .mr(4) 818*4bdc9457SAndroid Build Coastguard Worker .nr(8) 819*4bdc9457SAndroid Build Coastguard Worker .kr(1) 820*4bdc9457SAndroid Build Coastguard Worker .sr(1) 821*4bdc9457SAndroid Build Coastguard Worker .m(4) 822*4bdc9457SAndroid Build Coastguard Worker .n(n) 823*4bdc9457SAndroid Build Coastguard Worker .k(k) 824*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 825*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 826*4bdc9457SAndroid Build Coastguard Worker } 827*4bdc9457SAndroid Build Coastguard Worker } 828*4bdc9457SAndroid Build Coastguard Worker } 829*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_gt_8_subtile)830*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_gt_8_subtile) { 831*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 832*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 833*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 834*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 835*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 836*4bdc9457SAndroid Build Coastguard Worker .mr(4) 837*4bdc9457SAndroid Build Coastguard Worker .nr(8) 838*4bdc9457SAndroid Build Coastguard Worker .kr(1) 839*4bdc9457SAndroid Build Coastguard Worker .sr(1) 840*4bdc9457SAndroid Build Coastguard Worker .m(m) 841*4bdc9457SAndroid Build Coastguard Worker .n(n) 842*4bdc9457SAndroid Build Coastguard Worker .k(k) 843*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 844*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 845*4bdc9457SAndroid Build Coastguard Worker } 846*4bdc9457SAndroid Build Coastguard Worker } 847*4bdc9457SAndroid Build Coastguard Worker } 848*4bdc9457SAndroid Build Coastguard Worker } 849*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_div_8)850*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_div_8) { 851*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 852*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 853*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 854*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 855*4bdc9457SAndroid Build Coastguard Worker .mr(4) 856*4bdc9457SAndroid Build Coastguard Worker .nr(8) 857*4bdc9457SAndroid Build Coastguard Worker .kr(1) 858*4bdc9457SAndroid Build Coastguard Worker .sr(1) 859*4bdc9457SAndroid Build Coastguard Worker .m(4) 860*4bdc9457SAndroid Build Coastguard Worker .n(n) 861*4bdc9457SAndroid Build Coastguard Worker .k(k) 862*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 863*4bdc9457SAndroid Build Coastguard Worker } 864*4bdc9457SAndroid Build Coastguard Worker } 865*4bdc9457SAndroid Build Coastguard Worker } 866*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_div_8_strided_cn)867*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_div_8_strided_cn) { 868*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 869*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 870*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 871*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 872*4bdc9457SAndroid Build Coastguard Worker .mr(4) 873*4bdc9457SAndroid Build Coastguard Worker .nr(8) 874*4bdc9457SAndroid Build Coastguard Worker .kr(1) 875*4bdc9457SAndroid Build Coastguard Worker .sr(1) 876*4bdc9457SAndroid Build Coastguard Worker .m(4) 877*4bdc9457SAndroid Build Coastguard Worker .n(n) 878*4bdc9457SAndroid Build Coastguard Worker .k(k) 879*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 880*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 881*4bdc9457SAndroid Build Coastguard Worker } 882*4bdc9457SAndroid Build Coastguard Worker } 883*4bdc9457SAndroid Build Coastguard Worker } 884*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_div_8_strided_a)885*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_div_8_strided_a) { 886*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 887*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 888*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 889*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 890*4bdc9457SAndroid Build Coastguard Worker .mr(4) 891*4bdc9457SAndroid Build Coastguard Worker .nr(8) 892*4bdc9457SAndroid Build Coastguard Worker .kr(1) 893*4bdc9457SAndroid Build Coastguard Worker .sr(1) 894*4bdc9457SAndroid Build Coastguard Worker .m(4) 895*4bdc9457SAndroid Build Coastguard Worker .n(n) 896*4bdc9457SAndroid Build Coastguard Worker .k(k) 897*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 898*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 899*4bdc9457SAndroid Build Coastguard Worker } 900*4bdc9457SAndroid Build Coastguard Worker } 901*4bdc9457SAndroid Build Coastguard Worker } 902*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,n_div_8_subtile)903*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, n_div_8_subtile) { 904*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 905*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 906*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 907*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 908*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 909*4bdc9457SAndroid Build Coastguard Worker .mr(4) 910*4bdc9457SAndroid Build Coastguard Worker .nr(8) 911*4bdc9457SAndroid Build Coastguard Worker .kr(1) 912*4bdc9457SAndroid Build Coastguard Worker .sr(1) 913*4bdc9457SAndroid Build Coastguard Worker .m(m) 914*4bdc9457SAndroid Build Coastguard Worker .n(n) 915*4bdc9457SAndroid Build Coastguard Worker .k(k) 916*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 917*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 918*4bdc9457SAndroid Build Coastguard Worker } 919*4bdc9457SAndroid Build Coastguard Worker } 920*4bdc9457SAndroid Build Coastguard Worker } 921*4bdc9457SAndroid Build Coastguard Worker } 922*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,strided_cm_subtile)923*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, strided_cm_subtile) { 924*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 925*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 926*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 927*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 928*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 929*4bdc9457SAndroid Build Coastguard Worker .mr(4) 930*4bdc9457SAndroid Build Coastguard Worker .nr(8) 931*4bdc9457SAndroid Build Coastguard Worker .kr(1) 932*4bdc9457SAndroid Build Coastguard Worker .sr(1) 933*4bdc9457SAndroid Build Coastguard Worker .m(m) 934*4bdc9457SAndroid Build Coastguard Worker .n(n) 935*4bdc9457SAndroid Build Coastguard Worker .k(k) 936*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 937*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 938*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 939*4bdc9457SAndroid Build Coastguard Worker } 940*4bdc9457SAndroid Build Coastguard Worker } 941*4bdc9457SAndroid Build Coastguard Worker } 942*4bdc9457SAndroid Build Coastguard Worker } 943*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,qmin)944*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, qmin) { 945*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 946*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 947*4bdc9457SAndroid Build Coastguard Worker .mr(4) 948*4bdc9457SAndroid Build Coastguard Worker .nr(8) 949*4bdc9457SAndroid Build Coastguard Worker .kr(1) 950*4bdc9457SAndroid Build Coastguard Worker .sr(1) 951*4bdc9457SAndroid Build Coastguard Worker .m(4) 952*4bdc9457SAndroid Build Coastguard Worker .n(8) 953*4bdc9457SAndroid Build Coastguard Worker .k(8) 954*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 955*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 956*4bdc9457SAndroid Build Coastguard Worker } 957*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,qmax)958*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, qmax) { 959*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 960*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 961*4bdc9457SAndroid Build Coastguard Worker .mr(4) 962*4bdc9457SAndroid Build Coastguard Worker .nr(8) 963*4bdc9457SAndroid Build Coastguard Worker .kr(1) 964*4bdc9457SAndroid Build Coastguard Worker .sr(1) 965*4bdc9457SAndroid Build Coastguard Worker .m(4) 966*4bdc9457SAndroid Build Coastguard Worker .n(8) 967*4bdc9457SAndroid Build Coastguard Worker .k(8) 968*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 969*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 970*4bdc9457SAndroid Build Coastguard Worker } 971*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,strided_cm)972*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, strided_cm) { 973*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 974*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 975*4bdc9457SAndroid Build Coastguard Worker .mr(4) 976*4bdc9457SAndroid Build Coastguard Worker .nr(8) 977*4bdc9457SAndroid Build Coastguard Worker .kr(1) 978*4bdc9457SAndroid Build Coastguard Worker .sr(1) 979*4bdc9457SAndroid Build Coastguard Worker .m(4) 980*4bdc9457SAndroid Build Coastguard Worker .n(8) 981*4bdc9457SAndroid Build Coastguard Worker .k(8) 982*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 983*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 984*4bdc9457SAndroid Build Coastguard Worker } 985*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,no_a_zero_point)986*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, no_a_zero_point) { 987*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 988*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 989*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 990*4bdc9457SAndroid Build Coastguard Worker .mr(4) 991*4bdc9457SAndroid Build Coastguard Worker .nr(8) 992*4bdc9457SAndroid Build Coastguard Worker .kr(1) 993*4bdc9457SAndroid Build Coastguard Worker .sr(1) 994*4bdc9457SAndroid Build Coastguard Worker .m(4) 995*4bdc9457SAndroid Build Coastguard Worker .n(8) 996*4bdc9457SAndroid Build Coastguard Worker .k(k) 997*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 998*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 999*4bdc9457SAndroid Build Coastguard Worker } 1000*4bdc9457SAndroid Build Coastguard Worker } 1001*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,no_b_zero_point)1002*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, no_b_zero_point) { 1003*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1004*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1005*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1006*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1007*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1008*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1009*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1010*4bdc9457SAndroid Build Coastguard Worker .m(4) 1011*4bdc9457SAndroid Build Coastguard Worker .n(8) 1012*4bdc9457SAndroid Build Coastguard Worker .k(k) 1013*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 1014*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1015*4bdc9457SAndroid Build Coastguard Worker } 1016*4bdc9457SAndroid Build Coastguard Worker } 1017*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7,no_zero_point)1018*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A7, no_zero_point) { 1019*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1020*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1021*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1022*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1023*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1024*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1025*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1026*4bdc9457SAndroid Build Coastguard Worker .m(4) 1027*4bdc9457SAndroid Build Coastguard Worker .n(8) 1028*4bdc9457SAndroid Build Coastguard Worker .k(k) 1029*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 1030*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 1031*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1032*4bdc9457SAndroid Build Coastguard Worker } 1033*4bdc9457SAndroid Build Coastguard Worker } 1034*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY 1035*4bdc9457SAndroid Build Coastguard Worker 1036*4bdc9457SAndroid Build Coastguard Worker 1037*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_eq_8)1038*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_eq_8) { 1039*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1040*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1041*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1042*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1043*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1044*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1045*4bdc9457SAndroid Build Coastguard Worker .m(4) 1046*4bdc9457SAndroid Build Coastguard Worker .n(8) 1047*4bdc9457SAndroid Build Coastguard Worker .k(8) 1048*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1049*4bdc9457SAndroid Build Coastguard Worker } 1050*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,strided_cn)1051*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, strided_cn) { 1052*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1053*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1054*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1055*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1056*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1057*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1058*4bdc9457SAndroid Build Coastguard Worker .m(4) 1059*4bdc9457SAndroid Build Coastguard Worker .n(8) 1060*4bdc9457SAndroid Build Coastguard Worker .k(8) 1061*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1063*4bdc9457SAndroid Build Coastguard Worker } 1064*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_eq_8_strided_a)1065*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_eq_8_strided_a) { 1066*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1067*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1068*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1069*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1070*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1071*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1072*4bdc9457SAndroid Build Coastguard Worker .m(4) 1073*4bdc9457SAndroid Build Coastguard Worker .n(8) 1074*4bdc9457SAndroid Build Coastguard Worker .k(8) 1075*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 1076*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1077*4bdc9457SAndroid Build Coastguard Worker } 1078*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_eq_8_subtile)1079*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_eq_8_subtile) { 1080*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1081*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1082*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1083*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1084*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1085*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1086*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1087*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1088*4bdc9457SAndroid Build Coastguard Worker .m(m) 1089*4bdc9457SAndroid Build Coastguard Worker .n(n) 1090*4bdc9457SAndroid Build Coastguard Worker .k(8) 1091*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1092*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1093*4bdc9457SAndroid Build Coastguard Worker } 1094*4bdc9457SAndroid Build Coastguard Worker } 1095*4bdc9457SAndroid Build Coastguard Worker } 1096*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_eq_8_subtile_m)1097*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_eq_8_subtile_m) { 1098*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1099*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1100*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1101*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1102*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1103*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1104*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1105*4bdc9457SAndroid Build Coastguard Worker .m(m) 1106*4bdc9457SAndroid Build Coastguard Worker .n(8) 1107*4bdc9457SAndroid Build Coastguard Worker .k(8) 1108*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1109*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1110*4bdc9457SAndroid Build Coastguard Worker } 1111*4bdc9457SAndroid Build Coastguard Worker } 1112*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_eq_8_subtile_n)1113*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_eq_8_subtile_n) { 1114*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1115*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1116*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1117*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1118*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1119*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1120*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1121*4bdc9457SAndroid Build Coastguard Worker .m(4) 1122*4bdc9457SAndroid Build Coastguard Worker .n(n) 1123*4bdc9457SAndroid Build Coastguard Worker .k(8) 1124*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1125*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1126*4bdc9457SAndroid Build Coastguard Worker } 1127*4bdc9457SAndroid Build Coastguard Worker } 1128*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_lt_8)1129*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_lt_8) { 1130*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1131*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 1132*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1133*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1134*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1135*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1136*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1137*4bdc9457SAndroid Build Coastguard Worker .m(4) 1138*4bdc9457SAndroid Build Coastguard Worker .n(8) 1139*4bdc9457SAndroid Build Coastguard Worker .k(k) 1140*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1141*4bdc9457SAndroid Build Coastguard Worker } 1142*4bdc9457SAndroid Build Coastguard Worker } 1143*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_lt_8_strided_a)1144*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_lt_8_strided_a) { 1145*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1146*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 1147*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1148*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1149*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1150*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1151*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1152*4bdc9457SAndroid Build Coastguard Worker .m(4) 1153*4bdc9457SAndroid Build Coastguard Worker .n(8) 1154*4bdc9457SAndroid Build Coastguard Worker .k(k) 1155*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 1156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1157*4bdc9457SAndroid Build Coastguard Worker } 1158*4bdc9457SAndroid Build Coastguard Worker } 1159*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_lt_8_subtile)1160*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_lt_8_subtile) { 1161*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1162*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 1163*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1164*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1165*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1166*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1167*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1168*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1169*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1170*4bdc9457SAndroid Build Coastguard Worker .m(m) 1171*4bdc9457SAndroid Build Coastguard Worker .n(n) 1172*4bdc9457SAndroid Build Coastguard Worker .k(k) 1173*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1174*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1175*4bdc9457SAndroid Build Coastguard Worker } 1176*4bdc9457SAndroid Build Coastguard Worker } 1177*4bdc9457SAndroid Build Coastguard Worker } 1178*4bdc9457SAndroid Build Coastguard Worker } 1179*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_gt_8)1180*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_gt_8) { 1181*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1182*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 1183*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1184*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1185*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1186*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1187*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1188*4bdc9457SAndroid Build Coastguard Worker .m(4) 1189*4bdc9457SAndroid Build Coastguard Worker .n(8) 1190*4bdc9457SAndroid Build Coastguard Worker .k(k) 1191*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1192*4bdc9457SAndroid Build Coastguard Worker } 1193*4bdc9457SAndroid Build Coastguard Worker } 1194*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_gt_8_strided_a)1195*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_gt_8_strided_a) { 1196*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1197*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 1198*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1199*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1200*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1201*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1202*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1203*4bdc9457SAndroid Build Coastguard Worker .m(4) 1204*4bdc9457SAndroid Build Coastguard Worker .n(8) 1205*4bdc9457SAndroid Build Coastguard Worker .k(k) 1206*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 1207*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1208*4bdc9457SAndroid Build Coastguard Worker } 1209*4bdc9457SAndroid Build Coastguard Worker } 1210*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_gt_8_subtile)1211*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_gt_8_subtile) { 1212*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1213*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 1214*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1215*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1216*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1217*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1218*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1219*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1220*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1221*4bdc9457SAndroid Build Coastguard Worker .m(m) 1222*4bdc9457SAndroid Build Coastguard Worker .n(n) 1223*4bdc9457SAndroid Build Coastguard Worker .k(k) 1224*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1225*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1226*4bdc9457SAndroid Build Coastguard Worker } 1227*4bdc9457SAndroid Build Coastguard Worker } 1228*4bdc9457SAndroid Build Coastguard Worker } 1229*4bdc9457SAndroid Build Coastguard Worker } 1230*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_div_8)1231*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_div_8) { 1232*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1233*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 1234*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1235*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1236*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1237*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1238*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1239*4bdc9457SAndroid Build Coastguard Worker .m(4) 1240*4bdc9457SAndroid Build Coastguard Worker .n(8) 1241*4bdc9457SAndroid Build Coastguard Worker .k(k) 1242*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1243*4bdc9457SAndroid Build Coastguard Worker } 1244*4bdc9457SAndroid Build Coastguard Worker } 1245*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_div_8_strided_a)1246*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_div_8_strided_a) { 1247*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1248*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 1249*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1250*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1251*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1252*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1253*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1254*4bdc9457SAndroid Build Coastguard Worker .m(4) 1255*4bdc9457SAndroid Build Coastguard Worker .n(8) 1256*4bdc9457SAndroid Build Coastguard Worker .k(k) 1257*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 1258*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1259*4bdc9457SAndroid Build Coastguard Worker } 1260*4bdc9457SAndroid Build Coastguard Worker } 1261*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,k_div_8_subtile)1262*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, k_div_8_subtile) { 1263*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1264*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 1265*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1266*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1267*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1268*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1269*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1270*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1271*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1272*4bdc9457SAndroid Build Coastguard Worker .m(m) 1273*4bdc9457SAndroid Build Coastguard Worker .n(n) 1274*4bdc9457SAndroid Build Coastguard Worker .k(k) 1275*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1276*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1277*4bdc9457SAndroid Build Coastguard Worker } 1278*4bdc9457SAndroid Build Coastguard Worker } 1279*4bdc9457SAndroid Build Coastguard Worker } 1280*4bdc9457SAndroid Build Coastguard Worker } 1281*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,n_gt_8)1282*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, n_gt_8) { 1283*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1284*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1285*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1286*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1287*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1288*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1289*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1290*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1291*4bdc9457SAndroid Build Coastguard Worker .m(4) 1292*4bdc9457SAndroid Build Coastguard Worker .n(n) 1293*4bdc9457SAndroid Build Coastguard Worker .k(k) 1294*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1295*4bdc9457SAndroid Build Coastguard Worker } 1296*4bdc9457SAndroid Build Coastguard Worker } 1297*4bdc9457SAndroid Build Coastguard Worker } 1298*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,n_gt_8_strided_cn)1299*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, n_gt_8_strided_cn) { 1300*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1301*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1302*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1303*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1304*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1305*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1306*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1307*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1308*4bdc9457SAndroid Build Coastguard Worker .m(4) 1309*4bdc9457SAndroid Build Coastguard Worker .n(n) 1310*4bdc9457SAndroid Build Coastguard Worker .k(k) 1311*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1312*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1313*4bdc9457SAndroid Build Coastguard Worker } 1314*4bdc9457SAndroid Build Coastguard Worker } 1315*4bdc9457SAndroid Build Coastguard Worker } 1316*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,n_gt_8_strided_a)1317*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, n_gt_8_strided_a) { 1318*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1319*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1320*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1321*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1322*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1323*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1324*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1325*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1326*4bdc9457SAndroid Build Coastguard Worker .m(4) 1327*4bdc9457SAndroid Build Coastguard Worker .n(n) 1328*4bdc9457SAndroid Build Coastguard Worker .k(k) 1329*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 1330*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1331*4bdc9457SAndroid Build Coastguard Worker } 1332*4bdc9457SAndroid Build Coastguard Worker } 1333*4bdc9457SAndroid Build Coastguard Worker } 1334*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,n_gt_8_subtile)1335*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, n_gt_8_subtile) { 1336*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1337*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1338*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1339*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1340*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1341*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1342*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1343*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1344*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1345*4bdc9457SAndroid Build Coastguard Worker .m(m) 1346*4bdc9457SAndroid Build Coastguard Worker .n(n) 1347*4bdc9457SAndroid Build Coastguard Worker .k(k) 1348*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1349*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1350*4bdc9457SAndroid Build Coastguard Worker } 1351*4bdc9457SAndroid Build Coastguard Worker } 1352*4bdc9457SAndroid Build Coastguard Worker } 1353*4bdc9457SAndroid Build Coastguard Worker } 1354*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,n_div_8)1355*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, n_div_8) { 1356*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1357*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1358*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1359*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1360*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1361*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1362*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1363*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1364*4bdc9457SAndroid Build Coastguard Worker .m(4) 1365*4bdc9457SAndroid Build Coastguard Worker .n(n) 1366*4bdc9457SAndroid Build Coastguard Worker .k(k) 1367*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1368*4bdc9457SAndroid Build Coastguard Worker } 1369*4bdc9457SAndroid Build Coastguard Worker } 1370*4bdc9457SAndroid Build Coastguard Worker } 1371*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,n_div_8_strided_cn)1372*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, n_div_8_strided_cn) { 1373*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1374*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1375*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1376*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1377*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1378*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1379*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1380*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1381*4bdc9457SAndroid Build Coastguard Worker .m(4) 1382*4bdc9457SAndroid Build Coastguard Worker .n(n) 1383*4bdc9457SAndroid Build Coastguard Worker .k(k) 1384*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1385*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1386*4bdc9457SAndroid Build Coastguard Worker } 1387*4bdc9457SAndroid Build Coastguard Worker } 1388*4bdc9457SAndroid Build Coastguard Worker } 1389*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,n_div_8_strided_a)1390*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, n_div_8_strided_a) { 1391*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1392*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1393*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1394*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1395*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1396*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1397*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1398*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1399*4bdc9457SAndroid Build Coastguard Worker .m(4) 1400*4bdc9457SAndroid Build Coastguard Worker .n(n) 1401*4bdc9457SAndroid Build Coastguard Worker .k(k) 1402*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 1403*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1404*4bdc9457SAndroid Build Coastguard Worker } 1405*4bdc9457SAndroid Build Coastguard Worker } 1406*4bdc9457SAndroid Build Coastguard Worker } 1407*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,n_div_8_subtile)1408*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, n_div_8_subtile) { 1409*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1410*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1411*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1412*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1413*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1414*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1415*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1416*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1417*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1418*4bdc9457SAndroid Build Coastguard Worker .m(m) 1419*4bdc9457SAndroid Build Coastguard Worker .n(n) 1420*4bdc9457SAndroid Build Coastguard Worker .k(k) 1421*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1422*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1423*4bdc9457SAndroid Build Coastguard Worker } 1424*4bdc9457SAndroid Build Coastguard Worker } 1425*4bdc9457SAndroid Build Coastguard Worker } 1426*4bdc9457SAndroid Build Coastguard Worker } 1427*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,strided_cm_subtile)1428*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, strided_cm_subtile) { 1429*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1430*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1431*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1432*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1433*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1434*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1435*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1436*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1437*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1438*4bdc9457SAndroid Build Coastguard Worker .m(m) 1439*4bdc9457SAndroid Build Coastguard Worker .n(n) 1440*4bdc9457SAndroid Build Coastguard Worker .k(k) 1441*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 1442*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1443*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1444*4bdc9457SAndroid Build Coastguard Worker } 1445*4bdc9457SAndroid Build Coastguard Worker } 1446*4bdc9457SAndroid Build Coastguard Worker } 1447*4bdc9457SAndroid Build Coastguard Worker } 1448*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,qmin)1449*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, qmin) { 1450*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1451*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1452*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1453*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1454*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1455*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1456*4bdc9457SAndroid Build Coastguard Worker .m(4) 1457*4bdc9457SAndroid Build Coastguard Worker .n(8) 1458*4bdc9457SAndroid Build Coastguard Worker .k(8) 1459*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1460*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1461*4bdc9457SAndroid Build Coastguard Worker } 1462*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,qmax)1463*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, qmax) { 1464*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1465*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1466*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1467*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1468*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1469*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1470*4bdc9457SAndroid Build Coastguard Worker .m(4) 1471*4bdc9457SAndroid Build Coastguard Worker .n(8) 1472*4bdc9457SAndroid Build Coastguard Worker .k(8) 1473*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1474*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1475*4bdc9457SAndroid Build Coastguard Worker } 1476*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,strided_cm)1477*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, strided_cm) { 1478*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1479*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1480*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1481*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1482*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1483*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1484*4bdc9457SAndroid Build Coastguard Worker .m(4) 1485*4bdc9457SAndroid Build Coastguard Worker .n(8) 1486*4bdc9457SAndroid Build Coastguard Worker .k(8) 1487*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 1488*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1489*4bdc9457SAndroid Build Coastguard Worker } 1490*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,no_a_zero_point)1491*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, no_a_zero_point) { 1492*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1493*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1494*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1495*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1496*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1497*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1498*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1499*4bdc9457SAndroid Build Coastguard Worker .m(4) 1500*4bdc9457SAndroid Build Coastguard Worker .n(8) 1501*4bdc9457SAndroid Build Coastguard Worker .k(k) 1502*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 1503*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1504*4bdc9457SAndroid Build Coastguard Worker } 1505*4bdc9457SAndroid Build Coastguard Worker } 1506*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,no_b_zero_point)1507*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, no_b_zero_point) { 1508*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1509*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1510*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1511*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1512*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1513*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1514*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1515*4bdc9457SAndroid Build Coastguard Worker .m(4) 1516*4bdc9457SAndroid Build Coastguard Worker .n(8) 1517*4bdc9457SAndroid Build Coastguard Worker .k(k) 1518*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 1519*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1520*4bdc9457SAndroid Build Coastguard Worker } 1521*4bdc9457SAndroid Build Coastguard Worker } 1522*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53,no_zero_point)1523*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_CORTEX_A53, no_zero_point) { 1524*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1525*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1526*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1527*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1528*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1529*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1530*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1531*4bdc9457SAndroid Build Coastguard Worker .m(4) 1532*4bdc9457SAndroid Build Coastguard Worker .n(8) 1533*4bdc9457SAndroid Build Coastguard Worker .k(k) 1534*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 1535*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 1536*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1537*4bdc9457SAndroid Build Coastguard Worker } 1538*4bdc9457SAndroid Build Coastguard Worker } 1539*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY 1540*4bdc9457SAndroid Build Coastguard Worker 1541*4bdc9457SAndroid Build Coastguard Worker 1542*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_eq_8)1543*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_eq_8) { 1544*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1545*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1546*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1547*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1548*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1549*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1550*4bdc9457SAndroid Build Coastguard Worker .m(4) 1551*4bdc9457SAndroid Build Coastguard Worker .n(8) 1552*4bdc9457SAndroid Build Coastguard Worker .k(8) 1553*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1554*4bdc9457SAndroid Build Coastguard Worker } 1555*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,strided_cn)1556*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, strided_cn) { 1557*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1558*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1559*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1560*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1561*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1562*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1563*4bdc9457SAndroid Build Coastguard Worker .m(4) 1564*4bdc9457SAndroid Build Coastguard Worker .n(8) 1565*4bdc9457SAndroid Build Coastguard Worker .k(8) 1566*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1567*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1568*4bdc9457SAndroid Build Coastguard Worker } 1569*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_eq_8_strided_a)1570*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_eq_8_strided_a) { 1571*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1572*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1573*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1574*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1575*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1576*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1577*4bdc9457SAndroid Build Coastguard Worker .m(4) 1578*4bdc9457SAndroid Build Coastguard Worker .n(8) 1579*4bdc9457SAndroid Build Coastguard Worker .k(8) 1580*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 1581*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1582*4bdc9457SAndroid Build Coastguard Worker } 1583*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_eq_8_subtile)1584*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_eq_8_subtile) { 1585*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1586*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1587*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1588*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1589*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1590*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1591*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1592*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1593*4bdc9457SAndroid Build Coastguard Worker .m(m) 1594*4bdc9457SAndroid Build Coastguard Worker .n(n) 1595*4bdc9457SAndroid Build Coastguard Worker .k(8) 1596*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1597*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1598*4bdc9457SAndroid Build Coastguard Worker } 1599*4bdc9457SAndroid Build Coastguard Worker } 1600*4bdc9457SAndroid Build Coastguard Worker } 1601*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_eq_8_subtile_m)1602*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_eq_8_subtile_m) { 1603*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1604*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1605*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1606*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1607*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1608*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1609*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1610*4bdc9457SAndroid Build Coastguard Worker .m(m) 1611*4bdc9457SAndroid Build Coastguard Worker .n(8) 1612*4bdc9457SAndroid Build Coastguard Worker .k(8) 1613*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1614*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1615*4bdc9457SAndroid Build Coastguard Worker } 1616*4bdc9457SAndroid Build Coastguard Worker } 1617*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_eq_8_subtile_n)1618*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_eq_8_subtile_n) { 1619*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1620*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1621*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1622*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1623*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1624*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1625*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1626*4bdc9457SAndroid Build Coastguard Worker .m(4) 1627*4bdc9457SAndroid Build Coastguard Worker .n(n) 1628*4bdc9457SAndroid Build Coastguard Worker .k(8) 1629*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1630*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1631*4bdc9457SAndroid Build Coastguard Worker } 1632*4bdc9457SAndroid Build Coastguard Worker } 1633*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_lt_8)1634*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_lt_8) { 1635*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1636*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 1637*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1638*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1639*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1640*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1641*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1642*4bdc9457SAndroid Build Coastguard Worker .m(4) 1643*4bdc9457SAndroid Build Coastguard Worker .n(8) 1644*4bdc9457SAndroid Build Coastguard Worker .k(k) 1645*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1646*4bdc9457SAndroid Build Coastguard Worker } 1647*4bdc9457SAndroid Build Coastguard Worker } 1648*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_lt_8_strided_a)1649*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_lt_8_strided_a) { 1650*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1651*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 1652*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1653*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1654*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1655*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1656*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1657*4bdc9457SAndroid Build Coastguard Worker .m(4) 1658*4bdc9457SAndroid Build Coastguard Worker .n(8) 1659*4bdc9457SAndroid Build Coastguard Worker .k(k) 1660*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 1661*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1662*4bdc9457SAndroid Build Coastguard Worker } 1663*4bdc9457SAndroid Build Coastguard Worker } 1664*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_lt_8_subtile)1665*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_lt_8_subtile) { 1666*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1667*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 1668*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1669*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1670*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1671*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1672*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1673*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1674*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1675*4bdc9457SAndroid Build Coastguard Worker .m(m) 1676*4bdc9457SAndroid Build Coastguard Worker .n(n) 1677*4bdc9457SAndroid Build Coastguard Worker .k(k) 1678*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1679*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1680*4bdc9457SAndroid Build Coastguard Worker } 1681*4bdc9457SAndroid Build Coastguard Worker } 1682*4bdc9457SAndroid Build Coastguard Worker } 1683*4bdc9457SAndroid Build Coastguard Worker } 1684*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_gt_8)1685*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_gt_8) { 1686*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1687*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 1688*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1689*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1690*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1691*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1692*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1693*4bdc9457SAndroid Build Coastguard Worker .m(4) 1694*4bdc9457SAndroid Build Coastguard Worker .n(8) 1695*4bdc9457SAndroid Build Coastguard Worker .k(k) 1696*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1697*4bdc9457SAndroid Build Coastguard Worker } 1698*4bdc9457SAndroid Build Coastguard Worker } 1699*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_gt_8_strided_a)1700*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_gt_8_strided_a) { 1701*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1702*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 1703*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1704*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1705*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1706*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1707*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1708*4bdc9457SAndroid Build Coastguard Worker .m(4) 1709*4bdc9457SAndroid Build Coastguard Worker .n(8) 1710*4bdc9457SAndroid Build Coastguard Worker .k(k) 1711*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 1712*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1713*4bdc9457SAndroid Build Coastguard Worker } 1714*4bdc9457SAndroid Build Coastguard Worker } 1715*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_gt_8_subtile)1716*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_gt_8_subtile) { 1717*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1718*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 1719*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1720*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1721*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1722*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1723*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1724*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1725*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1726*4bdc9457SAndroid Build Coastguard Worker .m(m) 1727*4bdc9457SAndroid Build Coastguard Worker .n(n) 1728*4bdc9457SAndroid Build Coastguard Worker .k(k) 1729*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1730*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1731*4bdc9457SAndroid Build Coastguard Worker } 1732*4bdc9457SAndroid Build Coastguard Worker } 1733*4bdc9457SAndroid Build Coastguard Worker } 1734*4bdc9457SAndroid Build Coastguard Worker } 1735*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_div_8)1736*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_div_8) { 1737*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1738*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 1739*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1740*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1741*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1742*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1743*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1744*4bdc9457SAndroid Build Coastguard Worker .m(4) 1745*4bdc9457SAndroid Build Coastguard Worker .n(8) 1746*4bdc9457SAndroid Build Coastguard Worker .k(k) 1747*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1748*4bdc9457SAndroid Build Coastguard Worker } 1749*4bdc9457SAndroid Build Coastguard Worker } 1750*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_div_8_strided_a)1751*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_div_8_strided_a) { 1752*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1753*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 1754*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1755*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1756*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1757*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1758*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1759*4bdc9457SAndroid Build Coastguard Worker .m(4) 1760*4bdc9457SAndroid Build Coastguard Worker .n(8) 1761*4bdc9457SAndroid Build Coastguard Worker .k(k) 1762*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 1763*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1764*4bdc9457SAndroid Build Coastguard Worker } 1765*4bdc9457SAndroid Build Coastguard Worker } 1766*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,k_div_8_subtile)1767*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, k_div_8_subtile) { 1768*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1769*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 1770*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1771*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1772*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1773*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1774*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1775*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1776*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1777*4bdc9457SAndroid Build Coastguard Worker .m(m) 1778*4bdc9457SAndroid Build Coastguard Worker .n(n) 1779*4bdc9457SAndroid Build Coastguard Worker .k(k) 1780*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1781*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1782*4bdc9457SAndroid Build Coastguard Worker } 1783*4bdc9457SAndroid Build Coastguard Worker } 1784*4bdc9457SAndroid Build Coastguard Worker } 1785*4bdc9457SAndroid Build Coastguard Worker } 1786*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,n_gt_8)1787*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, n_gt_8) { 1788*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1789*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1790*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1791*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1792*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1793*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1794*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1795*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1796*4bdc9457SAndroid Build Coastguard Worker .m(4) 1797*4bdc9457SAndroid Build Coastguard Worker .n(n) 1798*4bdc9457SAndroid Build Coastguard Worker .k(k) 1799*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1800*4bdc9457SAndroid Build Coastguard Worker } 1801*4bdc9457SAndroid Build Coastguard Worker } 1802*4bdc9457SAndroid Build Coastguard Worker } 1803*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,n_gt_8_strided_cn)1804*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, n_gt_8_strided_cn) { 1805*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1806*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1807*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1808*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1809*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1810*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1811*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1812*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1813*4bdc9457SAndroid Build Coastguard Worker .m(4) 1814*4bdc9457SAndroid Build Coastguard Worker .n(n) 1815*4bdc9457SAndroid Build Coastguard Worker .k(k) 1816*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1817*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1818*4bdc9457SAndroid Build Coastguard Worker } 1819*4bdc9457SAndroid Build Coastguard Worker } 1820*4bdc9457SAndroid Build Coastguard Worker } 1821*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,n_gt_8_strided_a)1822*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, n_gt_8_strided_a) { 1823*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1824*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1825*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1826*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1827*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1828*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1829*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1830*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1831*4bdc9457SAndroid Build Coastguard Worker .m(4) 1832*4bdc9457SAndroid Build Coastguard Worker .n(n) 1833*4bdc9457SAndroid Build Coastguard Worker .k(k) 1834*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 1835*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1836*4bdc9457SAndroid Build Coastguard Worker } 1837*4bdc9457SAndroid Build Coastguard Worker } 1838*4bdc9457SAndroid Build Coastguard Worker } 1839*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,n_gt_8_subtile)1840*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, n_gt_8_subtile) { 1841*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1842*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1843*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1844*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1845*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1846*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1847*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1848*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1849*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1850*4bdc9457SAndroid Build Coastguard Worker .m(m) 1851*4bdc9457SAndroid Build Coastguard Worker .n(n) 1852*4bdc9457SAndroid Build Coastguard Worker .k(k) 1853*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1854*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1855*4bdc9457SAndroid Build Coastguard Worker } 1856*4bdc9457SAndroid Build Coastguard Worker } 1857*4bdc9457SAndroid Build Coastguard Worker } 1858*4bdc9457SAndroid Build Coastguard Worker } 1859*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,n_div_8)1860*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, n_div_8) { 1861*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1862*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1863*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1864*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1865*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1866*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1867*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1868*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1869*4bdc9457SAndroid Build Coastguard Worker .m(4) 1870*4bdc9457SAndroid Build Coastguard Worker .n(n) 1871*4bdc9457SAndroid Build Coastguard Worker .k(k) 1872*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1873*4bdc9457SAndroid Build Coastguard Worker } 1874*4bdc9457SAndroid Build Coastguard Worker } 1875*4bdc9457SAndroid Build Coastguard Worker } 1876*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,n_div_8_strided_cn)1877*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, n_div_8_strided_cn) { 1878*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1879*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1880*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1881*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1882*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1883*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1884*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1885*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1886*4bdc9457SAndroid Build Coastguard Worker .m(4) 1887*4bdc9457SAndroid Build Coastguard Worker .n(n) 1888*4bdc9457SAndroid Build Coastguard Worker .k(k) 1889*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1890*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1891*4bdc9457SAndroid Build Coastguard Worker } 1892*4bdc9457SAndroid Build Coastguard Worker } 1893*4bdc9457SAndroid Build Coastguard Worker } 1894*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,n_div_8_strided_a)1895*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, n_div_8_strided_a) { 1896*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1897*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1898*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1899*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1900*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1901*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1902*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1903*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1904*4bdc9457SAndroid Build Coastguard Worker .m(4) 1905*4bdc9457SAndroid Build Coastguard Worker .n(n) 1906*4bdc9457SAndroid Build Coastguard Worker .k(k) 1907*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 1908*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1909*4bdc9457SAndroid Build Coastguard Worker } 1910*4bdc9457SAndroid Build Coastguard Worker } 1911*4bdc9457SAndroid Build Coastguard Worker } 1912*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,n_div_8_subtile)1913*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, n_div_8_subtile) { 1914*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1915*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1916*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1917*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1918*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1919*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1920*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1921*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1922*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1923*4bdc9457SAndroid Build Coastguard Worker .m(m) 1924*4bdc9457SAndroid Build Coastguard Worker .n(n) 1925*4bdc9457SAndroid Build Coastguard Worker .k(k) 1926*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1927*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1928*4bdc9457SAndroid Build Coastguard Worker } 1929*4bdc9457SAndroid Build Coastguard Worker } 1930*4bdc9457SAndroid Build Coastguard Worker } 1931*4bdc9457SAndroid Build Coastguard Worker } 1932*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,strided_cm_subtile)1933*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, strided_cm_subtile) { 1934*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1935*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1936*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1937*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1938*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1939*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1940*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1941*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1942*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1943*4bdc9457SAndroid Build Coastguard Worker .m(m) 1944*4bdc9457SAndroid Build Coastguard Worker .n(n) 1945*4bdc9457SAndroid Build Coastguard Worker .k(k) 1946*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 1947*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1948*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1949*4bdc9457SAndroid Build Coastguard Worker } 1950*4bdc9457SAndroid Build Coastguard Worker } 1951*4bdc9457SAndroid Build Coastguard Worker } 1952*4bdc9457SAndroid Build Coastguard Worker } 1953*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,qmin)1954*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, qmin) { 1955*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1956*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1957*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1958*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1959*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1960*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1961*4bdc9457SAndroid Build Coastguard Worker .m(4) 1962*4bdc9457SAndroid Build Coastguard Worker .n(8) 1963*4bdc9457SAndroid Build Coastguard Worker .k(8) 1964*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1965*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1966*4bdc9457SAndroid Build Coastguard Worker } 1967*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,qmax)1968*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, qmax) { 1969*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1970*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1971*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1972*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1973*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1974*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1975*4bdc9457SAndroid Build Coastguard Worker .m(4) 1976*4bdc9457SAndroid Build Coastguard Worker .n(8) 1977*4bdc9457SAndroid Build Coastguard Worker .k(8) 1978*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1979*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1980*4bdc9457SAndroid Build Coastguard Worker } 1981*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,strided_cm)1982*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, strided_cm) { 1983*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1984*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1985*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1986*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1987*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1988*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1989*4bdc9457SAndroid Build Coastguard Worker .m(4) 1990*4bdc9457SAndroid Build Coastguard Worker .n(8) 1991*4bdc9457SAndroid Build Coastguard Worker .k(8) 1992*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 1993*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 1994*4bdc9457SAndroid Build Coastguard Worker } 1995*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,no_a_zero_point)1996*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, no_a_zero_point) { 1997*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 1998*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 1999*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2000*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2001*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2002*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2003*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2004*4bdc9457SAndroid Build Coastguard Worker .m(4) 2005*4bdc9457SAndroid Build Coastguard Worker .n(8) 2006*4bdc9457SAndroid Build Coastguard Worker .k(k) 2007*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 2008*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2009*4bdc9457SAndroid Build Coastguard Worker } 2010*4bdc9457SAndroid Build Coastguard Worker } 2011*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,no_b_zero_point)2012*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, no_b_zero_point) { 2013*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2014*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2015*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2016*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2017*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2018*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2019*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2020*4bdc9457SAndroid Build Coastguard Worker .m(4) 2021*4bdc9457SAndroid Build Coastguard Worker .n(8) 2022*4bdc9457SAndroid Build Coastguard Worker .k(k) 2023*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 2024*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2025*4bdc9457SAndroid Build Coastguard Worker } 2026*4bdc9457SAndroid Build Coastguard Worker } 2027*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7,no_zero_point)2028*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A7, no_zero_point) { 2029*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2030*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2031*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2032*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2033*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2034*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2035*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2036*4bdc9457SAndroid Build Coastguard Worker .m(4) 2037*4bdc9457SAndroid Build Coastguard Worker .n(8) 2038*4bdc9457SAndroid Build Coastguard Worker .k(k) 2039*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 2040*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 2041*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a7, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2042*4bdc9457SAndroid Build Coastguard Worker } 2043*4bdc9457SAndroid Build Coastguard Worker } 2044*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY 2045*4bdc9457SAndroid Build Coastguard Worker 2046*4bdc9457SAndroid Build Coastguard Worker 2047*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8)2048*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8) { 2049*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2050*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2051*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2052*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2053*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2054*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2055*4bdc9457SAndroid Build Coastguard Worker .m(4) 2056*4bdc9457SAndroid Build Coastguard Worker .n(8) 2057*4bdc9457SAndroid Build Coastguard Worker .k(8) 2058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2059*4bdc9457SAndroid Build Coastguard Worker } 2060*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,strided_cn)2061*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, strided_cn) { 2062*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2063*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2064*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2065*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2066*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2067*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2068*4bdc9457SAndroid Build Coastguard Worker .m(4) 2069*4bdc9457SAndroid Build Coastguard Worker .n(8) 2070*4bdc9457SAndroid Build Coastguard Worker .k(8) 2071*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 2072*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2073*4bdc9457SAndroid Build Coastguard Worker } 2074*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8_strided_a)2075*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8_strided_a) { 2076*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2077*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2078*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2079*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2080*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2081*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2082*4bdc9457SAndroid Build Coastguard Worker .m(4) 2083*4bdc9457SAndroid Build Coastguard Worker .n(8) 2084*4bdc9457SAndroid Build Coastguard Worker .k(8) 2085*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 2086*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2087*4bdc9457SAndroid Build Coastguard Worker } 2088*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8_subtile)2089*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8_subtile) { 2090*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2091*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2092*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2093*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2094*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2095*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2096*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2097*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2098*4bdc9457SAndroid Build Coastguard Worker .m(m) 2099*4bdc9457SAndroid Build Coastguard Worker .n(n) 2100*4bdc9457SAndroid Build Coastguard Worker .k(8) 2101*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2102*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2103*4bdc9457SAndroid Build Coastguard Worker } 2104*4bdc9457SAndroid Build Coastguard Worker } 2105*4bdc9457SAndroid Build Coastguard Worker } 2106*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8_subtile_m)2107*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8_subtile_m) { 2108*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2109*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2110*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2111*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2112*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2113*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2114*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2115*4bdc9457SAndroid Build Coastguard Worker .m(m) 2116*4bdc9457SAndroid Build Coastguard Worker .n(8) 2117*4bdc9457SAndroid Build Coastguard Worker .k(8) 2118*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2119*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2120*4bdc9457SAndroid Build Coastguard Worker } 2121*4bdc9457SAndroid Build Coastguard Worker } 2122*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8_subtile_n)2123*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8_subtile_n) { 2124*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2125*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2126*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2127*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2128*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2129*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2130*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2131*4bdc9457SAndroid Build Coastguard Worker .m(4) 2132*4bdc9457SAndroid Build Coastguard Worker .n(n) 2133*4bdc9457SAndroid Build Coastguard Worker .k(8) 2134*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2135*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2136*4bdc9457SAndroid Build Coastguard Worker } 2137*4bdc9457SAndroid Build Coastguard Worker } 2138*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_lt_8)2139*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_lt_8) { 2140*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2141*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 2142*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2143*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2144*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2145*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2146*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2147*4bdc9457SAndroid Build Coastguard Worker .m(4) 2148*4bdc9457SAndroid Build Coastguard Worker .n(8) 2149*4bdc9457SAndroid Build Coastguard Worker .k(k) 2150*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2151*4bdc9457SAndroid Build Coastguard Worker } 2152*4bdc9457SAndroid Build Coastguard Worker } 2153*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_lt_8_strided_a)2154*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_lt_8_strided_a) { 2155*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2156*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 2157*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2158*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2159*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2160*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2161*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2162*4bdc9457SAndroid Build Coastguard Worker .m(4) 2163*4bdc9457SAndroid Build Coastguard Worker .n(8) 2164*4bdc9457SAndroid Build Coastguard Worker .k(k) 2165*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 2166*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2167*4bdc9457SAndroid Build Coastguard Worker } 2168*4bdc9457SAndroid Build Coastguard Worker } 2169*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_lt_8_subtile)2170*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_lt_8_subtile) { 2171*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2172*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 2173*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2174*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2175*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2176*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2177*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2178*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2179*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2180*4bdc9457SAndroid Build Coastguard Worker .m(m) 2181*4bdc9457SAndroid Build Coastguard Worker .n(n) 2182*4bdc9457SAndroid Build Coastguard Worker .k(k) 2183*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2184*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2185*4bdc9457SAndroid Build Coastguard Worker } 2186*4bdc9457SAndroid Build Coastguard Worker } 2187*4bdc9457SAndroid Build Coastguard Worker } 2188*4bdc9457SAndroid Build Coastguard Worker } 2189*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_gt_8)2190*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_gt_8) { 2191*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2192*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 2193*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2194*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2195*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2196*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2197*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2198*4bdc9457SAndroid Build Coastguard Worker .m(4) 2199*4bdc9457SAndroid Build Coastguard Worker .n(8) 2200*4bdc9457SAndroid Build Coastguard Worker .k(k) 2201*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2202*4bdc9457SAndroid Build Coastguard Worker } 2203*4bdc9457SAndroid Build Coastguard Worker } 2204*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_gt_8_strided_a)2205*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_gt_8_strided_a) { 2206*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2207*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 2208*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2209*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2210*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2211*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2212*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2213*4bdc9457SAndroid Build Coastguard Worker .m(4) 2214*4bdc9457SAndroid Build Coastguard Worker .n(8) 2215*4bdc9457SAndroid Build Coastguard Worker .k(k) 2216*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 2217*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2218*4bdc9457SAndroid Build Coastguard Worker } 2219*4bdc9457SAndroid Build Coastguard Worker } 2220*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_gt_8_subtile)2221*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_gt_8_subtile) { 2222*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2223*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 2224*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2225*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2226*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2227*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2228*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2229*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2230*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2231*4bdc9457SAndroid Build Coastguard Worker .m(m) 2232*4bdc9457SAndroid Build Coastguard Worker .n(n) 2233*4bdc9457SAndroid Build Coastguard Worker .k(k) 2234*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2235*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2236*4bdc9457SAndroid Build Coastguard Worker } 2237*4bdc9457SAndroid Build Coastguard Worker } 2238*4bdc9457SAndroid Build Coastguard Worker } 2239*4bdc9457SAndroid Build Coastguard Worker } 2240*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_div_8)2241*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_div_8) { 2242*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2243*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 2244*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2245*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2246*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2247*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2248*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2249*4bdc9457SAndroid Build Coastguard Worker .m(4) 2250*4bdc9457SAndroid Build Coastguard Worker .n(8) 2251*4bdc9457SAndroid Build Coastguard Worker .k(k) 2252*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2253*4bdc9457SAndroid Build Coastguard Worker } 2254*4bdc9457SAndroid Build Coastguard Worker } 2255*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_div_8_strided_a)2256*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_div_8_strided_a) { 2257*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2258*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 2259*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2260*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2261*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2262*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2263*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2264*4bdc9457SAndroid Build Coastguard Worker .m(4) 2265*4bdc9457SAndroid Build Coastguard Worker .n(8) 2266*4bdc9457SAndroid Build Coastguard Worker .k(k) 2267*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 2268*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2269*4bdc9457SAndroid Build Coastguard Worker } 2270*4bdc9457SAndroid Build Coastguard Worker } 2271*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_div_8_subtile)2272*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_div_8_subtile) { 2273*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2274*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 2275*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2276*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2277*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2278*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2279*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2280*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2281*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2282*4bdc9457SAndroid Build Coastguard Worker .m(m) 2283*4bdc9457SAndroid Build Coastguard Worker .n(n) 2284*4bdc9457SAndroid Build Coastguard Worker .k(k) 2285*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2286*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2287*4bdc9457SAndroid Build Coastguard Worker } 2288*4bdc9457SAndroid Build Coastguard Worker } 2289*4bdc9457SAndroid Build Coastguard Worker } 2290*4bdc9457SAndroid Build Coastguard Worker } 2291*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_gt_8)2292*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_gt_8) { 2293*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2294*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 2295*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2296*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2297*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2298*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2299*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2300*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2301*4bdc9457SAndroid Build Coastguard Worker .m(4) 2302*4bdc9457SAndroid Build Coastguard Worker .n(n) 2303*4bdc9457SAndroid Build Coastguard Worker .k(k) 2304*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2305*4bdc9457SAndroid Build Coastguard Worker } 2306*4bdc9457SAndroid Build Coastguard Worker } 2307*4bdc9457SAndroid Build Coastguard Worker } 2308*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_gt_8_strided_cn)2309*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_gt_8_strided_cn) { 2310*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2311*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 2312*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2313*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2314*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2315*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2316*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2317*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2318*4bdc9457SAndroid Build Coastguard Worker .m(4) 2319*4bdc9457SAndroid Build Coastguard Worker .n(n) 2320*4bdc9457SAndroid Build Coastguard Worker .k(k) 2321*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 2322*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2323*4bdc9457SAndroid Build Coastguard Worker } 2324*4bdc9457SAndroid Build Coastguard Worker } 2325*4bdc9457SAndroid Build Coastguard Worker } 2326*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_gt_8_strided_a)2327*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_gt_8_strided_a) { 2328*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2329*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 2330*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2331*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2332*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2333*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2334*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2335*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2336*4bdc9457SAndroid Build Coastguard Worker .m(4) 2337*4bdc9457SAndroid Build Coastguard Worker .n(n) 2338*4bdc9457SAndroid Build Coastguard Worker .k(k) 2339*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 2340*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2341*4bdc9457SAndroid Build Coastguard Worker } 2342*4bdc9457SAndroid Build Coastguard Worker } 2343*4bdc9457SAndroid Build Coastguard Worker } 2344*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_gt_8_subtile)2345*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_gt_8_subtile) { 2346*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2347*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 2348*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2349*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2350*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2351*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2352*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2353*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2354*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2355*4bdc9457SAndroid Build Coastguard Worker .m(m) 2356*4bdc9457SAndroid Build Coastguard Worker .n(n) 2357*4bdc9457SAndroid Build Coastguard Worker .k(k) 2358*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2359*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2360*4bdc9457SAndroid Build Coastguard Worker } 2361*4bdc9457SAndroid Build Coastguard Worker } 2362*4bdc9457SAndroid Build Coastguard Worker } 2363*4bdc9457SAndroid Build Coastguard Worker } 2364*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_div_8)2365*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_div_8) { 2366*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2367*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 2368*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2369*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2370*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2371*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2372*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2373*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2374*4bdc9457SAndroid Build Coastguard Worker .m(4) 2375*4bdc9457SAndroid Build Coastguard Worker .n(n) 2376*4bdc9457SAndroid Build Coastguard Worker .k(k) 2377*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2378*4bdc9457SAndroid Build Coastguard Worker } 2379*4bdc9457SAndroid Build Coastguard Worker } 2380*4bdc9457SAndroid Build Coastguard Worker } 2381*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_div_8_strided_cn)2382*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_div_8_strided_cn) { 2383*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2384*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 2385*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2386*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2387*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2388*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2389*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2390*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2391*4bdc9457SAndroid Build Coastguard Worker .m(4) 2392*4bdc9457SAndroid Build Coastguard Worker .n(n) 2393*4bdc9457SAndroid Build Coastguard Worker .k(k) 2394*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 2395*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2396*4bdc9457SAndroid Build Coastguard Worker } 2397*4bdc9457SAndroid Build Coastguard Worker } 2398*4bdc9457SAndroid Build Coastguard Worker } 2399*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_div_8_strided_a)2400*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_div_8_strided_a) { 2401*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2402*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 2403*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2404*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2405*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2406*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2407*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2408*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2409*4bdc9457SAndroid Build Coastguard Worker .m(4) 2410*4bdc9457SAndroid Build Coastguard Worker .n(n) 2411*4bdc9457SAndroid Build Coastguard Worker .k(k) 2412*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 2413*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2414*4bdc9457SAndroid Build Coastguard Worker } 2415*4bdc9457SAndroid Build Coastguard Worker } 2416*4bdc9457SAndroid Build Coastguard Worker } 2417*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_div_8_subtile)2418*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_div_8_subtile) { 2419*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2420*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 2421*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2422*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2423*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2424*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2425*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2426*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2427*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2428*4bdc9457SAndroid Build Coastguard Worker .m(m) 2429*4bdc9457SAndroid Build Coastguard Worker .n(n) 2430*4bdc9457SAndroid Build Coastguard Worker .k(k) 2431*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2432*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2433*4bdc9457SAndroid Build Coastguard Worker } 2434*4bdc9457SAndroid Build Coastguard Worker } 2435*4bdc9457SAndroid Build Coastguard Worker } 2436*4bdc9457SAndroid Build Coastguard Worker } 2437*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,strided_cm_subtile)2438*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, strided_cm_subtile) { 2439*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2440*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2441*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2442*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2443*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2444*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2445*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2446*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2447*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2448*4bdc9457SAndroid Build Coastguard Worker .m(m) 2449*4bdc9457SAndroid Build Coastguard Worker .n(n) 2450*4bdc9457SAndroid Build Coastguard Worker .k(k) 2451*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 2452*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2453*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2454*4bdc9457SAndroid Build Coastguard Worker } 2455*4bdc9457SAndroid Build Coastguard Worker } 2456*4bdc9457SAndroid Build Coastguard Worker } 2457*4bdc9457SAndroid Build Coastguard Worker } 2458*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,qmin)2459*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, qmin) { 2460*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2461*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2462*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2463*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2464*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2465*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2466*4bdc9457SAndroid Build Coastguard Worker .m(4) 2467*4bdc9457SAndroid Build Coastguard Worker .n(8) 2468*4bdc9457SAndroid Build Coastguard Worker .k(8) 2469*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2470*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2471*4bdc9457SAndroid Build Coastguard Worker } 2472*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,qmax)2473*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, qmax) { 2474*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2475*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2476*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2477*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2478*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2479*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2480*4bdc9457SAndroid Build Coastguard Worker .m(4) 2481*4bdc9457SAndroid Build Coastguard Worker .n(8) 2482*4bdc9457SAndroid Build Coastguard Worker .k(8) 2483*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2484*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2485*4bdc9457SAndroid Build Coastguard Worker } 2486*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,strided_cm)2487*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, strided_cm) { 2488*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2489*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2490*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2491*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2492*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2493*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2494*4bdc9457SAndroid Build Coastguard Worker .m(4) 2495*4bdc9457SAndroid Build Coastguard Worker .n(8) 2496*4bdc9457SAndroid Build Coastguard Worker .k(8) 2497*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 2498*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2499*4bdc9457SAndroid Build Coastguard Worker } 2500*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,no_a_zero_point)2501*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, no_a_zero_point) { 2502*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2503*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2504*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2505*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2506*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2507*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2508*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2509*4bdc9457SAndroid Build Coastguard Worker .m(4) 2510*4bdc9457SAndroid Build Coastguard Worker .n(8) 2511*4bdc9457SAndroid Build Coastguard Worker .k(k) 2512*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 2513*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2514*4bdc9457SAndroid Build Coastguard Worker } 2515*4bdc9457SAndroid Build Coastguard Worker } 2516*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,no_b_zero_point)2517*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, no_b_zero_point) { 2518*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2519*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2520*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2521*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2522*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2523*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2524*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2525*4bdc9457SAndroid Build Coastguard Worker .m(4) 2526*4bdc9457SAndroid Build Coastguard Worker .n(8) 2527*4bdc9457SAndroid Build Coastguard Worker .k(k) 2528*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 2529*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2530*4bdc9457SAndroid Build Coastguard Worker } 2531*4bdc9457SAndroid Build Coastguard Worker } 2532*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53,no_zero_point)2533*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8__AARCH32_NEON_MLAL_LANE_PRFM_CORTEX_A53, no_zero_point) { 2534*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2535*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2536*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2537*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2538*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2539*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2540*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2541*4bdc9457SAndroid Build Coastguard Worker .m(4) 2542*4bdc9457SAndroid Build Coastguard Worker .n(8) 2543*4bdc9457SAndroid Build Coastguard Worker .k(k) 2544*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 2545*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 2546*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2547*4bdc9457SAndroid Build Coastguard Worker } 2548*4bdc9457SAndroid Build Coastguard Worker } 2549*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM && XNN_ENABLE_ASSEMBLY 2550*4bdc9457SAndroid Build Coastguard Worker 2551*4bdc9457SAndroid Build Coastguard Worker 2552*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_eq_8)2553*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_eq_8) { 2554*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2555*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2556*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2557*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2558*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2559*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2560*4bdc9457SAndroid Build Coastguard Worker .m(1) 2561*4bdc9457SAndroid Build Coastguard Worker .n(16) 2562*4bdc9457SAndroid Build Coastguard Worker .k(8) 2563*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2564*4bdc9457SAndroid Build Coastguard Worker } 2565*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,strided_cn)2566*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, strided_cn) { 2567*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2568*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2569*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2570*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2571*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2572*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2573*4bdc9457SAndroid Build Coastguard Worker .m(1) 2574*4bdc9457SAndroid Build Coastguard Worker .n(16) 2575*4bdc9457SAndroid Build Coastguard Worker .k(8) 2576*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2577*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2578*4bdc9457SAndroid Build Coastguard Worker } 2579*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_eq_8_strided_a)2580*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_eq_8_strided_a) { 2581*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2582*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2583*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2584*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2585*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2586*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2587*4bdc9457SAndroid Build Coastguard Worker .m(1) 2588*4bdc9457SAndroid Build Coastguard Worker .n(16) 2589*4bdc9457SAndroid Build Coastguard Worker .k(8) 2590*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 2591*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2592*4bdc9457SAndroid Build Coastguard Worker } 2593*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_eq_8_subtile)2594*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_eq_8_subtile) { 2595*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2596*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2597*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 2598*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2599*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2600*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2601*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2602*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2603*4bdc9457SAndroid Build Coastguard Worker .m(m) 2604*4bdc9457SAndroid Build Coastguard Worker .n(n) 2605*4bdc9457SAndroid Build Coastguard Worker .k(8) 2606*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2607*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2608*4bdc9457SAndroid Build Coastguard Worker } 2609*4bdc9457SAndroid Build Coastguard Worker } 2610*4bdc9457SAndroid Build Coastguard Worker } 2611*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_eq_8_subtile_m)2612*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_eq_8_subtile_m) { 2613*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2614*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 2615*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2616*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2617*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2618*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2619*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2620*4bdc9457SAndroid Build Coastguard Worker .m(m) 2621*4bdc9457SAndroid Build Coastguard Worker .n(16) 2622*4bdc9457SAndroid Build Coastguard Worker .k(8) 2623*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2624*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2625*4bdc9457SAndroid Build Coastguard Worker } 2626*4bdc9457SAndroid Build Coastguard Worker } 2627*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_eq_8_subtile_n)2628*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_eq_8_subtile_n) { 2629*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2630*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2631*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2632*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2633*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2634*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2635*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2636*4bdc9457SAndroid Build Coastguard Worker .m(1) 2637*4bdc9457SAndroid Build Coastguard Worker .n(n) 2638*4bdc9457SAndroid Build Coastguard Worker .k(8) 2639*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2640*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2641*4bdc9457SAndroid Build Coastguard Worker } 2642*4bdc9457SAndroid Build Coastguard Worker } 2643*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_lt_8)2644*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_lt_8) { 2645*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2646*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 2647*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2648*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2649*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2650*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2651*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2652*4bdc9457SAndroid Build Coastguard Worker .m(1) 2653*4bdc9457SAndroid Build Coastguard Worker .n(16) 2654*4bdc9457SAndroid Build Coastguard Worker .k(k) 2655*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2656*4bdc9457SAndroid Build Coastguard Worker } 2657*4bdc9457SAndroid Build Coastguard Worker } 2658*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_lt_8_strided_a)2659*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_lt_8_strided_a) { 2660*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2661*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 2662*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2663*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2664*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2665*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2666*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2667*4bdc9457SAndroid Build Coastguard Worker .m(1) 2668*4bdc9457SAndroid Build Coastguard Worker .n(16) 2669*4bdc9457SAndroid Build Coastguard Worker .k(k) 2670*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 2671*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2672*4bdc9457SAndroid Build Coastguard Worker } 2673*4bdc9457SAndroid Build Coastguard Worker } 2674*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_lt_8_subtile)2675*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_lt_8_subtile) { 2676*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2677*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 2678*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2679*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 2680*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2681*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2682*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2683*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2684*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2685*4bdc9457SAndroid Build Coastguard Worker .m(m) 2686*4bdc9457SAndroid Build Coastguard Worker .n(n) 2687*4bdc9457SAndroid Build Coastguard Worker .k(k) 2688*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2689*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2690*4bdc9457SAndroid Build Coastguard Worker } 2691*4bdc9457SAndroid Build Coastguard Worker } 2692*4bdc9457SAndroid Build Coastguard Worker } 2693*4bdc9457SAndroid Build Coastguard Worker } 2694*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_gt_8)2695*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_gt_8) { 2696*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2697*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 2698*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2699*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2700*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2701*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2702*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2703*4bdc9457SAndroid Build Coastguard Worker .m(1) 2704*4bdc9457SAndroid Build Coastguard Worker .n(16) 2705*4bdc9457SAndroid Build Coastguard Worker .k(k) 2706*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2707*4bdc9457SAndroid Build Coastguard Worker } 2708*4bdc9457SAndroid Build Coastguard Worker } 2709*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_gt_8_strided_a)2710*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_gt_8_strided_a) { 2711*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2712*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 2713*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2714*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2715*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2716*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2717*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2718*4bdc9457SAndroid Build Coastguard Worker .m(1) 2719*4bdc9457SAndroid Build Coastguard Worker .n(16) 2720*4bdc9457SAndroid Build Coastguard Worker .k(k) 2721*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 2722*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2723*4bdc9457SAndroid Build Coastguard Worker } 2724*4bdc9457SAndroid Build Coastguard Worker } 2725*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_gt_8_subtile)2726*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_gt_8_subtile) { 2727*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2728*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 2729*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2730*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 2731*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2732*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2733*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2734*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2735*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2736*4bdc9457SAndroid Build Coastguard Worker .m(m) 2737*4bdc9457SAndroid Build Coastguard Worker .n(n) 2738*4bdc9457SAndroid Build Coastguard Worker .k(k) 2739*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2740*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2741*4bdc9457SAndroid Build Coastguard Worker } 2742*4bdc9457SAndroid Build Coastguard Worker } 2743*4bdc9457SAndroid Build Coastguard Worker } 2744*4bdc9457SAndroid Build Coastguard Worker } 2745*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_div_8)2746*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_div_8) { 2747*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2748*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 2749*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2750*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2751*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2752*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2753*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2754*4bdc9457SAndroid Build Coastguard Worker .m(1) 2755*4bdc9457SAndroid Build Coastguard Worker .n(16) 2756*4bdc9457SAndroid Build Coastguard Worker .k(k) 2757*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2758*4bdc9457SAndroid Build Coastguard Worker } 2759*4bdc9457SAndroid Build Coastguard Worker } 2760*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_div_8_strided_a)2761*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_div_8_strided_a) { 2762*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2763*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 2764*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2765*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2766*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2767*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2768*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2769*4bdc9457SAndroid Build Coastguard Worker .m(1) 2770*4bdc9457SAndroid Build Coastguard Worker .n(16) 2771*4bdc9457SAndroid Build Coastguard Worker .k(k) 2772*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 2773*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2774*4bdc9457SAndroid Build Coastguard Worker } 2775*4bdc9457SAndroid Build Coastguard Worker } 2776*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,k_div_8_subtile)2777*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, k_div_8_subtile) { 2778*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2779*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 2780*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2781*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 2782*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2783*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2784*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2785*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2786*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2787*4bdc9457SAndroid Build Coastguard Worker .m(m) 2788*4bdc9457SAndroid Build Coastguard Worker .n(n) 2789*4bdc9457SAndroid Build Coastguard Worker .k(k) 2790*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2791*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2792*4bdc9457SAndroid Build Coastguard Worker } 2793*4bdc9457SAndroid Build Coastguard Worker } 2794*4bdc9457SAndroid Build Coastguard Worker } 2795*4bdc9457SAndroid Build Coastguard Worker } 2796*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,n_gt_16)2797*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, n_gt_16) { 2798*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2799*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2800*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2801*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2802*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2803*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2804*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2805*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2806*4bdc9457SAndroid Build Coastguard Worker .m(1) 2807*4bdc9457SAndroid Build Coastguard Worker .n(n) 2808*4bdc9457SAndroid Build Coastguard Worker .k(k) 2809*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2810*4bdc9457SAndroid Build Coastguard Worker } 2811*4bdc9457SAndroid Build Coastguard Worker } 2812*4bdc9457SAndroid Build Coastguard Worker } 2813*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,n_gt_16_strided_cn)2814*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, n_gt_16_strided_cn) { 2815*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2816*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2817*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2818*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2819*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2820*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2821*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2822*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2823*4bdc9457SAndroid Build Coastguard Worker .m(1) 2824*4bdc9457SAndroid Build Coastguard Worker .n(n) 2825*4bdc9457SAndroid Build Coastguard Worker .k(k) 2826*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2827*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2828*4bdc9457SAndroid Build Coastguard Worker } 2829*4bdc9457SAndroid Build Coastguard Worker } 2830*4bdc9457SAndroid Build Coastguard Worker } 2831*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,n_gt_16_strided_a)2832*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, n_gt_16_strided_a) { 2833*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2834*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2835*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2836*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2837*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2838*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2839*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2840*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2841*4bdc9457SAndroid Build Coastguard Worker .m(1) 2842*4bdc9457SAndroid Build Coastguard Worker .n(n) 2843*4bdc9457SAndroid Build Coastguard Worker .k(k) 2844*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 2845*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2846*4bdc9457SAndroid Build Coastguard Worker } 2847*4bdc9457SAndroid Build Coastguard Worker } 2848*4bdc9457SAndroid Build Coastguard Worker } 2849*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,n_gt_16_subtile)2850*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, n_gt_16_subtile) { 2851*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2852*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2853*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2854*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 2855*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2856*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2857*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2858*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2859*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2860*4bdc9457SAndroid Build Coastguard Worker .m(m) 2861*4bdc9457SAndroid Build Coastguard Worker .n(n) 2862*4bdc9457SAndroid Build Coastguard Worker .k(k) 2863*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2864*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2865*4bdc9457SAndroid Build Coastguard Worker } 2866*4bdc9457SAndroid Build Coastguard Worker } 2867*4bdc9457SAndroid Build Coastguard Worker } 2868*4bdc9457SAndroid Build Coastguard Worker } 2869*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,n_div_16)2870*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, n_div_16) { 2871*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2872*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2873*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2874*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2875*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2876*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2877*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2878*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2879*4bdc9457SAndroid Build Coastguard Worker .m(1) 2880*4bdc9457SAndroid Build Coastguard Worker .n(n) 2881*4bdc9457SAndroid Build Coastguard Worker .k(k) 2882*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2883*4bdc9457SAndroid Build Coastguard Worker } 2884*4bdc9457SAndroid Build Coastguard Worker } 2885*4bdc9457SAndroid Build Coastguard Worker } 2886*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,n_div_16_strided_cn)2887*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, n_div_16_strided_cn) { 2888*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2889*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2890*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2891*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2892*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2893*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2894*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2895*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2896*4bdc9457SAndroid Build Coastguard Worker .m(1) 2897*4bdc9457SAndroid Build Coastguard Worker .n(n) 2898*4bdc9457SAndroid Build Coastguard Worker .k(k) 2899*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2900*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2901*4bdc9457SAndroid Build Coastguard Worker } 2902*4bdc9457SAndroid Build Coastguard Worker } 2903*4bdc9457SAndroid Build Coastguard Worker } 2904*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,n_div_16_strided_a)2905*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, n_div_16_strided_a) { 2906*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2907*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2908*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2909*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2910*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2911*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2912*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2913*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2914*4bdc9457SAndroid Build Coastguard Worker .m(1) 2915*4bdc9457SAndroid Build Coastguard Worker .n(n) 2916*4bdc9457SAndroid Build Coastguard Worker .k(k) 2917*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 2918*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2919*4bdc9457SAndroid Build Coastguard Worker } 2920*4bdc9457SAndroid Build Coastguard Worker } 2921*4bdc9457SAndroid Build Coastguard Worker } 2922*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,n_div_16_subtile)2923*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, n_div_16_subtile) { 2924*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2925*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2926*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2927*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 2928*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2929*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2930*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2931*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2932*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2933*4bdc9457SAndroid Build Coastguard Worker .m(m) 2934*4bdc9457SAndroid Build Coastguard Worker .n(n) 2935*4bdc9457SAndroid Build Coastguard Worker .k(k) 2936*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2937*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2938*4bdc9457SAndroid Build Coastguard Worker } 2939*4bdc9457SAndroid Build Coastguard Worker } 2940*4bdc9457SAndroid Build Coastguard Worker } 2941*4bdc9457SAndroid Build Coastguard Worker } 2942*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,strided_cm_subtile)2943*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, strided_cm_subtile) { 2944*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2945*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 2946*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2947*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 2948*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2949*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2950*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2951*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2952*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2953*4bdc9457SAndroid Build Coastguard Worker .m(m) 2954*4bdc9457SAndroid Build Coastguard Worker .n(n) 2955*4bdc9457SAndroid Build Coastguard Worker .k(k) 2956*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2957*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2958*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2959*4bdc9457SAndroid Build Coastguard Worker } 2960*4bdc9457SAndroid Build Coastguard Worker } 2961*4bdc9457SAndroid Build Coastguard Worker } 2962*4bdc9457SAndroid Build Coastguard Worker } 2963*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,qmin)2964*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, qmin) { 2965*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2966*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2967*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2968*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2969*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2970*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2971*4bdc9457SAndroid Build Coastguard Worker .m(1) 2972*4bdc9457SAndroid Build Coastguard Worker .n(16) 2973*4bdc9457SAndroid Build Coastguard Worker .k(8) 2974*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2975*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2976*4bdc9457SAndroid Build Coastguard Worker } 2977*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,qmax)2978*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, qmax) { 2979*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2980*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2981*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2982*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2983*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2984*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2985*4bdc9457SAndroid Build Coastguard Worker .m(1) 2986*4bdc9457SAndroid Build Coastguard Worker .n(16) 2987*4bdc9457SAndroid Build Coastguard Worker .k(8) 2988*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2989*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 2990*4bdc9457SAndroid Build Coastguard Worker } 2991*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,strided_cm)2992*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, strided_cm) { 2993*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 2994*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2995*4bdc9457SAndroid Build Coastguard Worker .mr(1) 2996*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2997*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2998*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2999*4bdc9457SAndroid Build Coastguard Worker .m(1) 3000*4bdc9457SAndroid Build Coastguard Worker .n(16) 3001*4bdc9457SAndroid Build Coastguard Worker .k(8) 3002*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 3003*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3004*4bdc9457SAndroid Build Coastguard Worker } 3005*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,no_a_zero_point)3006*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, no_a_zero_point) { 3007*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3008*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3009*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3010*4bdc9457SAndroid Build Coastguard Worker .mr(1) 3011*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3012*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3013*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3014*4bdc9457SAndroid Build Coastguard Worker .m(1) 3015*4bdc9457SAndroid Build Coastguard Worker .n(16) 3016*4bdc9457SAndroid Build Coastguard Worker .k(k) 3017*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 3018*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3019*4bdc9457SAndroid Build Coastguard Worker } 3020*4bdc9457SAndroid Build Coastguard Worker } 3021*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,no_b_zero_point)3022*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, no_b_zero_point) { 3023*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3024*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3025*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3026*4bdc9457SAndroid Build Coastguard Worker .mr(1) 3027*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3028*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3029*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3030*4bdc9457SAndroid Build Coastguard Worker .m(1) 3031*4bdc9457SAndroid Build Coastguard Worker .n(16) 3032*4bdc9457SAndroid Build Coastguard Worker .k(k) 3033*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 3034*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3035*4bdc9457SAndroid Build Coastguard Worker } 3036*4bdc9457SAndroid Build Coastguard Worker } 3037*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE,no_zero_point)3038*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16__NEON_MLAL_LANE, no_zero_point) { 3039*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3040*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3041*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3042*4bdc9457SAndroid Build Coastguard Worker .mr(1) 3043*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3044*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3045*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3046*4bdc9457SAndroid Build Coastguard Worker .m(1) 3047*4bdc9457SAndroid Build Coastguard Worker .n(16) 3048*4bdc9457SAndroid Build Coastguard Worker .k(k) 3049*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 3050*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 3051*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3052*4bdc9457SAndroid Build Coastguard Worker } 3053*4bdc9457SAndroid Build Coastguard Worker } 3054*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 3055*4bdc9457SAndroid Build Coastguard Worker 3056*4bdc9457SAndroid Build Coastguard Worker 3057*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_eq_8)3058*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_eq_8) { 3059*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3060*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3061*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3062*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3063*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3064*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3065*4bdc9457SAndroid Build Coastguard Worker .m(2) 3066*4bdc9457SAndroid Build Coastguard Worker .n(8) 3067*4bdc9457SAndroid Build Coastguard Worker .k(8) 3068*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3069*4bdc9457SAndroid Build Coastguard Worker } 3070*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,strided_cn)3071*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, strided_cn) { 3072*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3073*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3074*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3075*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3076*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3077*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3078*4bdc9457SAndroid Build Coastguard Worker .m(2) 3079*4bdc9457SAndroid Build Coastguard Worker .n(8) 3080*4bdc9457SAndroid Build Coastguard Worker .k(8) 3081*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 3082*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3083*4bdc9457SAndroid Build Coastguard Worker } 3084*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_eq_8_strided_a)3085*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_eq_8_strided_a) { 3086*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3087*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3088*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3089*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3090*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3091*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3092*4bdc9457SAndroid Build Coastguard Worker .m(2) 3093*4bdc9457SAndroid Build Coastguard Worker .n(8) 3094*4bdc9457SAndroid Build Coastguard Worker .k(8) 3095*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 3096*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3097*4bdc9457SAndroid Build Coastguard Worker } 3098*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_eq_8_subtile)3099*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_eq_8_subtile) { 3100*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3101*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 3102*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3103*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3104*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3105*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3106*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3107*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3108*4bdc9457SAndroid Build Coastguard Worker .m(m) 3109*4bdc9457SAndroid Build Coastguard Worker .n(n) 3110*4bdc9457SAndroid Build Coastguard Worker .k(8) 3111*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3112*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3113*4bdc9457SAndroid Build Coastguard Worker } 3114*4bdc9457SAndroid Build Coastguard Worker } 3115*4bdc9457SAndroid Build Coastguard Worker } 3116*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_eq_8_subtile_m)3117*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_eq_8_subtile_m) { 3118*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3119*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3120*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3121*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3122*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3123*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3124*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3125*4bdc9457SAndroid Build Coastguard Worker .m(m) 3126*4bdc9457SAndroid Build Coastguard Worker .n(8) 3127*4bdc9457SAndroid Build Coastguard Worker .k(8) 3128*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3129*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3130*4bdc9457SAndroid Build Coastguard Worker } 3131*4bdc9457SAndroid Build Coastguard Worker } 3132*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_eq_8_subtile_n)3133*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_eq_8_subtile_n) { 3134*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3135*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 3136*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3137*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3138*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3139*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3140*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3141*4bdc9457SAndroid Build Coastguard Worker .m(2) 3142*4bdc9457SAndroid Build Coastguard Worker .n(n) 3143*4bdc9457SAndroid Build Coastguard Worker .k(8) 3144*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3145*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3146*4bdc9457SAndroid Build Coastguard Worker } 3147*4bdc9457SAndroid Build Coastguard Worker } 3148*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_lt_8)3149*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_lt_8) { 3150*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3151*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 3152*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3153*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3154*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3155*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3156*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3157*4bdc9457SAndroid Build Coastguard Worker .m(2) 3158*4bdc9457SAndroid Build Coastguard Worker .n(8) 3159*4bdc9457SAndroid Build Coastguard Worker .k(k) 3160*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3161*4bdc9457SAndroid Build Coastguard Worker } 3162*4bdc9457SAndroid Build Coastguard Worker } 3163*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_lt_8_strided_a)3164*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_lt_8_strided_a) { 3165*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3166*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 3167*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3168*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3169*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3170*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3171*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3172*4bdc9457SAndroid Build Coastguard Worker .m(2) 3173*4bdc9457SAndroid Build Coastguard Worker .n(8) 3174*4bdc9457SAndroid Build Coastguard Worker .k(k) 3175*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 3176*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3177*4bdc9457SAndroid Build Coastguard Worker } 3178*4bdc9457SAndroid Build Coastguard Worker } 3179*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_lt_8_subtile)3180*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_lt_8_subtile) { 3181*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3182*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 3183*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 3184*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3185*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3186*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3187*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3188*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3189*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3190*4bdc9457SAndroid Build Coastguard Worker .m(m) 3191*4bdc9457SAndroid Build Coastguard Worker .n(n) 3192*4bdc9457SAndroid Build Coastguard Worker .k(k) 3193*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3194*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3195*4bdc9457SAndroid Build Coastguard Worker } 3196*4bdc9457SAndroid Build Coastguard Worker } 3197*4bdc9457SAndroid Build Coastguard Worker } 3198*4bdc9457SAndroid Build Coastguard Worker } 3199*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_gt_8)3200*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_gt_8) { 3201*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3202*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 3203*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3204*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3205*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3206*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3207*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3208*4bdc9457SAndroid Build Coastguard Worker .m(2) 3209*4bdc9457SAndroid Build Coastguard Worker .n(8) 3210*4bdc9457SAndroid Build Coastguard Worker .k(k) 3211*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3212*4bdc9457SAndroid Build Coastguard Worker } 3213*4bdc9457SAndroid Build Coastguard Worker } 3214*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_gt_8_strided_a)3215*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_gt_8_strided_a) { 3216*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3217*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 3218*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3219*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3220*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3221*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3222*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3223*4bdc9457SAndroid Build Coastguard Worker .m(2) 3224*4bdc9457SAndroid Build Coastguard Worker .n(8) 3225*4bdc9457SAndroid Build Coastguard Worker .k(k) 3226*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 3227*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3228*4bdc9457SAndroid Build Coastguard Worker } 3229*4bdc9457SAndroid Build Coastguard Worker } 3230*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_gt_8_subtile)3231*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_gt_8_subtile) { 3232*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3233*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 3234*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 3235*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3236*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3237*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3238*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3239*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3240*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3241*4bdc9457SAndroid Build Coastguard Worker .m(m) 3242*4bdc9457SAndroid Build Coastguard Worker .n(n) 3243*4bdc9457SAndroid Build Coastguard Worker .k(k) 3244*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3245*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3246*4bdc9457SAndroid Build Coastguard Worker } 3247*4bdc9457SAndroid Build Coastguard Worker } 3248*4bdc9457SAndroid Build Coastguard Worker } 3249*4bdc9457SAndroid Build Coastguard Worker } 3250*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_div_8)3251*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_div_8) { 3252*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3253*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 3254*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3255*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3256*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3257*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3258*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3259*4bdc9457SAndroid Build Coastguard Worker .m(2) 3260*4bdc9457SAndroid Build Coastguard Worker .n(8) 3261*4bdc9457SAndroid Build Coastguard Worker .k(k) 3262*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3263*4bdc9457SAndroid Build Coastguard Worker } 3264*4bdc9457SAndroid Build Coastguard Worker } 3265*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_div_8_strided_a)3266*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_div_8_strided_a) { 3267*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3268*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 3269*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3270*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3271*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3272*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3273*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3274*4bdc9457SAndroid Build Coastguard Worker .m(2) 3275*4bdc9457SAndroid Build Coastguard Worker .n(8) 3276*4bdc9457SAndroid Build Coastguard Worker .k(k) 3277*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 3278*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3279*4bdc9457SAndroid Build Coastguard Worker } 3280*4bdc9457SAndroid Build Coastguard Worker } 3281*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,k_div_8_subtile)3282*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, k_div_8_subtile) { 3283*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3284*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 3285*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 3286*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3287*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3288*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3289*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3290*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3291*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3292*4bdc9457SAndroid Build Coastguard Worker .m(m) 3293*4bdc9457SAndroid Build Coastguard Worker .n(n) 3294*4bdc9457SAndroid Build Coastguard Worker .k(k) 3295*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3296*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3297*4bdc9457SAndroid Build Coastguard Worker } 3298*4bdc9457SAndroid Build Coastguard Worker } 3299*4bdc9457SAndroid Build Coastguard Worker } 3300*4bdc9457SAndroid Build Coastguard Worker } 3301*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,n_gt_8)3302*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, n_gt_8) { 3303*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3304*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 3305*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3306*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3307*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3308*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3309*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3310*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3311*4bdc9457SAndroid Build Coastguard Worker .m(2) 3312*4bdc9457SAndroid Build Coastguard Worker .n(n) 3313*4bdc9457SAndroid Build Coastguard Worker .k(k) 3314*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3315*4bdc9457SAndroid Build Coastguard Worker } 3316*4bdc9457SAndroid Build Coastguard Worker } 3317*4bdc9457SAndroid Build Coastguard Worker } 3318*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,n_gt_8_strided_cn)3319*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, n_gt_8_strided_cn) { 3320*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3321*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 3322*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3323*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3324*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3325*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3326*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3327*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3328*4bdc9457SAndroid Build Coastguard Worker .m(2) 3329*4bdc9457SAndroid Build Coastguard Worker .n(n) 3330*4bdc9457SAndroid Build Coastguard Worker .k(k) 3331*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 3332*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3333*4bdc9457SAndroid Build Coastguard Worker } 3334*4bdc9457SAndroid Build Coastguard Worker } 3335*4bdc9457SAndroid Build Coastguard Worker } 3336*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,n_gt_8_strided_a)3337*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, n_gt_8_strided_a) { 3338*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3339*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 3340*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3341*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3342*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3343*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3344*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3345*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3346*4bdc9457SAndroid Build Coastguard Worker .m(2) 3347*4bdc9457SAndroid Build Coastguard Worker .n(n) 3348*4bdc9457SAndroid Build Coastguard Worker .k(k) 3349*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 3350*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3351*4bdc9457SAndroid Build Coastguard Worker } 3352*4bdc9457SAndroid Build Coastguard Worker } 3353*4bdc9457SAndroid Build Coastguard Worker } 3354*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,n_gt_8_subtile)3355*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, n_gt_8_subtile) { 3356*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3357*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 3358*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3359*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3360*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3361*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3362*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3363*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3364*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3365*4bdc9457SAndroid Build Coastguard Worker .m(m) 3366*4bdc9457SAndroid Build Coastguard Worker .n(n) 3367*4bdc9457SAndroid Build Coastguard Worker .k(k) 3368*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3369*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3370*4bdc9457SAndroid Build Coastguard Worker } 3371*4bdc9457SAndroid Build Coastguard Worker } 3372*4bdc9457SAndroid Build Coastguard Worker } 3373*4bdc9457SAndroid Build Coastguard Worker } 3374*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,n_div_8)3375*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, n_div_8) { 3376*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3377*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 3378*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3379*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3380*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3381*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3382*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3383*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3384*4bdc9457SAndroid Build Coastguard Worker .m(2) 3385*4bdc9457SAndroid Build Coastguard Worker .n(n) 3386*4bdc9457SAndroid Build Coastguard Worker .k(k) 3387*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3388*4bdc9457SAndroid Build Coastguard Worker } 3389*4bdc9457SAndroid Build Coastguard Worker } 3390*4bdc9457SAndroid Build Coastguard Worker } 3391*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,n_div_8_strided_cn)3392*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, n_div_8_strided_cn) { 3393*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3394*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 3395*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3396*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3397*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3398*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3399*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3400*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3401*4bdc9457SAndroid Build Coastguard Worker .m(2) 3402*4bdc9457SAndroid Build Coastguard Worker .n(n) 3403*4bdc9457SAndroid Build Coastguard Worker .k(k) 3404*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 3405*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3406*4bdc9457SAndroid Build Coastguard Worker } 3407*4bdc9457SAndroid Build Coastguard Worker } 3408*4bdc9457SAndroid Build Coastguard Worker } 3409*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,n_div_8_strided_a)3410*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, n_div_8_strided_a) { 3411*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3412*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 3413*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3414*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3415*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3416*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3417*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3418*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3419*4bdc9457SAndroid Build Coastguard Worker .m(2) 3420*4bdc9457SAndroid Build Coastguard Worker .n(n) 3421*4bdc9457SAndroid Build Coastguard Worker .k(k) 3422*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 3423*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3424*4bdc9457SAndroid Build Coastguard Worker } 3425*4bdc9457SAndroid Build Coastguard Worker } 3426*4bdc9457SAndroid Build Coastguard Worker } 3427*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,n_div_8_subtile)3428*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, n_div_8_subtile) { 3429*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3430*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 3431*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3432*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3433*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3434*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3435*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3436*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3437*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3438*4bdc9457SAndroid Build Coastguard Worker .m(m) 3439*4bdc9457SAndroid Build Coastguard Worker .n(n) 3440*4bdc9457SAndroid Build Coastguard Worker .k(k) 3441*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3442*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3443*4bdc9457SAndroid Build Coastguard Worker } 3444*4bdc9457SAndroid Build Coastguard Worker } 3445*4bdc9457SAndroid Build Coastguard Worker } 3446*4bdc9457SAndroid Build Coastguard Worker } 3447*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,strided_cm_subtile)3448*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, strided_cm_subtile) { 3449*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3450*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3451*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 3452*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3453*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3454*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3455*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3456*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3457*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3458*4bdc9457SAndroid Build Coastguard Worker .m(m) 3459*4bdc9457SAndroid Build Coastguard Worker .n(n) 3460*4bdc9457SAndroid Build Coastguard Worker .k(k) 3461*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 3462*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3463*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3464*4bdc9457SAndroid Build Coastguard Worker } 3465*4bdc9457SAndroid Build Coastguard Worker } 3466*4bdc9457SAndroid Build Coastguard Worker } 3467*4bdc9457SAndroid Build Coastguard Worker } 3468*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,qmin)3469*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, qmin) { 3470*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3471*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3472*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3473*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3474*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3475*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3476*4bdc9457SAndroid Build Coastguard Worker .m(2) 3477*4bdc9457SAndroid Build Coastguard Worker .n(8) 3478*4bdc9457SAndroid Build Coastguard Worker .k(8) 3479*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3480*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3481*4bdc9457SAndroid Build Coastguard Worker } 3482*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,qmax)3483*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, qmax) { 3484*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3485*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3486*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3487*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3488*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3489*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3490*4bdc9457SAndroid Build Coastguard Worker .m(2) 3491*4bdc9457SAndroid Build Coastguard Worker .n(8) 3492*4bdc9457SAndroid Build Coastguard Worker .k(8) 3493*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3494*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3495*4bdc9457SAndroid Build Coastguard Worker } 3496*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,strided_cm)3497*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, strided_cm) { 3498*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3499*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3500*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3501*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3502*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3503*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3504*4bdc9457SAndroid Build Coastguard Worker .m(2) 3505*4bdc9457SAndroid Build Coastguard Worker .n(8) 3506*4bdc9457SAndroid Build Coastguard Worker .k(8) 3507*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 3508*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3509*4bdc9457SAndroid Build Coastguard Worker } 3510*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,no_a_zero_point)3511*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, no_a_zero_point) { 3512*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3513*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3514*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3515*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3516*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3517*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3518*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3519*4bdc9457SAndroid Build Coastguard Worker .m(2) 3520*4bdc9457SAndroid Build Coastguard Worker .n(8) 3521*4bdc9457SAndroid Build Coastguard Worker .k(k) 3522*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 3523*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3524*4bdc9457SAndroid Build Coastguard Worker } 3525*4bdc9457SAndroid Build Coastguard Worker } 3526*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,no_b_zero_point)3527*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, no_b_zero_point) { 3528*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3529*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3530*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3531*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3532*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3533*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3534*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3535*4bdc9457SAndroid Build Coastguard Worker .m(2) 3536*4bdc9457SAndroid Build Coastguard Worker .n(8) 3537*4bdc9457SAndroid Build Coastguard Worker .k(k) 3538*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 3539*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3540*4bdc9457SAndroid Build Coastguard Worker } 3541*4bdc9457SAndroid Build Coastguard Worker } 3542*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE,no_zero_point)3543*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8__NEON_MLAL_LANE, no_zero_point) { 3544*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3545*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3546*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3547*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3548*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3549*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3550*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3551*4bdc9457SAndroid Build Coastguard Worker .m(2) 3552*4bdc9457SAndroid Build Coastguard Worker .n(8) 3553*4bdc9457SAndroid Build Coastguard Worker .k(k) 3554*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 3555*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 3556*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3557*4bdc9457SAndroid Build Coastguard Worker } 3558*4bdc9457SAndroid Build Coastguard Worker } 3559*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 3560*4bdc9457SAndroid Build Coastguard Worker 3561*4bdc9457SAndroid Build Coastguard Worker 3562*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_eq_8)3563*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_eq_8) { 3564*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3565*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3566*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3567*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3568*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3569*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3570*4bdc9457SAndroid Build Coastguard Worker .m(2) 3571*4bdc9457SAndroid Build Coastguard Worker .n(16) 3572*4bdc9457SAndroid Build Coastguard Worker .k(8) 3573*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3574*4bdc9457SAndroid Build Coastguard Worker } 3575*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,strided_cn)3576*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, strided_cn) { 3577*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3578*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3579*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3580*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3581*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3582*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3583*4bdc9457SAndroid Build Coastguard Worker .m(2) 3584*4bdc9457SAndroid Build Coastguard Worker .n(16) 3585*4bdc9457SAndroid Build Coastguard Worker .k(8) 3586*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3587*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3588*4bdc9457SAndroid Build Coastguard Worker } 3589*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_eq_8_strided_a)3590*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_eq_8_strided_a) { 3591*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3592*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3593*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3594*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3595*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3596*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3597*4bdc9457SAndroid Build Coastguard Worker .m(2) 3598*4bdc9457SAndroid Build Coastguard Worker .n(16) 3599*4bdc9457SAndroid Build Coastguard Worker .k(8) 3600*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 3601*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3602*4bdc9457SAndroid Build Coastguard Worker } 3603*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_eq_8_subtile)3604*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_eq_8_subtile) { 3605*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3606*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3607*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3608*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3609*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3610*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3611*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3612*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3613*4bdc9457SAndroid Build Coastguard Worker .m(m) 3614*4bdc9457SAndroid Build Coastguard Worker .n(n) 3615*4bdc9457SAndroid Build Coastguard Worker .k(8) 3616*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3617*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3618*4bdc9457SAndroid Build Coastguard Worker } 3619*4bdc9457SAndroid Build Coastguard Worker } 3620*4bdc9457SAndroid Build Coastguard Worker } 3621*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_eq_8_subtile_m)3622*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_eq_8_subtile_m) { 3623*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3624*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3625*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3626*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3627*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3628*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3629*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3630*4bdc9457SAndroid Build Coastguard Worker .m(m) 3631*4bdc9457SAndroid Build Coastguard Worker .n(16) 3632*4bdc9457SAndroid Build Coastguard Worker .k(8) 3633*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3634*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3635*4bdc9457SAndroid Build Coastguard Worker } 3636*4bdc9457SAndroid Build Coastguard Worker } 3637*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_eq_8_subtile_n)3638*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_eq_8_subtile_n) { 3639*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3640*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3641*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3642*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3643*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3644*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3645*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3646*4bdc9457SAndroid Build Coastguard Worker .m(2) 3647*4bdc9457SAndroid Build Coastguard Worker .n(n) 3648*4bdc9457SAndroid Build Coastguard Worker .k(8) 3649*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3650*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3651*4bdc9457SAndroid Build Coastguard Worker } 3652*4bdc9457SAndroid Build Coastguard Worker } 3653*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_lt_8)3654*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_lt_8) { 3655*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3656*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 3657*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3658*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3659*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3660*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3661*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3662*4bdc9457SAndroid Build Coastguard Worker .m(2) 3663*4bdc9457SAndroid Build Coastguard Worker .n(16) 3664*4bdc9457SAndroid Build Coastguard Worker .k(k) 3665*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3666*4bdc9457SAndroid Build Coastguard Worker } 3667*4bdc9457SAndroid Build Coastguard Worker } 3668*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_lt_8_strided_a)3669*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_lt_8_strided_a) { 3670*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3671*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 3672*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3673*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3674*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3675*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3676*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3677*4bdc9457SAndroid Build Coastguard Worker .m(2) 3678*4bdc9457SAndroid Build Coastguard Worker .n(16) 3679*4bdc9457SAndroid Build Coastguard Worker .k(k) 3680*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 3681*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3682*4bdc9457SAndroid Build Coastguard Worker } 3683*4bdc9457SAndroid Build Coastguard Worker } 3684*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_lt_8_subtile)3685*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_lt_8_subtile) { 3686*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3687*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 3688*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3689*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3690*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3691*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3692*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3693*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3694*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3695*4bdc9457SAndroid Build Coastguard Worker .m(m) 3696*4bdc9457SAndroid Build Coastguard Worker .n(n) 3697*4bdc9457SAndroid Build Coastguard Worker .k(k) 3698*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3699*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3700*4bdc9457SAndroid Build Coastguard Worker } 3701*4bdc9457SAndroid Build Coastguard Worker } 3702*4bdc9457SAndroid Build Coastguard Worker } 3703*4bdc9457SAndroid Build Coastguard Worker } 3704*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_gt_8)3705*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_gt_8) { 3706*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3707*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 3708*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3709*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3710*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3711*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3712*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3713*4bdc9457SAndroid Build Coastguard Worker .m(2) 3714*4bdc9457SAndroid Build Coastguard Worker .n(16) 3715*4bdc9457SAndroid Build Coastguard Worker .k(k) 3716*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3717*4bdc9457SAndroid Build Coastguard Worker } 3718*4bdc9457SAndroid Build Coastguard Worker } 3719*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_gt_8_strided_a)3720*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_gt_8_strided_a) { 3721*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3722*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 3723*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3724*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3725*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3726*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3727*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3728*4bdc9457SAndroid Build Coastguard Worker .m(2) 3729*4bdc9457SAndroid Build Coastguard Worker .n(16) 3730*4bdc9457SAndroid Build Coastguard Worker .k(k) 3731*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 3732*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3733*4bdc9457SAndroid Build Coastguard Worker } 3734*4bdc9457SAndroid Build Coastguard Worker } 3735*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_gt_8_subtile)3736*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_gt_8_subtile) { 3737*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3738*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 3739*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3740*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3741*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3742*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3743*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3744*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3745*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3746*4bdc9457SAndroid Build Coastguard Worker .m(m) 3747*4bdc9457SAndroid Build Coastguard Worker .n(n) 3748*4bdc9457SAndroid Build Coastguard Worker .k(k) 3749*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3750*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3751*4bdc9457SAndroid Build Coastguard Worker } 3752*4bdc9457SAndroid Build Coastguard Worker } 3753*4bdc9457SAndroid Build Coastguard Worker } 3754*4bdc9457SAndroid Build Coastguard Worker } 3755*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_div_8)3756*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_div_8) { 3757*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3758*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 3759*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3760*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3761*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3762*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3763*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3764*4bdc9457SAndroid Build Coastguard Worker .m(2) 3765*4bdc9457SAndroid Build Coastguard Worker .n(16) 3766*4bdc9457SAndroid Build Coastguard Worker .k(k) 3767*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3768*4bdc9457SAndroid Build Coastguard Worker } 3769*4bdc9457SAndroid Build Coastguard Worker } 3770*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_div_8_strided_a)3771*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_div_8_strided_a) { 3772*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3773*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 3774*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3775*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3776*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3777*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3778*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3779*4bdc9457SAndroid Build Coastguard Worker .m(2) 3780*4bdc9457SAndroid Build Coastguard Worker .n(16) 3781*4bdc9457SAndroid Build Coastguard Worker .k(k) 3782*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 3783*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3784*4bdc9457SAndroid Build Coastguard Worker } 3785*4bdc9457SAndroid Build Coastguard Worker } 3786*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,k_div_8_subtile)3787*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, k_div_8_subtile) { 3788*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3789*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 3790*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3791*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3792*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3793*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3794*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3795*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3796*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3797*4bdc9457SAndroid Build Coastguard Worker .m(m) 3798*4bdc9457SAndroid Build Coastguard Worker .n(n) 3799*4bdc9457SAndroid Build Coastguard Worker .k(k) 3800*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3801*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3802*4bdc9457SAndroid Build Coastguard Worker } 3803*4bdc9457SAndroid Build Coastguard Worker } 3804*4bdc9457SAndroid Build Coastguard Worker } 3805*4bdc9457SAndroid Build Coastguard Worker } 3806*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,n_gt_16)3807*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, n_gt_16) { 3808*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3809*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3810*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3811*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3812*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3813*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3814*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3815*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3816*4bdc9457SAndroid Build Coastguard Worker .m(2) 3817*4bdc9457SAndroid Build Coastguard Worker .n(n) 3818*4bdc9457SAndroid Build Coastguard Worker .k(k) 3819*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3820*4bdc9457SAndroid Build Coastguard Worker } 3821*4bdc9457SAndroid Build Coastguard Worker } 3822*4bdc9457SAndroid Build Coastguard Worker } 3823*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,n_gt_16_strided_cn)3824*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, n_gt_16_strided_cn) { 3825*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3826*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3827*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3828*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3829*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3830*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3831*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3832*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3833*4bdc9457SAndroid Build Coastguard Worker .m(2) 3834*4bdc9457SAndroid Build Coastguard Worker .n(n) 3835*4bdc9457SAndroid Build Coastguard Worker .k(k) 3836*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3837*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3838*4bdc9457SAndroid Build Coastguard Worker } 3839*4bdc9457SAndroid Build Coastguard Worker } 3840*4bdc9457SAndroid Build Coastguard Worker } 3841*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,n_gt_16_strided_a)3842*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, n_gt_16_strided_a) { 3843*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3844*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3845*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3846*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3847*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3848*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3849*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3850*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3851*4bdc9457SAndroid Build Coastguard Worker .m(2) 3852*4bdc9457SAndroid Build Coastguard Worker .n(n) 3853*4bdc9457SAndroid Build Coastguard Worker .k(k) 3854*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 3855*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3856*4bdc9457SAndroid Build Coastguard Worker } 3857*4bdc9457SAndroid Build Coastguard Worker } 3858*4bdc9457SAndroid Build Coastguard Worker } 3859*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,n_gt_16_subtile)3860*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, n_gt_16_subtile) { 3861*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3862*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3863*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3864*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3865*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3866*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3867*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3868*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3869*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3870*4bdc9457SAndroid Build Coastguard Worker .m(m) 3871*4bdc9457SAndroid Build Coastguard Worker .n(n) 3872*4bdc9457SAndroid Build Coastguard Worker .k(k) 3873*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3874*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3875*4bdc9457SAndroid Build Coastguard Worker } 3876*4bdc9457SAndroid Build Coastguard Worker } 3877*4bdc9457SAndroid Build Coastguard Worker } 3878*4bdc9457SAndroid Build Coastguard Worker } 3879*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,n_div_16)3880*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, n_div_16) { 3881*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3882*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3883*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3884*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3885*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3886*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3887*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3888*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3889*4bdc9457SAndroid Build Coastguard Worker .m(2) 3890*4bdc9457SAndroid Build Coastguard Worker .n(n) 3891*4bdc9457SAndroid Build Coastguard Worker .k(k) 3892*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3893*4bdc9457SAndroid Build Coastguard Worker } 3894*4bdc9457SAndroid Build Coastguard Worker } 3895*4bdc9457SAndroid Build Coastguard Worker } 3896*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,n_div_16_strided_cn)3897*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, n_div_16_strided_cn) { 3898*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3899*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3900*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3901*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3902*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3903*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3904*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3905*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3906*4bdc9457SAndroid Build Coastguard Worker .m(2) 3907*4bdc9457SAndroid Build Coastguard Worker .n(n) 3908*4bdc9457SAndroid Build Coastguard Worker .k(k) 3909*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3910*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3911*4bdc9457SAndroid Build Coastguard Worker } 3912*4bdc9457SAndroid Build Coastguard Worker } 3913*4bdc9457SAndroid Build Coastguard Worker } 3914*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,n_div_16_strided_a)3915*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, n_div_16_strided_a) { 3916*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3917*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3918*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3919*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3920*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3921*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3922*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3923*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3924*4bdc9457SAndroid Build Coastguard Worker .m(2) 3925*4bdc9457SAndroid Build Coastguard Worker .n(n) 3926*4bdc9457SAndroid Build Coastguard Worker .k(k) 3927*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 3928*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3929*4bdc9457SAndroid Build Coastguard Worker } 3930*4bdc9457SAndroid Build Coastguard Worker } 3931*4bdc9457SAndroid Build Coastguard Worker } 3932*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,n_div_16_subtile)3933*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, n_div_16_subtile) { 3934*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3935*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3936*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3937*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3938*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3939*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3940*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3941*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3942*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3943*4bdc9457SAndroid Build Coastguard Worker .m(m) 3944*4bdc9457SAndroid Build Coastguard Worker .n(n) 3945*4bdc9457SAndroid Build Coastguard Worker .k(k) 3946*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3947*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3948*4bdc9457SAndroid Build Coastguard Worker } 3949*4bdc9457SAndroid Build Coastguard Worker } 3950*4bdc9457SAndroid Build Coastguard Worker } 3951*4bdc9457SAndroid Build Coastguard Worker } 3952*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,strided_cm_subtile)3953*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, strided_cm_subtile) { 3954*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3955*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 3956*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3957*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 3958*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3959*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3960*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3961*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3962*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3963*4bdc9457SAndroid Build Coastguard Worker .m(m) 3964*4bdc9457SAndroid Build Coastguard Worker .n(n) 3965*4bdc9457SAndroid Build Coastguard Worker .k(k) 3966*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 3967*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3968*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3969*4bdc9457SAndroid Build Coastguard Worker } 3970*4bdc9457SAndroid Build Coastguard Worker } 3971*4bdc9457SAndroid Build Coastguard Worker } 3972*4bdc9457SAndroid Build Coastguard Worker } 3973*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,qmin)3974*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, qmin) { 3975*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3976*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3977*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3978*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3979*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3980*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3981*4bdc9457SAndroid Build Coastguard Worker .m(2) 3982*4bdc9457SAndroid Build Coastguard Worker .n(16) 3983*4bdc9457SAndroid Build Coastguard Worker .k(8) 3984*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3985*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 3986*4bdc9457SAndroid Build Coastguard Worker } 3987*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,qmax)3988*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, qmax) { 3989*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 3990*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3991*4bdc9457SAndroid Build Coastguard Worker .mr(2) 3992*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3993*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3994*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3995*4bdc9457SAndroid Build Coastguard Worker .m(2) 3996*4bdc9457SAndroid Build Coastguard Worker .n(16) 3997*4bdc9457SAndroid Build Coastguard Worker .k(8) 3998*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3999*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4000*4bdc9457SAndroid Build Coastguard Worker } 4001*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,strided_cm)4002*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, strided_cm) { 4003*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4004*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4005*4bdc9457SAndroid Build Coastguard Worker .mr(2) 4006*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4007*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4008*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4009*4bdc9457SAndroid Build Coastguard Worker .m(2) 4010*4bdc9457SAndroid Build Coastguard Worker .n(16) 4011*4bdc9457SAndroid Build Coastguard Worker .k(8) 4012*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4013*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4014*4bdc9457SAndroid Build Coastguard Worker } 4015*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,no_a_zero_point)4016*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, no_a_zero_point) { 4017*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4018*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4019*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4020*4bdc9457SAndroid Build Coastguard Worker .mr(2) 4021*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4022*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4023*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4024*4bdc9457SAndroid Build Coastguard Worker .m(2) 4025*4bdc9457SAndroid Build Coastguard Worker .n(16) 4026*4bdc9457SAndroid Build Coastguard Worker .k(k) 4027*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 4028*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4029*4bdc9457SAndroid Build Coastguard Worker } 4030*4bdc9457SAndroid Build Coastguard Worker } 4031*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,no_b_zero_point)4032*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, no_b_zero_point) { 4033*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4034*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4035*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4036*4bdc9457SAndroid Build Coastguard Worker .mr(2) 4037*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4038*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4039*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4040*4bdc9457SAndroid Build Coastguard Worker .m(2) 4041*4bdc9457SAndroid Build Coastguard Worker .n(16) 4042*4bdc9457SAndroid Build Coastguard Worker .k(k) 4043*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 4044*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4045*4bdc9457SAndroid Build Coastguard Worker } 4046*4bdc9457SAndroid Build Coastguard Worker } 4047*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE,no_zero_point)4048*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X16__NEON_MLAL_LANE, no_zero_point) { 4049*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4050*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4051*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4052*4bdc9457SAndroid Build Coastguard Worker .mr(2) 4053*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4054*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4055*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4056*4bdc9457SAndroid Build Coastguard Worker .m(2) 4057*4bdc9457SAndroid Build Coastguard Worker .n(16) 4058*4bdc9457SAndroid Build Coastguard Worker .k(k) 4059*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 4060*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 4061*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4062*4bdc9457SAndroid Build Coastguard Worker } 4063*4bdc9457SAndroid Build Coastguard Worker } 4064*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 4065*4bdc9457SAndroid Build Coastguard Worker 4066*4bdc9457SAndroid Build Coastguard Worker 4067*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_eq_8)4068*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_eq_8) { 4069*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4070*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4071*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4072*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4073*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4074*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4075*4bdc9457SAndroid Build Coastguard Worker .m(3) 4076*4bdc9457SAndroid Build Coastguard Worker .n(8) 4077*4bdc9457SAndroid Build Coastguard Worker .k(8) 4078*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4079*4bdc9457SAndroid Build Coastguard Worker } 4080*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,strided_cn)4081*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, strided_cn) { 4082*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4083*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4084*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4085*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4086*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4087*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4088*4bdc9457SAndroid Build Coastguard Worker .m(3) 4089*4bdc9457SAndroid Build Coastguard Worker .n(8) 4090*4bdc9457SAndroid Build Coastguard Worker .k(8) 4091*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 4092*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4093*4bdc9457SAndroid Build Coastguard Worker } 4094*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_eq_8_strided_a)4095*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_eq_8_strided_a) { 4096*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4097*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4098*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4099*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4100*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4101*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4102*4bdc9457SAndroid Build Coastguard Worker .m(3) 4103*4bdc9457SAndroid Build Coastguard Worker .n(8) 4104*4bdc9457SAndroid Build Coastguard Worker .k(8) 4105*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 4106*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4107*4bdc9457SAndroid Build Coastguard Worker } 4108*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_eq_8_subtile)4109*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_eq_8_subtile) { 4110*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4111*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4112*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4113*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4114*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4115*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4116*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4117*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4118*4bdc9457SAndroid Build Coastguard Worker .m(m) 4119*4bdc9457SAndroid Build Coastguard Worker .n(n) 4120*4bdc9457SAndroid Build Coastguard Worker .k(8) 4121*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4123*4bdc9457SAndroid Build Coastguard Worker } 4124*4bdc9457SAndroid Build Coastguard Worker } 4125*4bdc9457SAndroid Build Coastguard Worker } 4126*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_eq_8_subtile_m)4127*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_eq_8_subtile_m) { 4128*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4129*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4130*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4131*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4132*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4133*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4134*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4135*4bdc9457SAndroid Build Coastguard Worker .m(m) 4136*4bdc9457SAndroid Build Coastguard Worker .n(8) 4137*4bdc9457SAndroid Build Coastguard Worker .k(8) 4138*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4139*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4140*4bdc9457SAndroid Build Coastguard Worker } 4141*4bdc9457SAndroid Build Coastguard Worker } 4142*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_eq_8_subtile_n)4143*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_eq_8_subtile_n) { 4144*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4145*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4146*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4147*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4148*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4149*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4150*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4151*4bdc9457SAndroid Build Coastguard Worker .m(3) 4152*4bdc9457SAndroid Build Coastguard Worker .n(n) 4153*4bdc9457SAndroid Build Coastguard Worker .k(8) 4154*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4155*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4156*4bdc9457SAndroid Build Coastguard Worker } 4157*4bdc9457SAndroid Build Coastguard Worker } 4158*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_lt_8)4159*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_lt_8) { 4160*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4161*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 4162*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4163*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4164*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4165*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4166*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4167*4bdc9457SAndroid Build Coastguard Worker .m(3) 4168*4bdc9457SAndroid Build Coastguard Worker .n(8) 4169*4bdc9457SAndroid Build Coastguard Worker .k(k) 4170*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4171*4bdc9457SAndroid Build Coastguard Worker } 4172*4bdc9457SAndroid Build Coastguard Worker } 4173*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_lt_8_strided_a)4174*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_lt_8_strided_a) { 4175*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4176*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 4177*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4178*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4179*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4180*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4181*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4182*4bdc9457SAndroid Build Coastguard Worker .m(3) 4183*4bdc9457SAndroid Build Coastguard Worker .n(8) 4184*4bdc9457SAndroid Build Coastguard Worker .k(k) 4185*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 4186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4187*4bdc9457SAndroid Build Coastguard Worker } 4188*4bdc9457SAndroid Build Coastguard Worker } 4189*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_lt_8_subtile)4190*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_lt_8_subtile) { 4191*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4192*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 4193*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4194*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4195*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4196*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4197*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4198*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4199*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4200*4bdc9457SAndroid Build Coastguard Worker .m(m) 4201*4bdc9457SAndroid Build Coastguard Worker .n(n) 4202*4bdc9457SAndroid Build Coastguard Worker .k(k) 4203*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4204*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4205*4bdc9457SAndroid Build Coastguard Worker } 4206*4bdc9457SAndroid Build Coastguard Worker } 4207*4bdc9457SAndroid Build Coastguard Worker } 4208*4bdc9457SAndroid Build Coastguard Worker } 4209*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_gt_8)4210*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_gt_8) { 4211*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4212*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 4213*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4214*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4215*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4216*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4217*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4218*4bdc9457SAndroid Build Coastguard Worker .m(3) 4219*4bdc9457SAndroid Build Coastguard Worker .n(8) 4220*4bdc9457SAndroid Build Coastguard Worker .k(k) 4221*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4222*4bdc9457SAndroid Build Coastguard Worker } 4223*4bdc9457SAndroid Build Coastguard Worker } 4224*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_gt_8_strided_a)4225*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_gt_8_strided_a) { 4226*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4227*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 4228*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4229*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4230*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4231*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4232*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4233*4bdc9457SAndroid Build Coastguard Worker .m(3) 4234*4bdc9457SAndroid Build Coastguard Worker .n(8) 4235*4bdc9457SAndroid Build Coastguard Worker .k(k) 4236*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 4237*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4238*4bdc9457SAndroid Build Coastguard Worker } 4239*4bdc9457SAndroid Build Coastguard Worker } 4240*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_gt_8_subtile)4241*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_gt_8_subtile) { 4242*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4243*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 4244*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4245*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4246*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4247*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4248*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4249*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4250*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4251*4bdc9457SAndroid Build Coastguard Worker .m(m) 4252*4bdc9457SAndroid Build Coastguard Worker .n(n) 4253*4bdc9457SAndroid Build Coastguard Worker .k(k) 4254*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4255*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4256*4bdc9457SAndroid Build Coastguard Worker } 4257*4bdc9457SAndroid Build Coastguard Worker } 4258*4bdc9457SAndroid Build Coastguard Worker } 4259*4bdc9457SAndroid Build Coastguard Worker } 4260*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_div_8)4261*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_div_8) { 4262*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4263*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 4264*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4265*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4266*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4267*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4268*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4269*4bdc9457SAndroid Build Coastguard Worker .m(3) 4270*4bdc9457SAndroid Build Coastguard Worker .n(8) 4271*4bdc9457SAndroid Build Coastguard Worker .k(k) 4272*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4273*4bdc9457SAndroid Build Coastguard Worker } 4274*4bdc9457SAndroid Build Coastguard Worker } 4275*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_div_8_strided_a)4276*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_div_8_strided_a) { 4277*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4278*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 4279*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4280*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4281*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4282*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4283*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4284*4bdc9457SAndroid Build Coastguard Worker .m(3) 4285*4bdc9457SAndroid Build Coastguard Worker .n(8) 4286*4bdc9457SAndroid Build Coastguard Worker .k(k) 4287*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 4288*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4289*4bdc9457SAndroid Build Coastguard Worker } 4290*4bdc9457SAndroid Build Coastguard Worker } 4291*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,k_div_8_subtile)4292*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, k_div_8_subtile) { 4293*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4294*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 4295*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4296*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4297*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4298*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4299*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4300*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4301*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4302*4bdc9457SAndroid Build Coastguard Worker .m(m) 4303*4bdc9457SAndroid Build Coastguard Worker .n(n) 4304*4bdc9457SAndroid Build Coastguard Worker .k(k) 4305*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4306*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4307*4bdc9457SAndroid Build Coastguard Worker } 4308*4bdc9457SAndroid Build Coastguard Worker } 4309*4bdc9457SAndroid Build Coastguard Worker } 4310*4bdc9457SAndroid Build Coastguard Worker } 4311*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,n_gt_8)4312*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, n_gt_8) { 4313*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4314*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 4315*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4316*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4317*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4318*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4319*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4320*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4321*4bdc9457SAndroid Build Coastguard Worker .m(3) 4322*4bdc9457SAndroid Build Coastguard Worker .n(n) 4323*4bdc9457SAndroid Build Coastguard Worker .k(k) 4324*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4325*4bdc9457SAndroid Build Coastguard Worker } 4326*4bdc9457SAndroid Build Coastguard Worker } 4327*4bdc9457SAndroid Build Coastguard Worker } 4328*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,n_gt_8_strided_cn)4329*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, n_gt_8_strided_cn) { 4330*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4331*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 4332*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4333*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4334*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4335*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4336*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4337*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4338*4bdc9457SAndroid Build Coastguard Worker .m(3) 4339*4bdc9457SAndroid Build Coastguard Worker .n(n) 4340*4bdc9457SAndroid Build Coastguard Worker .k(k) 4341*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 4342*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4343*4bdc9457SAndroid Build Coastguard Worker } 4344*4bdc9457SAndroid Build Coastguard Worker } 4345*4bdc9457SAndroid Build Coastguard Worker } 4346*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,n_gt_8_strided_a)4347*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, n_gt_8_strided_a) { 4348*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4349*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 4350*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4351*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4352*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4353*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4354*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4355*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4356*4bdc9457SAndroid Build Coastguard Worker .m(3) 4357*4bdc9457SAndroid Build Coastguard Worker .n(n) 4358*4bdc9457SAndroid Build Coastguard Worker .k(k) 4359*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 4360*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4361*4bdc9457SAndroid Build Coastguard Worker } 4362*4bdc9457SAndroid Build Coastguard Worker } 4363*4bdc9457SAndroid Build Coastguard Worker } 4364*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,n_gt_8_subtile)4365*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, n_gt_8_subtile) { 4366*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4367*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 4368*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4369*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4370*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4371*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4372*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4373*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4374*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4375*4bdc9457SAndroid Build Coastguard Worker .m(m) 4376*4bdc9457SAndroid Build Coastguard Worker .n(n) 4377*4bdc9457SAndroid Build Coastguard Worker .k(k) 4378*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4379*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4380*4bdc9457SAndroid Build Coastguard Worker } 4381*4bdc9457SAndroid Build Coastguard Worker } 4382*4bdc9457SAndroid Build Coastguard Worker } 4383*4bdc9457SAndroid Build Coastguard Worker } 4384*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,n_div_8)4385*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, n_div_8) { 4386*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4387*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 4388*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4389*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4390*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4391*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4392*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4393*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4394*4bdc9457SAndroid Build Coastguard Worker .m(3) 4395*4bdc9457SAndroid Build Coastguard Worker .n(n) 4396*4bdc9457SAndroid Build Coastguard Worker .k(k) 4397*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4398*4bdc9457SAndroid Build Coastguard Worker } 4399*4bdc9457SAndroid Build Coastguard Worker } 4400*4bdc9457SAndroid Build Coastguard Worker } 4401*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,n_div_8_strided_cn)4402*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, n_div_8_strided_cn) { 4403*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4404*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 4405*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4406*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4407*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4408*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4409*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4410*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4411*4bdc9457SAndroid Build Coastguard Worker .m(3) 4412*4bdc9457SAndroid Build Coastguard Worker .n(n) 4413*4bdc9457SAndroid Build Coastguard Worker .k(k) 4414*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 4415*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4416*4bdc9457SAndroid Build Coastguard Worker } 4417*4bdc9457SAndroid Build Coastguard Worker } 4418*4bdc9457SAndroid Build Coastguard Worker } 4419*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,n_div_8_strided_a)4420*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, n_div_8_strided_a) { 4421*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4422*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 4423*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4424*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4425*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4426*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4427*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4428*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4429*4bdc9457SAndroid Build Coastguard Worker .m(3) 4430*4bdc9457SAndroid Build Coastguard Worker .n(n) 4431*4bdc9457SAndroid Build Coastguard Worker .k(k) 4432*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 4433*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4434*4bdc9457SAndroid Build Coastguard Worker } 4435*4bdc9457SAndroid Build Coastguard Worker } 4436*4bdc9457SAndroid Build Coastguard Worker } 4437*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,n_div_8_subtile)4438*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, n_div_8_subtile) { 4439*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4440*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 4441*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4442*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4443*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4444*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4445*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4446*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4447*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4448*4bdc9457SAndroid Build Coastguard Worker .m(m) 4449*4bdc9457SAndroid Build Coastguard Worker .n(n) 4450*4bdc9457SAndroid Build Coastguard Worker .k(k) 4451*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4452*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4453*4bdc9457SAndroid Build Coastguard Worker } 4454*4bdc9457SAndroid Build Coastguard Worker } 4455*4bdc9457SAndroid Build Coastguard Worker } 4456*4bdc9457SAndroid Build Coastguard Worker } 4457*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,strided_cm_subtile)4458*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, strided_cm_subtile) { 4459*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4460*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4461*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4462*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4463*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4464*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4465*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4466*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4467*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4468*4bdc9457SAndroid Build Coastguard Worker .m(m) 4469*4bdc9457SAndroid Build Coastguard Worker .n(n) 4470*4bdc9457SAndroid Build Coastguard Worker .k(k) 4471*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 4472*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4473*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4474*4bdc9457SAndroid Build Coastguard Worker } 4475*4bdc9457SAndroid Build Coastguard Worker } 4476*4bdc9457SAndroid Build Coastguard Worker } 4477*4bdc9457SAndroid Build Coastguard Worker } 4478*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,qmin)4479*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, qmin) { 4480*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4481*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4482*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4483*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4484*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4485*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4486*4bdc9457SAndroid Build Coastguard Worker .m(3) 4487*4bdc9457SAndroid Build Coastguard Worker .n(8) 4488*4bdc9457SAndroid Build Coastguard Worker .k(8) 4489*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4490*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4491*4bdc9457SAndroid Build Coastguard Worker } 4492*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,qmax)4493*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, qmax) { 4494*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4495*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4496*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4497*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4498*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4499*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4500*4bdc9457SAndroid Build Coastguard Worker .m(3) 4501*4bdc9457SAndroid Build Coastguard Worker .n(8) 4502*4bdc9457SAndroid Build Coastguard Worker .k(8) 4503*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4504*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4505*4bdc9457SAndroid Build Coastguard Worker } 4506*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,strided_cm)4507*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, strided_cm) { 4508*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4509*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4510*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4511*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4512*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4513*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4514*4bdc9457SAndroid Build Coastguard Worker .m(3) 4515*4bdc9457SAndroid Build Coastguard Worker .n(8) 4516*4bdc9457SAndroid Build Coastguard Worker .k(8) 4517*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 4518*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4519*4bdc9457SAndroid Build Coastguard Worker } 4520*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,no_a_zero_point)4521*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, no_a_zero_point) { 4522*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4523*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4524*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4525*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4526*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4527*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4528*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4529*4bdc9457SAndroid Build Coastguard Worker .m(3) 4530*4bdc9457SAndroid Build Coastguard Worker .n(8) 4531*4bdc9457SAndroid Build Coastguard Worker .k(k) 4532*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 4533*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4534*4bdc9457SAndroid Build Coastguard Worker } 4535*4bdc9457SAndroid Build Coastguard Worker } 4536*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,no_b_zero_point)4537*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, no_b_zero_point) { 4538*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4539*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4540*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4541*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4542*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4543*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4544*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4545*4bdc9457SAndroid Build Coastguard Worker .m(3) 4546*4bdc9457SAndroid Build Coastguard Worker .n(8) 4547*4bdc9457SAndroid Build Coastguard Worker .k(k) 4548*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 4549*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4550*4bdc9457SAndroid Build Coastguard Worker } 4551*4bdc9457SAndroid Build Coastguard Worker } 4552*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE,no_zero_point)4553*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8__NEON_MLAL_LANE, no_zero_point) { 4554*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4555*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4556*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4557*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4558*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4559*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4560*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4561*4bdc9457SAndroid Build Coastguard Worker .m(3) 4562*4bdc9457SAndroid Build Coastguard Worker .n(8) 4563*4bdc9457SAndroid Build Coastguard Worker .k(k) 4564*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 4565*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 4566*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4567*4bdc9457SAndroid Build Coastguard Worker } 4568*4bdc9457SAndroid Build Coastguard Worker } 4569*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 4570*4bdc9457SAndroid Build Coastguard Worker 4571*4bdc9457SAndroid Build Coastguard Worker 4572*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_eq_8)4573*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_eq_8) { 4574*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4575*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4576*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4577*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4578*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4579*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4580*4bdc9457SAndroid Build Coastguard Worker .m(3) 4581*4bdc9457SAndroid Build Coastguard Worker .n(16) 4582*4bdc9457SAndroid Build Coastguard Worker .k(8) 4583*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4584*4bdc9457SAndroid Build Coastguard Worker } 4585*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,strided_cn)4586*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, strided_cn) { 4587*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4588*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4589*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4590*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4591*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4592*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4593*4bdc9457SAndroid Build Coastguard Worker .m(3) 4594*4bdc9457SAndroid Build Coastguard Worker .n(16) 4595*4bdc9457SAndroid Build Coastguard Worker .k(8) 4596*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4597*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4598*4bdc9457SAndroid Build Coastguard Worker } 4599*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_eq_8_strided_a)4600*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_eq_8_strided_a) { 4601*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4602*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4603*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4604*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4605*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4606*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4607*4bdc9457SAndroid Build Coastguard Worker .m(3) 4608*4bdc9457SAndroid Build Coastguard Worker .n(16) 4609*4bdc9457SAndroid Build Coastguard Worker .k(8) 4610*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 4611*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4612*4bdc9457SAndroid Build Coastguard Worker } 4613*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_eq_8_subtile)4614*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_eq_8_subtile) { 4615*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4616*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4617*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4618*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4619*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4620*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4621*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4622*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4623*4bdc9457SAndroid Build Coastguard Worker .m(m) 4624*4bdc9457SAndroid Build Coastguard Worker .n(n) 4625*4bdc9457SAndroid Build Coastguard Worker .k(8) 4626*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4627*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4628*4bdc9457SAndroid Build Coastguard Worker } 4629*4bdc9457SAndroid Build Coastguard Worker } 4630*4bdc9457SAndroid Build Coastguard Worker } 4631*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_eq_8_subtile_m)4632*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_eq_8_subtile_m) { 4633*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4634*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4635*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4636*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4637*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4638*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4639*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4640*4bdc9457SAndroid Build Coastguard Worker .m(m) 4641*4bdc9457SAndroid Build Coastguard Worker .n(16) 4642*4bdc9457SAndroid Build Coastguard Worker .k(8) 4643*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4644*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4645*4bdc9457SAndroid Build Coastguard Worker } 4646*4bdc9457SAndroid Build Coastguard Worker } 4647*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_eq_8_subtile_n)4648*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_eq_8_subtile_n) { 4649*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4650*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4651*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4652*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4653*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4654*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4655*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4656*4bdc9457SAndroid Build Coastguard Worker .m(3) 4657*4bdc9457SAndroid Build Coastguard Worker .n(n) 4658*4bdc9457SAndroid Build Coastguard Worker .k(8) 4659*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4660*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4661*4bdc9457SAndroid Build Coastguard Worker } 4662*4bdc9457SAndroid Build Coastguard Worker } 4663*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_lt_8)4664*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_lt_8) { 4665*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4666*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 4667*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4668*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4669*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4670*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4671*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4672*4bdc9457SAndroid Build Coastguard Worker .m(3) 4673*4bdc9457SAndroid Build Coastguard Worker .n(16) 4674*4bdc9457SAndroid Build Coastguard Worker .k(k) 4675*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4676*4bdc9457SAndroid Build Coastguard Worker } 4677*4bdc9457SAndroid Build Coastguard Worker } 4678*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_lt_8_strided_a)4679*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_lt_8_strided_a) { 4680*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4681*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 4682*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4683*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4684*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4685*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4686*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4687*4bdc9457SAndroid Build Coastguard Worker .m(3) 4688*4bdc9457SAndroid Build Coastguard Worker .n(16) 4689*4bdc9457SAndroid Build Coastguard Worker .k(k) 4690*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 4691*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4692*4bdc9457SAndroid Build Coastguard Worker } 4693*4bdc9457SAndroid Build Coastguard Worker } 4694*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_lt_8_subtile)4695*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_lt_8_subtile) { 4696*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4697*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 4698*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4699*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4700*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4701*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4702*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4703*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4704*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4705*4bdc9457SAndroid Build Coastguard Worker .m(m) 4706*4bdc9457SAndroid Build Coastguard Worker .n(n) 4707*4bdc9457SAndroid Build Coastguard Worker .k(k) 4708*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4709*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4710*4bdc9457SAndroid Build Coastguard Worker } 4711*4bdc9457SAndroid Build Coastguard Worker } 4712*4bdc9457SAndroid Build Coastguard Worker } 4713*4bdc9457SAndroid Build Coastguard Worker } 4714*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_gt_8)4715*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_gt_8) { 4716*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4717*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 4718*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4719*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4720*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4721*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4722*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4723*4bdc9457SAndroid Build Coastguard Worker .m(3) 4724*4bdc9457SAndroid Build Coastguard Worker .n(16) 4725*4bdc9457SAndroid Build Coastguard Worker .k(k) 4726*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4727*4bdc9457SAndroid Build Coastguard Worker } 4728*4bdc9457SAndroid Build Coastguard Worker } 4729*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_gt_8_strided_a)4730*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_gt_8_strided_a) { 4731*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4732*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 4733*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4734*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4735*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4736*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4737*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4738*4bdc9457SAndroid Build Coastguard Worker .m(3) 4739*4bdc9457SAndroid Build Coastguard Worker .n(16) 4740*4bdc9457SAndroid Build Coastguard Worker .k(k) 4741*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 4742*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4743*4bdc9457SAndroid Build Coastguard Worker } 4744*4bdc9457SAndroid Build Coastguard Worker } 4745*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_gt_8_subtile)4746*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_gt_8_subtile) { 4747*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4748*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 4749*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4750*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4751*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4752*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4753*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4754*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4755*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4756*4bdc9457SAndroid Build Coastguard Worker .m(m) 4757*4bdc9457SAndroid Build Coastguard Worker .n(n) 4758*4bdc9457SAndroid Build Coastguard Worker .k(k) 4759*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4760*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4761*4bdc9457SAndroid Build Coastguard Worker } 4762*4bdc9457SAndroid Build Coastguard Worker } 4763*4bdc9457SAndroid Build Coastguard Worker } 4764*4bdc9457SAndroid Build Coastguard Worker } 4765*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_div_8)4766*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_div_8) { 4767*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4768*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 4769*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4770*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4771*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4772*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4773*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4774*4bdc9457SAndroid Build Coastguard Worker .m(3) 4775*4bdc9457SAndroid Build Coastguard Worker .n(16) 4776*4bdc9457SAndroid Build Coastguard Worker .k(k) 4777*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4778*4bdc9457SAndroid Build Coastguard Worker } 4779*4bdc9457SAndroid Build Coastguard Worker } 4780*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_div_8_strided_a)4781*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_div_8_strided_a) { 4782*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4783*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 4784*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4785*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4786*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4787*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4788*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4789*4bdc9457SAndroid Build Coastguard Worker .m(3) 4790*4bdc9457SAndroid Build Coastguard Worker .n(16) 4791*4bdc9457SAndroid Build Coastguard Worker .k(k) 4792*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 4793*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4794*4bdc9457SAndroid Build Coastguard Worker } 4795*4bdc9457SAndroid Build Coastguard Worker } 4796*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,k_div_8_subtile)4797*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, k_div_8_subtile) { 4798*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4799*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 4800*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4801*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4802*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4803*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4804*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4805*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4806*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4807*4bdc9457SAndroid Build Coastguard Worker .m(m) 4808*4bdc9457SAndroid Build Coastguard Worker .n(n) 4809*4bdc9457SAndroid Build Coastguard Worker .k(k) 4810*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4811*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4812*4bdc9457SAndroid Build Coastguard Worker } 4813*4bdc9457SAndroid Build Coastguard Worker } 4814*4bdc9457SAndroid Build Coastguard Worker } 4815*4bdc9457SAndroid Build Coastguard Worker } 4816*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,n_gt_16)4817*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, n_gt_16) { 4818*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4819*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4820*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4821*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4822*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4823*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4824*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4825*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4826*4bdc9457SAndroid Build Coastguard Worker .m(3) 4827*4bdc9457SAndroid Build Coastguard Worker .n(n) 4828*4bdc9457SAndroid Build Coastguard Worker .k(k) 4829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4830*4bdc9457SAndroid Build Coastguard Worker } 4831*4bdc9457SAndroid Build Coastguard Worker } 4832*4bdc9457SAndroid Build Coastguard Worker } 4833*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,n_gt_16_strided_cn)4834*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, n_gt_16_strided_cn) { 4835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4836*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4837*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4838*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4839*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4840*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4841*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4842*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4843*4bdc9457SAndroid Build Coastguard Worker .m(3) 4844*4bdc9457SAndroid Build Coastguard Worker .n(n) 4845*4bdc9457SAndroid Build Coastguard Worker .k(k) 4846*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4847*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4848*4bdc9457SAndroid Build Coastguard Worker } 4849*4bdc9457SAndroid Build Coastguard Worker } 4850*4bdc9457SAndroid Build Coastguard Worker } 4851*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,n_gt_16_strided_a)4852*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, n_gt_16_strided_a) { 4853*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4854*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4855*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4856*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4857*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4858*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4859*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4860*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4861*4bdc9457SAndroid Build Coastguard Worker .m(3) 4862*4bdc9457SAndroid Build Coastguard Worker .n(n) 4863*4bdc9457SAndroid Build Coastguard Worker .k(k) 4864*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 4865*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4866*4bdc9457SAndroid Build Coastguard Worker } 4867*4bdc9457SAndroid Build Coastguard Worker } 4868*4bdc9457SAndroid Build Coastguard Worker } 4869*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,n_gt_16_subtile)4870*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, n_gt_16_subtile) { 4871*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4872*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4873*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4874*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4875*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4876*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4877*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4878*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4879*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4880*4bdc9457SAndroid Build Coastguard Worker .m(m) 4881*4bdc9457SAndroid Build Coastguard Worker .n(n) 4882*4bdc9457SAndroid Build Coastguard Worker .k(k) 4883*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4884*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4885*4bdc9457SAndroid Build Coastguard Worker } 4886*4bdc9457SAndroid Build Coastguard Worker } 4887*4bdc9457SAndroid Build Coastguard Worker } 4888*4bdc9457SAndroid Build Coastguard Worker } 4889*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,n_div_16)4890*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, n_div_16) { 4891*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4892*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4893*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4894*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4895*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4896*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4897*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4898*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4899*4bdc9457SAndroid Build Coastguard Worker .m(3) 4900*4bdc9457SAndroid Build Coastguard Worker .n(n) 4901*4bdc9457SAndroid Build Coastguard Worker .k(k) 4902*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4903*4bdc9457SAndroid Build Coastguard Worker } 4904*4bdc9457SAndroid Build Coastguard Worker } 4905*4bdc9457SAndroid Build Coastguard Worker } 4906*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,n_div_16_strided_cn)4907*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, n_div_16_strided_cn) { 4908*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4909*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4910*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4911*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4912*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4913*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4914*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4915*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4916*4bdc9457SAndroid Build Coastguard Worker .m(3) 4917*4bdc9457SAndroid Build Coastguard Worker .n(n) 4918*4bdc9457SAndroid Build Coastguard Worker .k(k) 4919*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4920*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4921*4bdc9457SAndroid Build Coastguard Worker } 4922*4bdc9457SAndroid Build Coastguard Worker } 4923*4bdc9457SAndroid Build Coastguard Worker } 4924*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,n_div_16_strided_a)4925*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, n_div_16_strided_a) { 4926*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4927*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4928*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4929*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4930*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4931*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4932*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4933*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4934*4bdc9457SAndroid Build Coastguard Worker .m(3) 4935*4bdc9457SAndroid Build Coastguard Worker .n(n) 4936*4bdc9457SAndroid Build Coastguard Worker .k(k) 4937*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 4938*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4939*4bdc9457SAndroid Build Coastguard Worker } 4940*4bdc9457SAndroid Build Coastguard Worker } 4941*4bdc9457SAndroid Build Coastguard Worker } 4942*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,n_div_16_subtile)4943*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, n_div_16_subtile) { 4944*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4945*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4946*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4947*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4948*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4949*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4950*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4951*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4952*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4953*4bdc9457SAndroid Build Coastguard Worker .m(m) 4954*4bdc9457SAndroid Build Coastguard Worker .n(n) 4955*4bdc9457SAndroid Build Coastguard Worker .k(k) 4956*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4957*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4958*4bdc9457SAndroid Build Coastguard Worker } 4959*4bdc9457SAndroid Build Coastguard Worker } 4960*4bdc9457SAndroid Build Coastguard Worker } 4961*4bdc9457SAndroid Build Coastguard Worker } 4962*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,strided_cm_subtile)4963*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, strided_cm_subtile) { 4964*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4965*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 4966*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4967*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 4968*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4969*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4970*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4971*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4972*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4973*4bdc9457SAndroid Build Coastguard Worker .m(m) 4974*4bdc9457SAndroid Build Coastguard Worker .n(n) 4975*4bdc9457SAndroid Build Coastguard Worker .k(k) 4976*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4977*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4978*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4979*4bdc9457SAndroid Build Coastguard Worker } 4980*4bdc9457SAndroid Build Coastguard Worker } 4981*4bdc9457SAndroid Build Coastguard Worker } 4982*4bdc9457SAndroid Build Coastguard Worker } 4983*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,qmin)4984*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, qmin) { 4985*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 4986*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4987*4bdc9457SAndroid Build Coastguard Worker .mr(3) 4988*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4989*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4990*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4991*4bdc9457SAndroid Build Coastguard Worker .m(3) 4992*4bdc9457SAndroid Build Coastguard Worker .n(16) 4993*4bdc9457SAndroid Build Coastguard Worker .k(8) 4994*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4995*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 4996*4bdc9457SAndroid Build Coastguard Worker } 4997*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,qmax)4998*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, qmax) { 4999*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5000*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5001*4bdc9457SAndroid Build Coastguard Worker .mr(3) 5002*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5003*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5004*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5005*4bdc9457SAndroid Build Coastguard Worker .m(3) 5006*4bdc9457SAndroid Build Coastguard Worker .n(16) 5007*4bdc9457SAndroid Build Coastguard Worker .k(8) 5008*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5009*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5010*4bdc9457SAndroid Build Coastguard Worker } 5011*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,strided_cm)5012*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, strided_cm) { 5013*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5014*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5015*4bdc9457SAndroid Build Coastguard Worker .mr(3) 5016*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5017*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5018*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5019*4bdc9457SAndroid Build Coastguard Worker .m(3) 5020*4bdc9457SAndroid Build Coastguard Worker .n(16) 5021*4bdc9457SAndroid Build Coastguard Worker .k(8) 5022*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 5023*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5024*4bdc9457SAndroid Build Coastguard Worker } 5025*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,no_a_zero_point)5026*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, no_a_zero_point) { 5027*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5028*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5029*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5030*4bdc9457SAndroid Build Coastguard Worker .mr(3) 5031*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5032*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5033*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5034*4bdc9457SAndroid Build Coastguard Worker .m(3) 5035*4bdc9457SAndroid Build Coastguard Worker .n(16) 5036*4bdc9457SAndroid Build Coastguard Worker .k(k) 5037*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 5038*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5039*4bdc9457SAndroid Build Coastguard Worker } 5040*4bdc9457SAndroid Build Coastguard Worker } 5041*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,no_b_zero_point)5042*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, no_b_zero_point) { 5043*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5044*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5045*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5046*4bdc9457SAndroid Build Coastguard Worker .mr(3) 5047*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5048*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5049*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5050*4bdc9457SAndroid Build Coastguard Worker .m(3) 5051*4bdc9457SAndroid Build Coastguard Worker .n(16) 5052*4bdc9457SAndroid Build Coastguard Worker .k(k) 5053*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 5054*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5055*4bdc9457SAndroid Build Coastguard Worker } 5056*4bdc9457SAndroid Build Coastguard Worker } 5057*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE,no_zero_point)5058*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X16__NEON_MLAL_LANE, no_zero_point) { 5059*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5060*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5061*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5062*4bdc9457SAndroid Build Coastguard Worker .mr(3) 5063*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5064*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5065*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5066*4bdc9457SAndroid Build Coastguard Worker .m(3) 5067*4bdc9457SAndroid Build Coastguard Worker .n(16) 5068*4bdc9457SAndroid Build Coastguard Worker .k(k) 5069*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 5070*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 5071*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5072*4bdc9457SAndroid Build Coastguard Worker } 5073*4bdc9457SAndroid Build Coastguard Worker } 5074*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 5075*4bdc9457SAndroid Build Coastguard Worker 5076*4bdc9457SAndroid Build Coastguard Worker 5077*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64 TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_eq_8)5078*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_eq_8) { 5079*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5080*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5081*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5082*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5083*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5084*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5085*4bdc9457SAndroid Build Coastguard Worker .m(6) 5086*4bdc9457SAndroid Build Coastguard Worker .n(8) 5087*4bdc9457SAndroid Build Coastguard Worker .k(8) 5088*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5089*4bdc9457SAndroid Build Coastguard Worker } 5090*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,strided_cn)5091*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, strided_cn) { 5092*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5093*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5094*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5095*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5096*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5097*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5098*4bdc9457SAndroid Build Coastguard Worker .m(6) 5099*4bdc9457SAndroid Build Coastguard Worker .n(8) 5100*4bdc9457SAndroid Build Coastguard Worker .k(8) 5101*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5102*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5103*4bdc9457SAndroid Build Coastguard Worker } 5104*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_eq_8_strided_a)5105*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_eq_8_strided_a) { 5106*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5107*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5108*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5109*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5110*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5111*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5112*4bdc9457SAndroid Build Coastguard Worker .m(6) 5113*4bdc9457SAndroid Build Coastguard Worker .n(8) 5114*4bdc9457SAndroid Build Coastguard Worker .k(8) 5115*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 5116*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5117*4bdc9457SAndroid Build Coastguard Worker } 5118*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_eq_8_subtile)5119*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_eq_8_subtile) { 5120*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5121*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5122*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5123*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5124*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5125*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5126*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5127*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5128*4bdc9457SAndroid Build Coastguard Worker .m(m) 5129*4bdc9457SAndroid Build Coastguard Worker .n(n) 5130*4bdc9457SAndroid Build Coastguard Worker .k(8) 5131*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5133*4bdc9457SAndroid Build Coastguard Worker } 5134*4bdc9457SAndroid Build Coastguard Worker } 5135*4bdc9457SAndroid Build Coastguard Worker } 5136*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_eq_8_subtile_m)5137*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_eq_8_subtile_m) { 5138*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5139*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5140*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5141*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5142*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5143*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5144*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5145*4bdc9457SAndroid Build Coastguard Worker .m(m) 5146*4bdc9457SAndroid Build Coastguard Worker .n(8) 5147*4bdc9457SAndroid Build Coastguard Worker .k(8) 5148*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5149*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5150*4bdc9457SAndroid Build Coastguard Worker } 5151*4bdc9457SAndroid Build Coastguard Worker } 5152*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_eq_8_subtile_n)5153*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_eq_8_subtile_n) { 5154*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5155*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5156*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5157*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5158*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5159*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5160*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5161*4bdc9457SAndroid Build Coastguard Worker .m(6) 5162*4bdc9457SAndroid Build Coastguard Worker .n(n) 5163*4bdc9457SAndroid Build Coastguard Worker .k(8) 5164*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5165*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5166*4bdc9457SAndroid Build Coastguard Worker } 5167*4bdc9457SAndroid Build Coastguard Worker } 5168*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_lt_8)5169*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_lt_8) { 5170*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5171*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 5172*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5173*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5174*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5175*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5176*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5177*4bdc9457SAndroid Build Coastguard Worker .m(6) 5178*4bdc9457SAndroid Build Coastguard Worker .n(8) 5179*4bdc9457SAndroid Build Coastguard Worker .k(k) 5180*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5181*4bdc9457SAndroid Build Coastguard Worker } 5182*4bdc9457SAndroid Build Coastguard Worker } 5183*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_lt_8_strided_a)5184*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_lt_8_strided_a) { 5185*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5186*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 5187*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5188*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5189*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5190*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5191*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5192*4bdc9457SAndroid Build Coastguard Worker .m(6) 5193*4bdc9457SAndroid Build Coastguard Worker .n(8) 5194*4bdc9457SAndroid Build Coastguard Worker .k(k) 5195*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 5196*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5197*4bdc9457SAndroid Build Coastguard Worker } 5198*4bdc9457SAndroid Build Coastguard Worker } 5199*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_lt_8_subtile)5200*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_lt_8_subtile) { 5201*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5202*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 5203*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5204*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5205*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5206*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5207*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5208*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5209*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5210*4bdc9457SAndroid Build Coastguard Worker .m(m) 5211*4bdc9457SAndroid Build Coastguard Worker .n(n) 5212*4bdc9457SAndroid Build Coastguard Worker .k(k) 5213*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5214*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5215*4bdc9457SAndroid Build Coastguard Worker } 5216*4bdc9457SAndroid Build Coastguard Worker } 5217*4bdc9457SAndroid Build Coastguard Worker } 5218*4bdc9457SAndroid Build Coastguard Worker } 5219*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_gt_8)5220*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_gt_8) { 5221*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5222*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 5223*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5224*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5225*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5226*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5227*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5228*4bdc9457SAndroid Build Coastguard Worker .m(6) 5229*4bdc9457SAndroid Build Coastguard Worker .n(8) 5230*4bdc9457SAndroid Build Coastguard Worker .k(k) 5231*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5232*4bdc9457SAndroid Build Coastguard Worker } 5233*4bdc9457SAndroid Build Coastguard Worker } 5234*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_gt_8_strided_a)5235*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_gt_8_strided_a) { 5236*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5237*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 5238*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5239*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5240*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5241*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5242*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5243*4bdc9457SAndroid Build Coastguard Worker .m(6) 5244*4bdc9457SAndroid Build Coastguard Worker .n(8) 5245*4bdc9457SAndroid Build Coastguard Worker .k(k) 5246*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 5247*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5248*4bdc9457SAndroid Build Coastguard Worker } 5249*4bdc9457SAndroid Build Coastguard Worker } 5250*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_gt_8_subtile)5251*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_gt_8_subtile) { 5252*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5253*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 5254*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5255*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5256*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5257*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5258*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5259*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5260*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5261*4bdc9457SAndroid Build Coastguard Worker .m(m) 5262*4bdc9457SAndroid Build Coastguard Worker .n(n) 5263*4bdc9457SAndroid Build Coastguard Worker .k(k) 5264*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5265*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5266*4bdc9457SAndroid Build Coastguard Worker } 5267*4bdc9457SAndroid Build Coastguard Worker } 5268*4bdc9457SAndroid Build Coastguard Worker } 5269*4bdc9457SAndroid Build Coastguard Worker } 5270*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_div_8)5271*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_div_8) { 5272*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5273*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 5274*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5275*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5276*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5277*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5278*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5279*4bdc9457SAndroid Build Coastguard Worker .m(6) 5280*4bdc9457SAndroid Build Coastguard Worker .n(8) 5281*4bdc9457SAndroid Build Coastguard Worker .k(k) 5282*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5283*4bdc9457SAndroid Build Coastguard Worker } 5284*4bdc9457SAndroid Build Coastguard Worker } 5285*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_div_8_strided_a)5286*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_div_8_strided_a) { 5287*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5288*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 5289*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5290*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5291*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5292*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5293*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5294*4bdc9457SAndroid Build Coastguard Worker .m(6) 5295*4bdc9457SAndroid Build Coastguard Worker .n(8) 5296*4bdc9457SAndroid Build Coastguard Worker .k(k) 5297*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 5298*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5299*4bdc9457SAndroid Build Coastguard Worker } 5300*4bdc9457SAndroid Build Coastguard Worker } 5301*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,k_div_8_subtile)5302*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, k_div_8_subtile) { 5303*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5304*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 5305*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5306*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5307*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5308*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5309*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5310*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5311*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5312*4bdc9457SAndroid Build Coastguard Worker .m(m) 5313*4bdc9457SAndroid Build Coastguard Worker .n(n) 5314*4bdc9457SAndroid Build Coastguard Worker .k(k) 5315*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5316*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5317*4bdc9457SAndroid Build Coastguard Worker } 5318*4bdc9457SAndroid Build Coastguard Worker } 5319*4bdc9457SAndroid Build Coastguard Worker } 5320*4bdc9457SAndroid Build Coastguard Worker } 5321*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,n_gt_8)5322*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, n_gt_8) { 5323*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5324*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5325*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5326*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5327*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5328*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5329*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5330*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5331*4bdc9457SAndroid Build Coastguard Worker .m(6) 5332*4bdc9457SAndroid Build Coastguard Worker .n(n) 5333*4bdc9457SAndroid Build Coastguard Worker .k(k) 5334*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5335*4bdc9457SAndroid Build Coastguard Worker } 5336*4bdc9457SAndroid Build Coastguard Worker } 5337*4bdc9457SAndroid Build Coastguard Worker } 5338*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,n_gt_8_strided_cn)5339*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, n_gt_8_strided_cn) { 5340*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5341*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5342*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5343*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5344*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5345*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5346*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5347*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5348*4bdc9457SAndroid Build Coastguard Worker .m(6) 5349*4bdc9457SAndroid Build Coastguard Worker .n(n) 5350*4bdc9457SAndroid Build Coastguard Worker .k(k) 5351*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5352*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5353*4bdc9457SAndroid Build Coastguard Worker } 5354*4bdc9457SAndroid Build Coastguard Worker } 5355*4bdc9457SAndroid Build Coastguard Worker } 5356*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,n_gt_8_strided_a)5357*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, n_gt_8_strided_a) { 5358*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5359*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5360*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5361*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5362*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5363*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5364*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5365*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5366*4bdc9457SAndroid Build Coastguard Worker .m(6) 5367*4bdc9457SAndroid Build Coastguard Worker .n(n) 5368*4bdc9457SAndroid Build Coastguard Worker .k(k) 5369*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 5370*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5371*4bdc9457SAndroid Build Coastguard Worker } 5372*4bdc9457SAndroid Build Coastguard Worker } 5373*4bdc9457SAndroid Build Coastguard Worker } 5374*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,n_gt_8_subtile)5375*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, n_gt_8_subtile) { 5376*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5377*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5378*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5379*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5380*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5381*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5382*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5383*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5384*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5385*4bdc9457SAndroid Build Coastguard Worker .m(m) 5386*4bdc9457SAndroid Build Coastguard Worker .n(n) 5387*4bdc9457SAndroid Build Coastguard Worker .k(k) 5388*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5389*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5390*4bdc9457SAndroid Build Coastguard Worker } 5391*4bdc9457SAndroid Build Coastguard Worker } 5392*4bdc9457SAndroid Build Coastguard Worker } 5393*4bdc9457SAndroid Build Coastguard Worker } 5394*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,n_div_8)5395*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, n_div_8) { 5396*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5397*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5398*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5399*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5400*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5401*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5402*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5403*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5404*4bdc9457SAndroid Build Coastguard Worker .m(6) 5405*4bdc9457SAndroid Build Coastguard Worker .n(n) 5406*4bdc9457SAndroid Build Coastguard Worker .k(k) 5407*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5408*4bdc9457SAndroid Build Coastguard Worker } 5409*4bdc9457SAndroid Build Coastguard Worker } 5410*4bdc9457SAndroid Build Coastguard Worker } 5411*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,n_div_8_strided_cn)5412*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, n_div_8_strided_cn) { 5413*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5414*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5415*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5416*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5417*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5418*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5419*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5420*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5421*4bdc9457SAndroid Build Coastguard Worker .m(6) 5422*4bdc9457SAndroid Build Coastguard Worker .n(n) 5423*4bdc9457SAndroid Build Coastguard Worker .k(k) 5424*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5425*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5426*4bdc9457SAndroid Build Coastguard Worker } 5427*4bdc9457SAndroid Build Coastguard Worker } 5428*4bdc9457SAndroid Build Coastguard Worker } 5429*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,n_div_8_strided_a)5430*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, n_div_8_strided_a) { 5431*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5432*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5433*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5434*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5435*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5436*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5437*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5438*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5439*4bdc9457SAndroid Build Coastguard Worker .m(6) 5440*4bdc9457SAndroid Build Coastguard Worker .n(n) 5441*4bdc9457SAndroid Build Coastguard Worker .k(k) 5442*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 5443*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5444*4bdc9457SAndroid Build Coastguard Worker } 5445*4bdc9457SAndroid Build Coastguard Worker } 5446*4bdc9457SAndroid Build Coastguard Worker } 5447*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,n_div_8_subtile)5448*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, n_div_8_subtile) { 5449*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5450*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5451*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5452*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5453*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5454*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5455*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5456*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5457*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5458*4bdc9457SAndroid Build Coastguard Worker .m(m) 5459*4bdc9457SAndroid Build Coastguard Worker .n(n) 5460*4bdc9457SAndroid Build Coastguard Worker .k(k) 5461*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5462*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5463*4bdc9457SAndroid Build Coastguard Worker } 5464*4bdc9457SAndroid Build Coastguard Worker } 5465*4bdc9457SAndroid Build Coastguard Worker } 5466*4bdc9457SAndroid Build Coastguard Worker } 5467*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,strided_cm_subtile)5468*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, strided_cm_subtile) { 5469*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5470*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5471*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5472*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5473*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5474*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5475*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5476*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5477*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5478*4bdc9457SAndroid Build Coastguard Worker .m(m) 5479*4bdc9457SAndroid Build Coastguard Worker .n(n) 5480*4bdc9457SAndroid Build Coastguard Worker .k(k) 5481*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 5482*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5483*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5484*4bdc9457SAndroid Build Coastguard Worker } 5485*4bdc9457SAndroid Build Coastguard Worker } 5486*4bdc9457SAndroid Build Coastguard Worker } 5487*4bdc9457SAndroid Build Coastguard Worker } 5488*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,qmin)5489*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, qmin) { 5490*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5491*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5492*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5493*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5494*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5495*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5496*4bdc9457SAndroid Build Coastguard Worker .m(6) 5497*4bdc9457SAndroid Build Coastguard Worker .n(8) 5498*4bdc9457SAndroid Build Coastguard Worker .k(8) 5499*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5500*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5501*4bdc9457SAndroid Build Coastguard Worker } 5502*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,qmax)5503*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, qmax) { 5504*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5505*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5506*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5507*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5508*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5509*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5510*4bdc9457SAndroid Build Coastguard Worker .m(6) 5511*4bdc9457SAndroid Build Coastguard Worker .n(8) 5512*4bdc9457SAndroid Build Coastguard Worker .k(8) 5513*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5514*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5515*4bdc9457SAndroid Build Coastguard Worker } 5516*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,strided_cm)5517*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, strided_cm) { 5518*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5519*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5520*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5521*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5522*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5523*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5524*4bdc9457SAndroid Build Coastguard Worker .m(6) 5525*4bdc9457SAndroid Build Coastguard Worker .n(8) 5526*4bdc9457SAndroid Build Coastguard Worker .k(8) 5527*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 5528*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5529*4bdc9457SAndroid Build Coastguard Worker } 5530*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,no_a_zero_point)5531*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, no_a_zero_point) { 5532*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5533*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5534*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5535*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5536*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5537*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5538*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5539*4bdc9457SAndroid Build Coastguard Worker .m(6) 5540*4bdc9457SAndroid Build Coastguard Worker .n(8) 5541*4bdc9457SAndroid Build Coastguard Worker .k(k) 5542*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 5543*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5544*4bdc9457SAndroid Build Coastguard Worker } 5545*4bdc9457SAndroid Build Coastguard Worker } 5546*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,no_b_zero_point)5547*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, no_b_zero_point) { 5548*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5549*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5550*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5551*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5552*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5553*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5554*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5555*4bdc9457SAndroid Build Coastguard Worker .m(6) 5556*4bdc9457SAndroid Build Coastguard Worker .n(8) 5557*4bdc9457SAndroid Build Coastguard Worker .k(k) 5558*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 5559*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5560*4bdc9457SAndroid Build Coastguard Worker } 5561*4bdc9457SAndroid Build Coastguard Worker } 5562*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE,no_zero_point)5563*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X8__NEON_MLAL_LANE, no_zero_point) { 5564*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 5565*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 5566*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5567*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5568*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5569*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5570*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5571*4bdc9457SAndroid Build Coastguard Worker .m(6) 5572*4bdc9457SAndroid Build Coastguard Worker .n(8) 5573*4bdc9457SAndroid Build Coastguard Worker .k(k) 5574*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 5575*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 5576*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5577*4bdc9457SAndroid Build Coastguard Worker } 5578*4bdc9457SAndroid Build Coastguard Worker } 5579*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64 5580*4bdc9457SAndroid Build Coastguard Worker 5581*4bdc9457SAndroid Build Coastguard Worker 5582*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_eq_16)5583*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_eq_16) { 5584*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5585*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5586*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5587*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5588*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5589*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5590*4bdc9457SAndroid Build Coastguard Worker .m(4) 5591*4bdc9457SAndroid Build Coastguard Worker .n(8) 5592*4bdc9457SAndroid Build Coastguard Worker .k(16) 5593*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5594*4bdc9457SAndroid Build Coastguard Worker } 5595*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,strided_cn)5596*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, strided_cn) { 5597*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5598*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5599*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5600*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5601*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5602*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5603*4bdc9457SAndroid Build Coastguard Worker .m(4) 5604*4bdc9457SAndroid Build Coastguard Worker .n(8) 5605*4bdc9457SAndroid Build Coastguard Worker .k(16) 5606*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5607*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5608*4bdc9457SAndroid Build Coastguard Worker } 5609*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_eq_16_strided_a)5610*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_eq_16_strided_a) { 5611*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5612*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5613*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5614*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5615*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5616*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5617*4bdc9457SAndroid Build Coastguard Worker .m(4) 5618*4bdc9457SAndroid Build Coastguard Worker .n(8) 5619*4bdc9457SAndroid Build Coastguard Worker .k(16) 5620*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 5621*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5622*4bdc9457SAndroid Build Coastguard Worker } 5623*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_eq_16_subtile)5624*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_eq_16_subtile) { 5625*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5626*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5627*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5628*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5629*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5630*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5631*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5632*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5633*4bdc9457SAndroid Build Coastguard Worker .m(m) 5634*4bdc9457SAndroid Build Coastguard Worker .n(n) 5635*4bdc9457SAndroid Build Coastguard Worker .k(16) 5636*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5637*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5638*4bdc9457SAndroid Build Coastguard Worker } 5639*4bdc9457SAndroid Build Coastguard Worker } 5640*4bdc9457SAndroid Build Coastguard Worker } 5641*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_eq_16_subtile_m)5642*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_eq_16_subtile_m) { 5643*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5644*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5645*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5646*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5647*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5648*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5649*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5650*4bdc9457SAndroid Build Coastguard Worker .m(m) 5651*4bdc9457SAndroid Build Coastguard Worker .n(8) 5652*4bdc9457SAndroid Build Coastguard Worker .k(16) 5653*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5654*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5655*4bdc9457SAndroid Build Coastguard Worker } 5656*4bdc9457SAndroid Build Coastguard Worker } 5657*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_eq_16_subtile_n)5658*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_eq_16_subtile_n) { 5659*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5660*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5661*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5662*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5663*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5664*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5665*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5666*4bdc9457SAndroid Build Coastguard Worker .m(4) 5667*4bdc9457SAndroid Build Coastguard Worker .n(n) 5668*4bdc9457SAndroid Build Coastguard Worker .k(16) 5669*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5670*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5671*4bdc9457SAndroid Build Coastguard Worker } 5672*4bdc9457SAndroid Build Coastguard Worker } 5673*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_lt_16)5674*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_lt_16) { 5675*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5676*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 5677*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5678*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5679*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5680*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5681*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5682*4bdc9457SAndroid Build Coastguard Worker .m(4) 5683*4bdc9457SAndroid Build Coastguard Worker .n(8) 5684*4bdc9457SAndroid Build Coastguard Worker .k(k) 5685*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5686*4bdc9457SAndroid Build Coastguard Worker } 5687*4bdc9457SAndroid Build Coastguard Worker } 5688*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_lt_16_strided_a)5689*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_lt_16_strided_a) { 5690*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5691*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 5692*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5693*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5694*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5695*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5696*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5697*4bdc9457SAndroid Build Coastguard Worker .m(4) 5698*4bdc9457SAndroid Build Coastguard Worker .n(8) 5699*4bdc9457SAndroid Build Coastguard Worker .k(k) 5700*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 5701*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5702*4bdc9457SAndroid Build Coastguard Worker } 5703*4bdc9457SAndroid Build Coastguard Worker } 5704*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_lt_16_subtile)5705*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_lt_16_subtile) { 5706*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5707*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 5708*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5709*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5710*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5711*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5712*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5713*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5714*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5715*4bdc9457SAndroid Build Coastguard Worker .m(m) 5716*4bdc9457SAndroid Build Coastguard Worker .n(n) 5717*4bdc9457SAndroid Build Coastguard Worker .k(k) 5718*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5719*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5720*4bdc9457SAndroid Build Coastguard Worker } 5721*4bdc9457SAndroid Build Coastguard Worker } 5722*4bdc9457SAndroid Build Coastguard Worker } 5723*4bdc9457SAndroid Build Coastguard Worker } 5724*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_gt_16)5725*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_gt_16) { 5726*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5727*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 5728*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5729*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5730*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5731*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5732*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5733*4bdc9457SAndroid Build Coastguard Worker .m(4) 5734*4bdc9457SAndroid Build Coastguard Worker .n(8) 5735*4bdc9457SAndroid Build Coastguard Worker .k(k) 5736*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5737*4bdc9457SAndroid Build Coastguard Worker } 5738*4bdc9457SAndroid Build Coastguard Worker } 5739*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_gt_16_strided_a)5740*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_gt_16_strided_a) { 5741*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5742*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 5743*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5744*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5745*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5746*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5747*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5748*4bdc9457SAndroid Build Coastguard Worker .m(4) 5749*4bdc9457SAndroid Build Coastguard Worker .n(8) 5750*4bdc9457SAndroid Build Coastguard Worker .k(k) 5751*4bdc9457SAndroid Build Coastguard Worker .a_stride(37) 5752*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5753*4bdc9457SAndroid Build Coastguard Worker } 5754*4bdc9457SAndroid Build Coastguard Worker } 5755*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_gt_16_subtile)5756*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_gt_16_subtile) { 5757*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5758*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 5759*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5760*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5761*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5762*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5763*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5764*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5765*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5766*4bdc9457SAndroid Build Coastguard Worker .m(m) 5767*4bdc9457SAndroid Build Coastguard Worker .n(n) 5768*4bdc9457SAndroid Build Coastguard Worker .k(k) 5769*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5770*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5771*4bdc9457SAndroid Build Coastguard Worker } 5772*4bdc9457SAndroid Build Coastguard Worker } 5773*4bdc9457SAndroid Build Coastguard Worker } 5774*4bdc9457SAndroid Build Coastguard Worker } 5775*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_div_16)5776*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_div_16) { 5777*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5778*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 5779*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5780*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5781*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5782*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5783*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5784*4bdc9457SAndroid Build Coastguard Worker .m(4) 5785*4bdc9457SAndroid Build Coastguard Worker .n(8) 5786*4bdc9457SAndroid Build Coastguard Worker .k(k) 5787*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5788*4bdc9457SAndroid Build Coastguard Worker } 5789*4bdc9457SAndroid Build Coastguard Worker } 5790*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_div_16_strided_a)5791*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_div_16_strided_a) { 5792*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5793*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 5794*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5795*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5796*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5797*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5798*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5799*4bdc9457SAndroid Build Coastguard Worker .m(4) 5800*4bdc9457SAndroid Build Coastguard Worker .n(8) 5801*4bdc9457SAndroid Build Coastguard Worker .k(k) 5802*4bdc9457SAndroid Build Coastguard Worker .a_stride(163) 5803*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5804*4bdc9457SAndroid Build Coastguard Worker } 5805*4bdc9457SAndroid Build Coastguard Worker } 5806*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,k_div_16_subtile)5807*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, k_div_16_subtile) { 5808*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5809*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 5810*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5811*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5812*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5813*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5814*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5815*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5816*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5817*4bdc9457SAndroid Build Coastguard Worker .m(m) 5818*4bdc9457SAndroid Build Coastguard Worker .n(n) 5819*4bdc9457SAndroid Build Coastguard Worker .k(k) 5820*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5821*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5822*4bdc9457SAndroid Build Coastguard Worker } 5823*4bdc9457SAndroid Build Coastguard Worker } 5824*4bdc9457SAndroid Build Coastguard Worker } 5825*4bdc9457SAndroid Build Coastguard Worker } 5826*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,n_gt_8)5827*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, n_gt_8) { 5828*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5829*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5830*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5831*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5832*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5833*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5834*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5835*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5836*4bdc9457SAndroid Build Coastguard Worker .m(4) 5837*4bdc9457SAndroid Build Coastguard Worker .n(n) 5838*4bdc9457SAndroid Build Coastguard Worker .k(k) 5839*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5840*4bdc9457SAndroid Build Coastguard Worker } 5841*4bdc9457SAndroid Build Coastguard Worker } 5842*4bdc9457SAndroid Build Coastguard Worker } 5843*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,n_gt_8_strided_cn)5844*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, n_gt_8_strided_cn) { 5845*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5846*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5847*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5848*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5849*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5850*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5851*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5852*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5853*4bdc9457SAndroid Build Coastguard Worker .m(4) 5854*4bdc9457SAndroid Build Coastguard Worker .n(n) 5855*4bdc9457SAndroid Build Coastguard Worker .k(k) 5856*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5857*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5858*4bdc9457SAndroid Build Coastguard Worker } 5859*4bdc9457SAndroid Build Coastguard Worker } 5860*4bdc9457SAndroid Build Coastguard Worker } 5861*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,n_gt_8_strided_a)5862*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, n_gt_8_strided_a) { 5863*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5864*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5865*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5866*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5867*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5868*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5869*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5870*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5871*4bdc9457SAndroid Build Coastguard Worker .m(4) 5872*4bdc9457SAndroid Build Coastguard Worker .n(n) 5873*4bdc9457SAndroid Build Coastguard Worker .k(k) 5874*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 5875*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5876*4bdc9457SAndroid Build Coastguard Worker } 5877*4bdc9457SAndroid Build Coastguard Worker } 5878*4bdc9457SAndroid Build Coastguard Worker } 5879*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,n_gt_8_subtile)5880*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, n_gt_8_subtile) { 5881*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5882*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5883*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5884*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5885*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5886*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5887*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5888*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5889*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5890*4bdc9457SAndroid Build Coastguard Worker .m(m) 5891*4bdc9457SAndroid Build Coastguard Worker .n(n) 5892*4bdc9457SAndroid Build Coastguard Worker .k(k) 5893*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5894*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5895*4bdc9457SAndroid Build Coastguard Worker } 5896*4bdc9457SAndroid Build Coastguard Worker } 5897*4bdc9457SAndroid Build Coastguard Worker } 5898*4bdc9457SAndroid Build Coastguard Worker } 5899*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,n_div_8)5900*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, n_div_8) { 5901*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5902*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5903*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5904*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5905*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5906*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5907*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5908*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5909*4bdc9457SAndroid Build Coastguard Worker .m(4) 5910*4bdc9457SAndroid Build Coastguard Worker .n(n) 5911*4bdc9457SAndroid Build Coastguard Worker .k(k) 5912*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5913*4bdc9457SAndroid Build Coastguard Worker } 5914*4bdc9457SAndroid Build Coastguard Worker } 5915*4bdc9457SAndroid Build Coastguard Worker } 5916*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,n_div_8_strided_cn)5917*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, n_div_8_strided_cn) { 5918*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5919*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5920*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5921*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5922*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5923*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5924*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5925*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5926*4bdc9457SAndroid Build Coastguard Worker .m(4) 5927*4bdc9457SAndroid Build Coastguard Worker .n(n) 5928*4bdc9457SAndroid Build Coastguard Worker .k(k) 5929*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5930*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5931*4bdc9457SAndroid Build Coastguard Worker } 5932*4bdc9457SAndroid Build Coastguard Worker } 5933*4bdc9457SAndroid Build Coastguard Worker } 5934*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,n_div_8_strided_a)5935*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, n_div_8_strided_a) { 5936*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5937*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5938*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5939*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5940*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5941*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5942*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5943*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5944*4bdc9457SAndroid Build Coastguard Worker .m(4) 5945*4bdc9457SAndroid Build Coastguard Worker .n(n) 5946*4bdc9457SAndroid Build Coastguard Worker .k(k) 5947*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 5948*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5949*4bdc9457SAndroid Build Coastguard Worker } 5950*4bdc9457SAndroid Build Coastguard Worker } 5951*4bdc9457SAndroid Build Coastguard Worker } 5952*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,n_div_8_subtile)5953*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, n_div_8_subtile) { 5954*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5955*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5956*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5957*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5958*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5959*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5960*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5961*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5962*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5963*4bdc9457SAndroid Build Coastguard Worker .m(m) 5964*4bdc9457SAndroid Build Coastguard Worker .n(n) 5965*4bdc9457SAndroid Build Coastguard Worker .k(k) 5966*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5967*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5968*4bdc9457SAndroid Build Coastguard Worker } 5969*4bdc9457SAndroid Build Coastguard Worker } 5970*4bdc9457SAndroid Build Coastguard Worker } 5971*4bdc9457SAndroid Build Coastguard Worker } 5972*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,strided_cm_subtile)5973*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, strided_cm_subtile) { 5974*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5975*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 5976*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5977*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5978*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5979*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5980*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5981*4bdc9457SAndroid Build Coastguard Worker .kr(4) 5982*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5983*4bdc9457SAndroid Build Coastguard Worker .m(m) 5984*4bdc9457SAndroid Build Coastguard Worker .n(n) 5985*4bdc9457SAndroid Build Coastguard Worker .k(k) 5986*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 5987*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5988*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 5989*4bdc9457SAndroid Build Coastguard Worker } 5990*4bdc9457SAndroid Build Coastguard Worker } 5991*4bdc9457SAndroid Build Coastguard Worker } 5992*4bdc9457SAndroid Build Coastguard Worker } 5993*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,qmin)5994*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, qmin) { 5995*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 5996*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5997*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5998*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5999*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6000*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6001*4bdc9457SAndroid Build Coastguard Worker .m(4) 6002*4bdc9457SAndroid Build Coastguard Worker .n(8) 6003*4bdc9457SAndroid Build Coastguard Worker .k(16) 6004*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6005*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6006*4bdc9457SAndroid Build Coastguard Worker } 6007*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,qmax)6008*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, qmax) { 6009*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6010*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6011*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6012*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6013*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6014*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6015*4bdc9457SAndroid Build Coastguard Worker .m(4) 6016*4bdc9457SAndroid Build Coastguard Worker .n(8) 6017*4bdc9457SAndroid Build Coastguard Worker .k(16) 6018*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6019*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6020*4bdc9457SAndroid Build Coastguard Worker } 6021*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,strided_cm)6022*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, strided_cm) { 6023*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6024*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6025*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6026*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6027*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6028*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6029*4bdc9457SAndroid Build Coastguard Worker .m(4) 6030*4bdc9457SAndroid Build Coastguard Worker .n(8) 6031*4bdc9457SAndroid Build Coastguard Worker .k(16) 6032*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 6033*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6034*4bdc9457SAndroid Build Coastguard Worker } 6035*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,no_a_zero_point)6036*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, no_a_zero_point) { 6037*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6038*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6039*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6040*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6041*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6042*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6043*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6044*4bdc9457SAndroid Build Coastguard Worker .m(4) 6045*4bdc9457SAndroid Build Coastguard Worker .n(8) 6046*4bdc9457SAndroid Build Coastguard Worker .k(k) 6047*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 6048*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6049*4bdc9457SAndroid Build Coastguard Worker } 6050*4bdc9457SAndroid Build Coastguard Worker } 6051*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,no_b_zero_point)6052*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, no_b_zero_point) { 6053*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6054*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6055*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6056*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6057*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6058*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6059*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6060*4bdc9457SAndroid Build Coastguard Worker .m(4) 6061*4bdc9457SAndroid Build Coastguard Worker .n(8) 6062*4bdc9457SAndroid Build Coastguard Worker .k(k) 6063*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 6064*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6065*4bdc9457SAndroid Build Coastguard Worker } 6066*4bdc9457SAndroid Build Coastguard Worker } 6067*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128,no_zero_point)6068*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__AARCH64_NEONDOT_LD128, no_zero_point) { 6069*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6070*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6071*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6072*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6073*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6074*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6075*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6076*4bdc9457SAndroid Build Coastguard Worker .m(4) 6077*4bdc9457SAndroid Build Coastguard Worker .n(8) 6078*4bdc9457SAndroid Build Coastguard Worker .k(k) 6079*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 6080*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 6081*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6082*4bdc9457SAndroid Build Coastguard Worker } 6083*4bdc9457SAndroid Build Coastguard Worker } 6084*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 6085*4bdc9457SAndroid Build Coastguard Worker 6086*4bdc9457SAndroid Build Coastguard Worker 6087*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_eq_16)6088*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_eq_16) { 6089*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6090*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6091*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6092*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6093*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6094*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6095*4bdc9457SAndroid Build Coastguard Worker .m(4) 6096*4bdc9457SAndroid Build Coastguard Worker .n(16) 6097*4bdc9457SAndroid Build Coastguard Worker .k(16) 6098*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6099*4bdc9457SAndroid Build Coastguard Worker } 6100*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,strided_cn)6101*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, strided_cn) { 6102*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6103*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6104*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6105*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6106*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6107*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6108*4bdc9457SAndroid Build Coastguard Worker .m(4) 6109*4bdc9457SAndroid Build Coastguard Worker .n(16) 6110*4bdc9457SAndroid Build Coastguard Worker .k(16) 6111*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6112*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6113*4bdc9457SAndroid Build Coastguard Worker } 6114*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_eq_16_strided_a)6115*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_eq_16_strided_a) { 6116*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6117*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6118*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6119*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6120*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6121*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6122*4bdc9457SAndroid Build Coastguard Worker .m(4) 6123*4bdc9457SAndroid Build Coastguard Worker .n(16) 6124*4bdc9457SAndroid Build Coastguard Worker .k(16) 6125*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 6126*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6127*4bdc9457SAndroid Build Coastguard Worker } 6128*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_eq_16_subtile)6129*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_eq_16_subtile) { 6130*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6131*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6132*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6133*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6134*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6135*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6136*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6137*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6138*4bdc9457SAndroid Build Coastguard Worker .m(m) 6139*4bdc9457SAndroid Build Coastguard Worker .n(n) 6140*4bdc9457SAndroid Build Coastguard Worker .k(16) 6141*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6143*4bdc9457SAndroid Build Coastguard Worker } 6144*4bdc9457SAndroid Build Coastguard Worker } 6145*4bdc9457SAndroid Build Coastguard Worker } 6146*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_eq_16_subtile_m)6147*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_eq_16_subtile_m) { 6148*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6149*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6150*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6151*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6152*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6153*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6154*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6155*4bdc9457SAndroid Build Coastguard Worker .m(m) 6156*4bdc9457SAndroid Build Coastguard Worker .n(16) 6157*4bdc9457SAndroid Build Coastguard Worker .k(16) 6158*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6159*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6160*4bdc9457SAndroid Build Coastguard Worker } 6161*4bdc9457SAndroid Build Coastguard Worker } 6162*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_eq_16_subtile_n)6163*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_eq_16_subtile_n) { 6164*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6165*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6166*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6167*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6168*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6169*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6170*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6171*4bdc9457SAndroid Build Coastguard Worker .m(4) 6172*4bdc9457SAndroid Build Coastguard Worker .n(n) 6173*4bdc9457SAndroid Build Coastguard Worker .k(16) 6174*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6175*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6176*4bdc9457SAndroid Build Coastguard Worker } 6177*4bdc9457SAndroid Build Coastguard Worker } 6178*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_lt_16)6179*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_lt_16) { 6180*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6181*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 6182*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6183*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6184*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6185*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6186*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6187*4bdc9457SAndroid Build Coastguard Worker .m(4) 6188*4bdc9457SAndroid Build Coastguard Worker .n(16) 6189*4bdc9457SAndroid Build Coastguard Worker .k(k) 6190*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6191*4bdc9457SAndroid Build Coastguard Worker } 6192*4bdc9457SAndroid Build Coastguard Worker } 6193*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_lt_16_strided_a)6194*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_lt_16_strided_a) { 6195*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6196*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 6197*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6198*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6199*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6200*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6201*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6202*4bdc9457SAndroid Build Coastguard Worker .m(4) 6203*4bdc9457SAndroid Build Coastguard Worker .n(16) 6204*4bdc9457SAndroid Build Coastguard Worker .k(k) 6205*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 6206*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6207*4bdc9457SAndroid Build Coastguard Worker } 6208*4bdc9457SAndroid Build Coastguard Worker } 6209*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_lt_16_subtile)6210*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_lt_16_subtile) { 6211*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6212*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 6213*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6214*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6215*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6216*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6217*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6218*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6219*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6220*4bdc9457SAndroid Build Coastguard Worker .m(m) 6221*4bdc9457SAndroid Build Coastguard Worker .n(n) 6222*4bdc9457SAndroid Build Coastguard Worker .k(k) 6223*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6224*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6225*4bdc9457SAndroid Build Coastguard Worker } 6226*4bdc9457SAndroid Build Coastguard Worker } 6227*4bdc9457SAndroid Build Coastguard Worker } 6228*4bdc9457SAndroid Build Coastguard Worker } 6229*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_gt_16)6230*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_gt_16) { 6231*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6232*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 6233*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6234*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6235*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6236*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6237*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6238*4bdc9457SAndroid Build Coastguard Worker .m(4) 6239*4bdc9457SAndroid Build Coastguard Worker .n(16) 6240*4bdc9457SAndroid Build Coastguard Worker .k(k) 6241*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6242*4bdc9457SAndroid Build Coastguard Worker } 6243*4bdc9457SAndroid Build Coastguard Worker } 6244*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_gt_16_strided_a)6245*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_gt_16_strided_a) { 6246*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6247*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 6248*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6249*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6250*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6251*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6252*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6253*4bdc9457SAndroid Build Coastguard Worker .m(4) 6254*4bdc9457SAndroid Build Coastguard Worker .n(16) 6255*4bdc9457SAndroid Build Coastguard Worker .k(k) 6256*4bdc9457SAndroid Build Coastguard Worker .a_stride(37) 6257*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6258*4bdc9457SAndroid Build Coastguard Worker } 6259*4bdc9457SAndroid Build Coastguard Worker } 6260*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_gt_16_subtile)6261*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_gt_16_subtile) { 6262*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6263*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 6264*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6265*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6266*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6267*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6268*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6269*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6270*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6271*4bdc9457SAndroid Build Coastguard Worker .m(m) 6272*4bdc9457SAndroid Build Coastguard Worker .n(n) 6273*4bdc9457SAndroid Build Coastguard Worker .k(k) 6274*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6275*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6276*4bdc9457SAndroid Build Coastguard Worker } 6277*4bdc9457SAndroid Build Coastguard Worker } 6278*4bdc9457SAndroid Build Coastguard Worker } 6279*4bdc9457SAndroid Build Coastguard Worker } 6280*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_div_16)6281*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_div_16) { 6282*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6283*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 6284*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6285*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6286*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6287*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6288*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6289*4bdc9457SAndroid Build Coastguard Worker .m(4) 6290*4bdc9457SAndroid Build Coastguard Worker .n(16) 6291*4bdc9457SAndroid Build Coastguard Worker .k(k) 6292*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6293*4bdc9457SAndroid Build Coastguard Worker } 6294*4bdc9457SAndroid Build Coastguard Worker } 6295*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_div_16_strided_a)6296*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_div_16_strided_a) { 6297*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6298*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 6299*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6300*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6301*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6302*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6303*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6304*4bdc9457SAndroid Build Coastguard Worker .m(4) 6305*4bdc9457SAndroid Build Coastguard Worker .n(16) 6306*4bdc9457SAndroid Build Coastguard Worker .k(k) 6307*4bdc9457SAndroid Build Coastguard Worker .a_stride(163) 6308*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6309*4bdc9457SAndroid Build Coastguard Worker } 6310*4bdc9457SAndroid Build Coastguard Worker } 6311*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,k_div_16_subtile)6312*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, k_div_16_subtile) { 6313*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6314*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 6315*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6316*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6317*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6318*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6319*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6320*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6321*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6322*4bdc9457SAndroid Build Coastguard Worker .m(m) 6323*4bdc9457SAndroid Build Coastguard Worker .n(n) 6324*4bdc9457SAndroid Build Coastguard Worker .k(k) 6325*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6326*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6327*4bdc9457SAndroid Build Coastguard Worker } 6328*4bdc9457SAndroid Build Coastguard Worker } 6329*4bdc9457SAndroid Build Coastguard Worker } 6330*4bdc9457SAndroid Build Coastguard Worker } 6331*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,n_gt_16)6332*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, n_gt_16) { 6333*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6334*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6335*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6336*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6337*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6338*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6339*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6340*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6341*4bdc9457SAndroid Build Coastguard Worker .m(4) 6342*4bdc9457SAndroid Build Coastguard Worker .n(n) 6343*4bdc9457SAndroid Build Coastguard Worker .k(k) 6344*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6345*4bdc9457SAndroid Build Coastguard Worker } 6346*4bdc9457SAndroid Build Coastguard Worker } 6347*4bdc9457SAndroid Build Coastguard Worker } 6348*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,n_gt_16_strided_cn)6349*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, n_gt_16_strided_cn) { 6350*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6351*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6352*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6353*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6354*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6355*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6356*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6357*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6358*4bdc9457SAndroid Build Coastguard Worker .m(4) 6359*4bdc9457SAndroid Build Coastguard Worker .n(n) 6360*4bdc9457SAndroid Build Coastguard Worker .k(k) 6361*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6362*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6363*4bdc9457SAndroid Build Coastguard Worker } 6364*4bdc9457SAndroid Build Coastguard Worker } 6365*4bdc9457SAndroid Build Coastguard Worker } 6366*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,n_gt_16_strided_a)6367*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, n_gt_16_strided_a) { 6368*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6369*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6370*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6371*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6372*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6373*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6374*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6375*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6376*4bdc9457SAndroid Build Coastguard Worker .m(4) 6377*4bdc9457SAndroid Build Coastguard Worker .n(n) 6378*4bdc9457SAndroid Build Coastguard Worker .k(k) 6379*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 6380*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6381*4bdc9457SAndroid Build Coastguard Worker } 6382*4bdc9457SAndroid Build Coastguard Worker } 6383*4bdc9457SAndroid Build Coastguard Worker } 6384*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,n_gt_16_subtile)6385*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, n_gt_16_subtile) { 6386*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6387*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6388*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6389*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6390*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6391*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6392*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6393*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6394*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6395*4bdc9457SAndroid Build Coastguard Worker .m(m) 6396*4bdc9457SAndroid Build Coastguard Worker .n(n) 6397*4bdc9457SAndroid Build Coastguard Worker .k(k) 6398*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6399*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6400*4bdc9457SAndroid Build Coastguard Worker } 6401*4bdc9457SAndroid Build Coastguard Worker } 6402*4bdc9457SAndroid Build Coastguard Worker } 6403*4bdc9457SAndroid Build Coastguard Worker } 6404*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,n_div_16)6405*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, n_div_16) { 6406*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6407*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6408*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6409*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6410*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6411*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6412*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6413*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6414*4bdc9457SAndroid Build Coastguard Worker .m(4) 6415*4bdc9457SAndroid Build Coastguard Worker .n(n) 6416*4bdc9457SAndroid Build Coastguard Worker .k(k) 6417*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6418*4bdc9457SAndroid Build Coastguard Worker } 6419*4bdc9457SAndroid Build Coastguard Worker } 6420*4bdc9457SAndroid Build Coastguard Worker } 6421*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,n_div_16_strided_cn)6422*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, n_div_16_strided_cn) { 6423*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6424*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6425*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6426*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6427*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6428*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6429*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6430*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6431*4bdc9457SAndroid Build Coastguard Worker .m(4) 6432*4bdc9457SAndroid Build Coastguard Worker .n(n) 6433*4bdc9457SAndroid Build Coastguard Worker .k(k) 6434*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6435*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6436*4bdc9457SAndroid Build Coastguard Worker } 6437*4bdc9457SAndroid Build Coastguard Worker } 6438*4bdc9457SAndroid Build Coastguard Worker } 6439*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,n_div_16_strided_a)6440*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, n_div_16_strided_a) { 6441*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6442*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6443*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6444*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6445*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6446*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6447*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6448*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6449*4bdc9457SAndroid Build Coastguard Worker .m(4) 6450*4bdc9457SAndroid Build Coastguard Worker .n(n) 6451*4bdc9457SAndroid Build Coastguard Worker .k(k) 6452*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 6453*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6454*4bdc9457SAndroid Build Coastguard Worker } 6455*4bdc9457SAndroid Build Coastguard Worker } 6456*4bdc9457SAndroid Build Coastguard Worker } 6457*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,n_div_16_subtile)6458*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, n_div_16_subtile) { 6459*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6460*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6461*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6462*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6463*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6464*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6465*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6466*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6467*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6468*4bdc9457SAndroid Build Coastguard Worker .m(m) 6469*4bdc9457SAndroid Build Coastguard Worker .n(n) 6470*4bdc9457SAndroid Build Coastguard Worker .k(k) 6471*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6472*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6473*4bdc9457SAndroid Build Coastguard Worker } 6474*4bdc9457SAndroid Build Coastguard Worker } 6475*4bdc9457SAndroid Build Coastguard Worker } 6476*4bdc9457SAndroid Build Coastguard Worker } 6477*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,strided_cm_subtile)6478*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, strided_cm_subtile) { 6479*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6480*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6481*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6482*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6483*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6484*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6485*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6486*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6487*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6488*4bdc9457SAndroid Build Coastguard Worker .m(m) 6489*4bdc9457SAndroid Build Coastguard Worker .n(n) 6490*4bdc9457SAndroid Build Coastguard Worker .k(k) 6491*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 6492*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6493*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6494*4bdc9457SAndroid Build Coastguard Worker } 6495*4bdc9457SAndroid Build Coastguard Worker } 6496*4bdc9457SAndroid Build Coastguard Worker } 6497*4bdc9457SAndroid Build Coastguard Worker } 6498*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,qmin)6499*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, qmin) { 6500*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6501*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6502*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6503*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6504*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6505*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6506*4bdc9457SAndroid Build Coastguard Worker .m(4) 6507*4bdc9457SAndroid Build Coastguard Worker .n(16) 6508*4bdc9457SAndroid Build Coastguard Worker .k(16) 6509*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6510*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6511*4bdc9457SAndroid Build Coastguard Worker } 6512*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,qmax)6513*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, qmax) { 6514*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6515*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6516*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6517*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6518*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6519*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6520*4bdc9457SAndroid Build Coastguard Worker .m(4) 6521*4bdc9457SAndroid Build Coastguard Worker .n(16) 6522*4bdc9457SAndroid Build Coastguard Worker .k(16) 6523*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6524*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6525*4bdc9457SAndroid Build Coastguard Worker } 6526*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,strided_cm)6527*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, strided_cm) { 6528*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6529*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6530*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6531*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6532*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6533*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6534*4bdc9457SAndroid Build Coastguard Worker .m(4) 6535*4bdc9457SAndroid Build Coastguard Worker .n(16) 6536*4bdc9457SAndroid Build Coastguard Worker .k(16) 6537*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 6538*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6539*4bdc9457SAndroid Build Coastguard Worker } 6540*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,no_a_zero_point)6541*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, no_a_zero_point) { 6542*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6543*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6544*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6545*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6546*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6547*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6548*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6549*4bdc9457SAndroid Build Coastguard Worker .m(4) 6550*4bdc9457SAndroid Build Coastguard Worker .n(16) 6551*4bdc9457SAndroid Build Coastguard Worker .k(k) 6552*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 6553*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6554*4bdc9457SAndroid Build Coastguard Worker } 6555*4bdc9457SAndroid Build Coastguard Worker } 6556*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,no_b_zero_point)6557*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, no_b_zero_point) { 6558*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6559*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6560*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6561*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6562*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6563*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6564*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6565*4bdc9457SAndroid Build Coastguard Worker .m(4) 6566*4bdc9457SAndroid Build Coastguard Worker .n(16) 6567*4bdc9457SAndroid Build Coastguard Worker .k(k) 6568*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 6569*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6570*4bdc9457SAndroid Build Coastguard Worker } 6571*4bdc9457SAndroid Build Coastguard Worker } 6572*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55,no_zero_point)6573*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_CORTEX_A55, no_zero_point) { 6574*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6575*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6576*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6577*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6578*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6579*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6580*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6581*4bdc9457SAndroid Build Coastguard Worker .m(4) 6582*4bdc9457SAndroid Build Coastguard Worker .n(16) 6583*4bdc9457SAndroid Build Coastguard Worker .k(k) 6584*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 6585*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 6586*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6587*4bdc9457SAndroid Build Coastguard Worker } 6588*4bdc9457SAndroid Build Coastguard Worker } 6589*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 6590*4bdc9457SAndroid Build Coastguard Worker 6591*4bdc9457SAndroid Build Coastguard Worker 6592*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_eq_16)6593*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_eq_16) { 6594*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6595*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6596*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6597*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6598*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6599*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6600*4bdc9457SAndroid Build Coastguard Worker .m(4) 6601*4bdc9457SAndroid Build Coastguard Worker .n(16) 6602*4bdc9457SAndroid Build Coastguard Worker .k(16) 6603*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6604*4bdc9457SAndroid Build Coastguard Worker } 6605*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,strided_cn)6606*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, strided_cn) { 6607*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6608*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6609*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6610*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6611*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6612*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6613*4bdc9457SAndroid Build Coastguard Worker .m(4) 6614*4bdc9457SAndroid Build Coastguard Worker .n(16) 6615*4bdc9457SAndroid Build Coastguard Worker .k(16) 6616*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6617*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6618*4bdc9457SAndroid Build Coastguard Worker } 6619*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_eq_16_strided_a)6620*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_eq_16_strided_a) { 6621*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6622*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6623*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6624*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6625*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6626*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6627*4bdc9457SAndroid Build Coastguard Worker .m(4) 6628*4bdc9457SAndroid Build Coastguard Worker .n(16) 6629*4bdc9457SAndroid Build Coastguard Worker .k(16) 6630*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 6631*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6632*4bdc9457SAndroid Build Coastguard Worker } 6633*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_eq_16_subtile)6634*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_eq_16_subtile) { 6635*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6636*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6637*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6638*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6639*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6640*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6641*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6642*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6643*4bdc9457SAndroid Build Coastguard Worker .m(m) 6644*4bdc9457SAndroid Build Coastguard Worker .n(n) 6645*4bdc9457SAndroid Build Coastguard Worker .k(16) 6646*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6647*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6648*4bdc9457SAndroid Build Coastguard Worker } 6649*4bdc9457SAndroid Build Coastguard Worker } 6650*4bdc9457SAndroid Build Coastguard Worker } 6651*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_eq_16_subtile_m)6652*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_eq_16_subtile_m) { 6653*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6654*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6655*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6656*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6657*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6658*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6659*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6660*4bdc9457SAndroid Build Coastguard Worker .m(m) 6661*4bdc9457SAndroid Build Coastguard Worker .n(16) 6662*4bdc9457SAndroid Build Coastguard Worker .k(16) 6663*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6664*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6665*4bdc9457SAndroid Build Coastguard Worker } 6666*4bdc9457SAndroid Build Coastguard Worker } 6667*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_eq_16_subtile_n)6668*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_eq_16_subtile_n) { 6669*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6670*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6671*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6672*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6673*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6674*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6675*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6676*4bdc9457SAndroid Build Coastguard Worker .m(4) 6677*4bdc9457SAndroid Build Coastguard Worker .n(n) 6678*4bdc9457SAndroid Build Coastguard Worker .k(16) 6679*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6680*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6681*4bdc9457SAndroid Build Coastguard Worker } 6682*4bdc9457SAndroid Build Coastguard Worker } 6683*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_lt_16)6684*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_lt_16) { 6685*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6686*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 6687*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6688*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6689*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6690*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6691*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6692*4bdc9457SAndroid Build Coastguard Worker .m(4) 6693*4bdc9457SAndroid Build Coastguard Worker .n(16) 6694*4bdc9457SAndroid Build Coastguard Worker .k(k) 6695*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6696*4bdc9457SAndroid Build Coastguard Worker } 6697*4bdc9457SAndroid Build Coastguard Worker } 6698*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_lt_16_strided_a)6699*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_lt_16_strided_a) { 6700*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6701*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 6702*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6703*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6704*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6705*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6706*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6707*4bdc9457SAndroid Build Coastguard Worker .m(4) 6708*4bdc9457SAndroid Build Coastguard Worker .n(16) 6709*4bdc9457SAndroid Build Coastguard Worker .k(k) 6710*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 6711*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6712*4bdc9457SAndroid Build Coastguard Worker } 6713*4bdc9457SAndroid Build Coastguard Worker } 6714*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_lt_16_subtile)6715*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_lt_16_subtile) { 6716*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6717*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 16; k++) { 6718*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6719*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6720*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6721*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6722*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6723*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6724*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6725*4bdc9457SAndroid Build Coastguard Worker .m(m) 6726*4bdc9457SAndroid Build Coastguard Worker .n(n) 6727*4bdc9457SAndroid Build Coastguard Worker .k(k) 6728*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6729*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6730*4bdc9457SAndroid Build Coastguard Worker } 6731*4bdc9457SAndroid Build Coastguard Worker } 6732*4bdc9457SAndroid Build Coastguard Worker } 6733*4bdc9457SAndroid Build Coastguard Worker } 6734*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_gt_16)6735*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_gt_16) { 6736*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6737*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 6738*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6739*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6740*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6741*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6742*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6743*4bdc9457SAndroid Build Coastguard Worker .m(4) 6744*4bdc9457SAndroid Build Coastguard Worker .n(16) 6745*4bdc9457SAndroid Build Coastguard Worker .k(k) 6746*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6747*4bdc9457SAndroid Build Coastguard Worker } 6748*4bdc9457SAndroid Build Coastguard Worker } 6749*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_gt_16_strided_a)6750*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_gt_16_strided_a) { 6751*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6752*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 6753*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6754*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6755*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6756*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6757*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6758*4bdc9457SAndroid Build Coastguard Worker .m(4) 6759*4bdc9457SAndroid Build Coastguard Worker .n(16) 6760*4bdc9457SAndroid Build Coastguard Worker .k(k) 6761*4bdc9457SAndroid Build Coastguard Worker .a_stride(37) 6762*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6763*4bdc9457SAndroid Build Coastguard Worker } 6764*4bdc9457SAndroid Build Coastguard Worker } 6765*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_gt_16_subtile)6766*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_gt_16_subtile) { 6767*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6768*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 17; k < 32; k++) { 6769*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6770*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6771*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6772*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6773*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6774*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6775*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6776*4bdc9457SAndroid Build Coastguard Worker .m(m) 6777*4bdc9457SAndroid Build Coastguard Worker .n(n) 6778*4bdc9457SAndroid Build Coastguard Worker .k(k) 6779*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6780*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6781*4bdc9457SAndroid Build Coastguard Worker } 6782*4bdc9457SAndroid Build Coastguard Worker } 6783*4bdc9457SAndroid Build Coastguard Worker } 6784*4bdc9457SAndroid Build Coastguard Worker } 6785*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_div_16)6786*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_div_16) { 6787*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6788*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 6789*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6790*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6791*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6792*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6793*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6794*4bdc9457SAndroid Build Coastguard Worker .m(4) 6795*4bdc9457SAndroid Build Coastguard Worker .n(16) 6796*4bdc9457SAndroid Build Coastguard Worker .k(k) 6797*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6798*4bdc9457SAndroid Build Coastguard Worker } 6799*4bdc9457SAndroid Build Coastguard Worker } 6800*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_div_16_strided_a)6801*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_div_16_strided_a) { 6802*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6803*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 6804*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6805*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6806*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6807*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6808*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6809*4bdc9457SAndroid Build Coastguard Worker .m(4) 6810*4bdc9457SAndroid Build Coastguard Worker .n(16) 6811*4bdc9457SAndroid Build Coastguard Worker .k(k) 6812*4bdc9457SAndroid Build Coastguard Worker .a_stride(163) 6813*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6814*4bdc9457SAndroid Build Coastguard Worker } 6815*4bdc9457SAndroid Build Coastguard Worker } 6816*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,k_div_16_subtile)6817*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, k_div_16_subtile) { 6818*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6819*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 32; k <= 160; k += 16) { 6820*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6821*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6822*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6823*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6824*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6825*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6826*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6827*4bdc9457SAndroid Build Coastguard Worker .m(m) 6828*4bdc9457SAndroid Build Coastguard Worker .n(n) 6829*4bdc9457SAndroid Build Coastguard Worker .k(k) 6830*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6831*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6832*4bdc9457SAndroid Build Coastguard Worker } 6833*4bdc9457SAndroid Build Coastguard Worker } 6834*4bdc9457SAndroid Build Coastguard Worker } 6835*4bdc9457SAndroid Build Coastguard Worker } 6836*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,n_gt_16)6837*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, n_gt_16) { 6838*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6839*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6840*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6841*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6842*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6843*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6844*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6845*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6846*4bdc9457SAndroid Build Coastguard Worker .m(4) 6847*4bdc9457SAndroid Build Coastguard Worker .n(n) 6848*4bdc9457SAndroid Build Coastguard Worker .k(k) 6849*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6850*4bdc9457SAndroid Build Coastguard Worker } 6851*4bdc9457SAndroid Build Coastguard Worker } 6852*4bdc9457SAndroid Build Coastguard Worker } 6853*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,n_gt_16_strided_cn)6854*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, n_gt_16_strided_cn) { 6855*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6856*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6857*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6858*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6859*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6860*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6861*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6862*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6863*4bdc9457SAndroid Build Coastguard Worker .m(4) 6864*4bdc9457SAndroid Build Coastguard Worker .n(n) 6865*4bdc9457SAndroid Build Coastguard Worker .k(k) 6866*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6867*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6868*4bdc9457SAndroid Build Coastguard Worker } 6869*4bdc9457SAndroid Build Coastguard Worker } 6870*4bdc9457SAndroid Build Coastguard Worker } 6871*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,n_gt_16_strided_a)6872*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, n_gt_16_strided_a) { 6873*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6874*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6875*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6876*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6877*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6878*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6879*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6880*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6881*4bdc9457SAndroid Build Coastguard Worker .m(4) 6882*4bdc9457SAndroid Build Coastguard Worker .n(n) 6883*4bdc9457SAndroid Build Coastguard Worker .k(k) 6884*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 6885*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6886*4bdc9457SAndroid Build Coastguard Worker } 6887*4bdc9457SAndroid Build Coastguard Worker } 6888*4bdc9457SAndroid Build Coastguard Worker } 6889*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,n_gt_16_subtile)6890*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, n_gt_16_subtile) { 6891*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6892*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6893*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6894*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6895*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6896*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6897*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6898*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6899*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6900*4bdc9457SAndroid Build Coastguard Worker .m(m) 6901*4bdc9457SAndroid Build Coastguard Worker .n(n) 6902*4bdc9457SAndroid Build Coastguard Worker .k(k) 6903*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6904*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6905*4bdc9457SAndroid Build Coastguard Worker } 6906*4bdc9457SAndroid Build Coastguard Worker } 6907*4bdc9457SAndroid Build Coastguard Worker } 6908*4bdc9457SAndroid Build Coastguard Worker } 6909*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,n_div_16)6910*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, n_div_16) { 6911*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6912*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6913*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6914*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6915*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6916*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6917*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6918*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6919*4bdc9457SAndroid Build Coastguard Worker .m(4) 6920*4bdc9457SAndroid Build Coastguard Worker .n(n) 6921*4bdc9457SAndroid Build Coastguard Worker .k(k) 6922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6923*4bdc9457SAndroid Build Coastguard Worker } 6924*4bdc9457SAndroid Build Coastguard Worker } 6925*4bdc9457SAndroid Build Coastguard Worker } 6926*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,n_div_16_strided_cn)6927*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, n_div_16_strided_cn) { 6928*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6929*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6930*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6931*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6932*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6933*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6934*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6935*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6936*4bdc9457SAndroid Build Coastguard Worker .m(4) 6937*4bdc9457SAndroid Build Coastguard Worker .n(n) 6938*4bdc9457SAndroid Build Coastguard Worker .k(k) 6939*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6940*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6941*4bdc9457SAndroid Build Coastguard Worker } 6942*4bdc9457SAndroid Build Coastguard Worker } 6943*4bdc9457SAndroid Build Coastguard Worker } 6944*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,n_div_16_strided_a)6945*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, n_div_16_strided_a) { 6946*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6947*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6948*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6949*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6950*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6951*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6952*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6953*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6954*4bdc9457SAndroid Build Coastguard Worker .m(4) 6955*4bdc9457SAndroid Build Coastguard Worker .n(n) 6956*4bdc9457SAndroid Build Coastguard Worker .k(k) 6957*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 6958*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6959*4bdc9457SAndroid Build Coastguard Worker } 6960*4bdc9457SAndroid Build Coastguard Worker } 6961*4bdc9457SAndroid Build Coastguard Worker } 6962*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,n_div_16_subtile)6963*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, n_div_16_subtile) { 6964*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6965*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6966*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6967*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6968*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6969*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6970*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6971*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6972*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6973*4bdc9457SAndroid Build Coastguard Worker .m(m) 6974*4bdc9457SAndroid Build Coastguard Worker .n(n) 6975*4bdc9457SAndroid Build Coastguard Worker .k(k) 6976*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6977*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6978*4bdc9457SAndroid Build Coastguard Worker } 6979*4bdc9457SAndroid Build Coastguard Worker } 6980*4bdc9457SAndroid Build Coastguard Worker } 6981*4bdc9457SAndroid Build Coastguard Worker } 6982*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,strided_cm_subtile)6983*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, strided_cm_subtile) { 6984*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 6985*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 6986*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6987*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6988*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6989*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6990*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6991*4bdc9457SAndroid Build Coastguard Worker .kr(4) 6992*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6993*4bdc9457SAndroid Build Coastguard Worker .m(m) 6994*4bdc9457SAndroid Build Coastguard Worker .n(n) 6995*4bdc9457SAndroid Build Coastguard Worker .k(k) 6996*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 6997*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6998*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 6999*4bdc9457SAndroid Build Coastguard Worker } 7000*4bdc9457SAndroid Build Coastguard Worker } 7001*4bdc9457SAndroid Build Coastguard Worker } 7002*4bdc9457SAndroid Build Coastguard Worker } 7003*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,qmin)7004*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, qmin) { 7005*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7006*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7007*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7008*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7009*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7010*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7011*4bdc9457SAndroid Build Coastguard Worker .m(4) 7012*4bdc9457SAndroid Build Coastguard Worker .n(16) 7013*4bdc9457SAndroid Build Coastguard Worker .k(16) 7014*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7015*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7016*4bdc9457SAndroid Build Coastguard Worker } 7017*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,qmax)7018*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, qmax) { 7019*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7020*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7021*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7022*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7023*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7024*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7025*4bdc9457SAndroid Build Coastguard Worker .m(4) 7026*4bdc9457SAndroid Build Coastguard Worker .n(16) 7027*4bdc9457SAndroid Build Coastguard Worker .k(16) 7028*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7029*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7030*4bdc9457SAndroid Build Coastguard Worker } 7031*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,strided_cm)7032*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, strided_cm) { 7033*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7034*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7035*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7036*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7037*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7038*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7039*4bdc9457SAndroid Build Coastguard Worker .m(4) 7040*4bdc9457SAndroid Build Coastguard Worker .n(16) 7041*4bdc9457SAndroid Build Coastguard Worker .k(16) 7042*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 7043*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7044*4bdc9457SAndroid Build Coastguard Worker } 7045*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,no_a_zero_point)7046*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, no_a_zero_point) { 7047*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7048*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 7049*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7050*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7051*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7052*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7053*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7054*4bdc9457SAndroid Build Coastguard Worker .m(4) 7055*4bdc9457SAndroid Build Coastguard Worker .n(16) 7056*4bdc9457SAndroid Build Coastguard Worker .k(k) 7057*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 7058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7059*4bdc9457SAndroid Build Coastguard Worker } 7060*4bdc9457SAndroid Build Coastguard Worker } 7061*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,no_b_zero_point)7062*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, no_b_zero_point) { 7063*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7064*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 7065*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7066*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7067*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7068*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7069*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7070*4bdc9457SAndroid Build Coastguard Worker .m(4) 7071*4bdc9457SAndroid Build Coastguard Worker .n(16) 7072*4bdc9457SAndroid Build Coastguard Worker .k(k) 7073*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 7074*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7075*4bdc9457SAndroid Build Coastguard Worker } 7076*4bdc9457SAndroid Build Coastguard Worker } 7077*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128,no_zero_point)7078*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16C4__AARCH64_NEONDOT_LD128, no_zero_point) { 7079*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7080*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 80; k += 17) { 7081*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7082*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7083*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7084*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7085*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7086*4bdc9457SAndroid Build Coastguard Worker .m(4) 7087*4bdc9457SAndroid Build Coastguard Worker .n(16) 7088*4bdc9457SAndroid Build Coastguard Worker .k(k) 7089*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 7090*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 7091*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7092*4bdc9457SAndroid Build Coastguard Worker } 7093*4bdc9457SAndroid Build Coastguard Worker } 7094*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 7095*4bdc9457SAndroid Build Coastguard Worker 7096*4bdc9457SAndroid Build Coastguard Worker 7097*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_eq_8)7098*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_eq_8) { 7099*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7100*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7101*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7102*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7103*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7104*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7105*4bdc9457SAndroid Build Coastguard Worker .m(1) 7106*4bdc9457SAndroid Build Coastguard Worker .n(16) 7107*4bdc9457SAndroid Build Coastguard Worker .k(8) 7108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7109*4bdc9457SAndroid Build Coastguard Worker } 7110*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,strided_cn)7111*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, strided_cn) { 7112*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7113*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7114*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7115*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7116*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7117*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7118*4bdc9457SAndroid Build Coastguard Worker .m(1) 7119*4bdc9457SAndroid Build Coastguard Worker .n(16) 7120*4bdc9457SAndroid Build Coastguard Worker .k(8) 7121*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7123*4bdc9457SAndroid Build Coastguard Worker } 7124*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_eq_8_strided_a)7125*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_eq_8_strided_a) { 7126*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7127*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7128*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7129*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7130*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7131*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7132*4bdc9457SAndroid Build Coastguard Worker .m(1) 7133*4bdc9457SAndroid Build Coastguard Worker .n(16) 7134*4bdc9457SAndroid Build Coastguard Worker .k(8) 7135*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 7136*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7137*4bdc9457SAndroid Build Coastguard Worker } 7138*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_eq_8_subtile)7139*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_eq_8_subtile) { 7140*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7141*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7142*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7143*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7144*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7145*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7146*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7147*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7148*4bdc9457SAndroid Build Coastguard Worker .m(m) 7149*4bdc9457SAndroid Build Coastguard Worker .n(n) 7150*4bdc9457SAndroid Build Coastguard Worker .k(8) 7151*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7152*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7153*4bdc9457SAndroid Build Coastguard Worker } 7154*4bdc9457SAndroid Build Coastguard Worker } 7155*4bdc9457SAndroid Build Coastguard Worker } 7156*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_eq_8_subtile_m)7157*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_eq_8_subtile_m) { 7158*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7159*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7160*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7161*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7162*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7163*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7164*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7165*4bdc9457SAndroid Build Coastguard Worker .m(m) 7166*4bdc9457SAndroid Build Coastguard Worker .n(16) 7167*4bdc9457SAndroid Build Coastguard Worker .k(8) 7168*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7169*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7170*4bdc9457SAndroid Build Coastguard Worker } 7171*4bdc9457SAndroid Build Coastguard Worker } 7172*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_eq_8_subtile_n)7173*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_eq_8_subtile_n) { 7174*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7175*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7176*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7177*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7178*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7179*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7180*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7181*4bdc9457SAndroid Build Coastguard Worker .m(1) 7182*4bdc9457SAndroid Build Coastguard Worker .n(n) 7183*4bdc9457SAndroid Build Coastguard Worker .k(8) 7184*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7185*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7186*4bdc9457SAndroid Build Coastguard Worker } 7187*4bdc9457SAndroid Build Coastguard Worker } 7188*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_lt_8)7189*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_lt_8) { 7190*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7191*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 7192*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7193*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7194*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7195*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7196*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7197*4bdc9457SAndroid Build Coastguard Worker .m(1) 7198*4bdc9457SAndroid Build Coastguard Worker .n(16) 7199*4bdc9457SAndroid Build Coastguard Worker .k(k) 7200*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7201*4bdc9457SAndroid Build Coastguard Worker } 7202*4bdc9457SAndroid Build Coastguard Worker } 7203*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_lt_8_strided_a)7204*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_lt_8_strided_a) { 7205*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7206*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 7207*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7208*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7209*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7210*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7211*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7212*4bdc9457SAndroid Build Coastguard Worker .m(1) 7213*4bdc9457SAndroid Build Coastguard Worker .n(16) 7214*4bdc9457SAndroid Build Coastguard Worker .k(k) 7215*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 7216*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7217*4bdc9457SAndroid Build Coastguard Worker } 7218*4bdc9457SAndroid Build Coastguard Worker } 7219*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_lt_8_subtile)7220*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_lt_8_subtile) { 7221*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7222*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 7223*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7224*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7225*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7226*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7227*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7228*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7229*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7230*4bdc9457SAndroid Build Coastguard Worker .m(m) 7231*4bdc9457SAndroid Build Coastguard Worker .n(n) 7232*4bdc9457SAndroid Build Coastguard Worker .k(k) 7233*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7234*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7235*4bdc9457SAndroid Build Coastguard Worker } 7236*4bdc9457SAndroid Build Coastguard Worker } 7237*4bdc9457SAndroid Build Coastguard Worker } 7238*4bdc9457SAndroid Build Coastguard Worker } 7239*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_gt_8)7240*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_gt_8) { 7241*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7242*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 7243*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7244*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7245*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7246*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7247*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7248*4bdc9457SAndroid Build Coastguard Worker .m(1) 7249*4bdc9457SAndroid Build Coastguard Worker .n(16) 7250*4bdc9457SAndroid Build Coastguard Worker .k(k) 7251*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7252*4bdc9457SAndroid Build Coastguard Worker } 7253*4bdc9457SAndroid Build Coastguard Worker } 7254*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_gt_8_strided_a)7255*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_gt_8_strided_a) { 7256*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7257*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 7258*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7259*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7260*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7261*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7262*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7263*4bdc9457SAndroid Build Coastguard Worker .m(1) 7264*4bdc9457SAndroid Build Coastguard Worker .n(16) 7265*4bdc9457SAndroid Build Coastguard Worker .k(k) 7266*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 7267*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7268*4bdc9457SAndroid Build Coastguard Worker } 7269*4bdc9457SAndroid Build Coastguard Worker } 7270*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_gt_8_subtile)7271*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_gt_8_subtile) { 7272*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7273*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 7274*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7275*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7276*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7277*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7278*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7279*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7280*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7281*4bdc9457SAndroid Build Coastguard Worker .m(m) 7282*4bdc9457SAndroid Build Coastguard Worker .n(n) 7283*4bdc9457SAndroid Build Coastguard Worker .k(k) 7284*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7285*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7286*4bdc9457SAndroid Build Coastguard Worker } 7287*4bdc9457SAndroid Build Coastguard Worker } 7288*4bdc9457SAndroid Build Coastguard Worker } 7289*4bdc9457SAndroid Build Coastguard Worker } 7290*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_div_8)7291*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_div_8) { 7292*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7293*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 7294*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7295*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7296*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7297*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7298*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7299*4bdc9457SAndroid Build Coastguard Worker .m(1) 7300*4bdc9457SAndroid Build Coastguard Worker .n(16) 7301*4bdc9457SAndroid Build Coastguard Worker .k(k) 7302*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7303*4bdc9457SAndroid Build Coastguard Worker } 7304*4bdc9457SAndroid Build Coastguard Worker } 7305*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_div_8_strided_a)7306*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_div_8_strided_a) { 7307*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7308*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 7309*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7310*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7311*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7312*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7313*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7314*4bdc9457SAndroid Build Coastguard Worker .m(1) 7315*4bdc9457SAndroid Build Coastguard Worker .n(16) 7316*4bdc9457SAndroid Build Coastguard Worker .k(k) 7317*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 7318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7319*4bdc9457SAndroid Build Coastguard Worker } 7320*4bdc9457SAndroid Build Coastguard Worker } 7321*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,k_div_8_subtile)7322*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, k_div_8_subtile) { 7323*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7324*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 7325*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7326*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7327*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7328*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7329*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7330*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7331*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7332*4bdc9457SAndroid Build Coastguard Worker .m(m) 7333*4bdc9457SAndroid Build Coastguard Worker .n(n) 7334*4bdc9457SAndroid Build Coastguard Worker .k(k) 7335*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7336*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7337*4bdc9457SAndroid Build Coastguard Worker } 7338*4bdc9457SAndroid Build Coastguard Worker } 7339*4bdc9457SAndroid Build Coastguard Worker } 7340*4bdc9457SAndroid Build Coastguard Worker } 7341*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,n_gt_16)7342*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, n_gt_16) { 7343*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7344*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7345*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7346*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7347*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7348*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7349*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7350*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7351*4bdc9457SAndroid Build Coastguard Worker .m(1) 7352*4bdc9457SAndroid Build Coastguard Worker .n(n) 7353*4bdc9457SAndroid Build Coastguard Worker .k(k) 7354*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7355*4bdc9457SAndroid Build Coastguard Worker } 7356*4bdc9457SAndroid Build Coastguard Worker } 7357*4bdc9457SAndroid Build Coastguard Worker } 7358*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,n_gt_16_strided_cn)7359*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, n_gt_16_strided_cn) { 7360*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7361*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7362*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7363*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7364*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7365*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7366*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7367*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7368*4bdc9457SAndroid Build Coastguard Worker .m(1) 7369*4bdc9457SAndroid Build Coastguard Worker .n(n) 7370*4bdc9457SAndroid Build Coastguard Worker .k(k) 7371*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7372*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7373*4bdc9457SAndroid Build Coastguard Worker } 7374*4bdc9457SAndroid Build Coastguard Worker } 7375*4bdc9457SAndroid Build Coastguard Worker } 7376*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,n_gt_16_strided_a)7377*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, n_gt_16_strided_a) { 7378*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7379*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7380*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7381*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7382*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7383*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7384*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7385*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7386*4bdc9457SAndroid Build Coastguard Worker .m(1) 7387*4bdc9457SAndroid Build Coastguard Worker .n(n) 7388*4bdc9457SAndroid Build Coastguard Worker .k(k) 7389*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 7390*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7391*4bdc9457SAndroid Build Coastguard Worker } 7392*4bdc9457SAndroid Build Coastguard Worker } 7393*4bdc9457SAndroid Build Coastguard Worker } 7394*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,n_gt_16_subtile)7395*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, n_gt_16_subtile) { 7396*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7397*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7398*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7399*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7400*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7401*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7402*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7403*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7404*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7405*4bdc9457SAndroid Build Coastguard Worker .m(m) 7406*4bdc9457SAndroid Build Coastguard Worker .n(n) 7407*4bdc9457SAndroid Build Coastguard Worker .k(k) 7408*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7409*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7410*4bdc9457SAndroid Build Coastguard Worker } 7411*4bdc9457SAndroid Build Coastguard Worker } 7412*4bdc9457SAndroid Build Coastguard Worker } 7413*4bdc9457SAndroid Build Coastguard Worker } 7414*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,n_div_16)7415*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, n_div_16) { 7416*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7417*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7418*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7419*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7420*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7421*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7422*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7423*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7424*4bdc9457SAndroid Build Coastguard Worker .m(1) 7425*4bdc9457SAndroid Build Coastguard Worker .n(n) 7426*4bdc9457SAndroid Build Coastguard Worker .k(k) 7427*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7428*4bdc9457SAndroid Build Coastguard Worker } 7429*4bdc9457SAndroid Build Coastguard Worker } 7430*4bdc9457SAndroid Build Coastguard Worker } 7431*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,n_div_16_strided_cn)7432*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, n_div_16_strided_cn) { 7433*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7434*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7435*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7436*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7437*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7438*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7439*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7440*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7441*4bdc9457SAndroid Build Coastguard Worker .m(1) 7442*4bdc9457SAndroid Build Coastguard Worker .n(n) 7443*4bdc9457SAndroid Build Coastguard Worker .k(k) 7444*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7445*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7446*4bdc9457SAndroid Build Coastguard Worker } 7447*4bdc9457SAndroid Build Coastguard Worker } 7448*4bdc9457SAndroid Build Coastguard Worker } 7449*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,n_div_16_strided_a)7450*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, n_div_16_strided_a) { 7451*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7452*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7453*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7454*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7455*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7456*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7457*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7458*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7459*4bdc9457SAndroid Build Coastguard Worker .m(1) 7460*4bdc9457SAndroid Build Coastguard Worker .n(n) 7461*4bdc9457SAndroid Build Coastguard Worker .k(k) 7462*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 7463*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7464*4bdc9457SAndroid Build Coastguard Worker } 7465*4bdc9457SAndroid Build Coastguard Worker } 7466*4bdc9457SAndroid Build Coastguard Worker } 7467*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,n_div_16_subtile)7468*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, n_div_16_subtile) { 7469*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7470*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7471*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7472*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7473*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7474*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7475*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7476*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7477*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7478*4bdc9457SAndroid Build Coastguard Worker .m(m) 7479*4bdc9457SAndroid Build Coastguard Worker .n(n) 7480*4bdc9457SAndroid Build Coastguard Worker .k(k) 7481*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7482*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7483*4bdc9457SAndroid Build Coastguard Worker } 7484*4bdc9457SAndroid Build Coastguard Worker } 7485*4bdc9457SAndroid Build Coastguard Worker } 7486*4bdc9457SAndroid Build Coastguard Worker } 7487*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,strided_cm_subtile)7488*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, strided_cm_subtile) { 7489*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7490*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7491*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7492*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7493*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7494*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7495*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7496*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7497*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7498*4bdc9457SAndroid Build Coastguard Worker .m(m) 7499*4bdc9457SAndroid Build Coastguard Worker .n(n) 7500*4bdc9457SAndroid Build Coastguard Worker .k(k) 7501*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 7502*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7503*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7504*4bdc9457SAndroid Build Coastguard Worker } 7505*4bdc9457SAndroid Build Coastguard Worker } 7506*4bdc9457SAndroid Build Coastguard Worker } 7507*4bdc9457SAndroid Build Coastguard Worker } 7508*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,qmin)7509*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, qmin) { 7510*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7511*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7512*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7513*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7514*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7515*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7516*4bdc9457SAndroid Build Coastguard Worker .m(1) 7517*4bdc9457SAndroid Build Coastguard Worker .n(16) 7518*4bdc9457SAndroid Build Coastguard Worker .k(8) 7519*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7520*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7521*4bdc9457SAndroid Build Coastguard Worker } 7522*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,qmax)7523*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, qmax) { 7524*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7525*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7526*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7527*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7528*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7529*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7530*4bdc9457SAndroid Build Coastguard Worker .m(1) 7531*4bdc9457SAndroid Build Coastguard Worker .n(16) 7532*4bdc9457SAndroid Build Coastguard Worker .k(8) 7533*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7534*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7535*4bdc9457SAndroid Build Coastguard Worker } 7536*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,strided_cm)7537*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, strided_cm) { 7538*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7539*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7540*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7541*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7542*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7543*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7544*4bdc9457SAndroid Build Coastguard Worker .m(1) 7545*4bdc9457SAndroid Build Coastguard Worker .n(16) 7546*4bdc9457SAndroid Build Coastguard Worker .k(8) 7547*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 7548*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7549*4bdc9457SAndroid Build Coastguard Worker } 7550*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,no_a_zero_point)7551*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, no_a_zero_point) { 7552*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7553*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7554*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7555*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7556*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7557*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7558*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7559*4bdc9457SAndroid Build Coastguard Worker .m(1) 7560*4bdc9457SAndroid Build Coastguard Worker .n(16) 7561*4bdc9457SAndroid Build Coastguard Worker .k(k) 7562*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 7563*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7564*4bdc9457SAndroid Build Coastguard Worker } 7565*4bdc9457SAndroid Build Coastguard Worker } 7566*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,no_b_zero_point)7567*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, no_b_zero_point) { 7568*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7569*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7570*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7571*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7572*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7573*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7574*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7575*4bdc9457SAndroid Build Coastguard Worker .m(1) 7576*4bdc9457SAndroid Build Coastguard Worker .n(16) 7577*4bdc9457SAndroid Build Coastguard Worker .k(k) 7578*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 7579*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7580*4bdc9457SAndroid Build Coastguard Worker } 7581*4bdc9457SAndroid Build Coastguard Worker } 7582*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT,no_zero_point)7583*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X16C4__NEONDOT, no_zero_point) { 7584*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7585*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7586*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7587*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7588*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7589*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7590*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7591*4bdc9457SAndroid Build Coastguard Worker .m(1) 7592*4bdc9457SAndroid Build Coastguard Worker .n(16) 7593*4bdc9457SAndroid Build Coastguard Worker .k(k) 7594*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 7595*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 7596*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7597*4bdc9457SAndroid Build Coastguard Worker } 7598*4bdc9457SAndroid Build Coastguard Worker } 7599*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) 7600*4bdc9457SAndroid Build Coastguard Worker 7601*4bdc9457SAndroid Build Coastguard Worker 7602*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_eq_8)7603*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_eq_8) { 7604*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7605*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7606*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7607*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7608*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7609*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7610*4bdc9457SAndroid Build Coastguard Worker .m(1) 7611*4bdc9457SAndroid Build Coastguard Worker .n(32) 7612*4bdc9457SAndroid Build Coastguard Worker .k(8) 7613*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7614*4bdc9457SAndroid Build Coastguard Worker } 7615*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,strided_cn)7616*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, strided_cn) { 7617*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7618*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7619*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7620*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7621*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7622*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7623*4bdc9457SAndroid Build Coastguard Worker .m(1) 7624*4bdc9457SAndroid Build Coastguard Worker .n(32) 7625*4bdc9457SAndroid Build Coastguard Worker .k(8) 7626*4bdc9457SAndroid Build Coastguard Worker .cn_stride(37) 7627*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7628*4bdc9457SAndroid Build Coastguard Worker } 7629*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_eq_8_strided_a)7630*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_eq_8_strided_a) { 7631*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7632*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7633*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7634*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7635*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7636*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7637*4bdc9457SAndroid Build Coastguard Worker .m(1) 7638*4bdc9457SAndroid Build Coastguard Worker .n(32) 7639*4bdc9457SAndroid Build Coastguard Worker .k(8) 7640*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 7641*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7642*4bdc9457SAndroid Build Coastguard Worker } 7643*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_eq_8_subtile)7644*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_eq_8_subtile) { 7645*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7646*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 32; n++) { 7647*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7648*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7649*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7650*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7651*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7652*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7653*4bdc9457SAndroid Build Coastguard Worker .m(m) 7654*4bdc9457SAndroid Build Coastguard Worker .n(n) 7655*4bdc9457SAndroid Build Coastguard Worker .k(8) 7656*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7657*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7658*4bdc9457SAndroid Build Coastguard Worker } 7659*4bdc9457SAndroid Build Coastguard Worker } 7660*4bdc9457SAndroid Build Coastguard Worker } 7661*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_eq_8_subtile_m)7662*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_eq_8_subtile_m) { 7663*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7664*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7665*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7666*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7667*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7668*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7669*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7670*4bdc9457SAndroid Build Coastguard Worker .m(m) 7671*4bdc9457SAndroid Build Coastguard Worker .n(32) 7672*4bdc9457SAndroid Build Coastguard Worker .k(8) 7673*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7674*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7675*4bdc9457SAndroid Build Coastguard Worker } 7676*4bdc9457SAndroid Build Coastguard Worker } 7677*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_eq_8_subtile_n)7678*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_eq_8_subtile_n) { 7679*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7680*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 32; n++) { 7681*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7682*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7683*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7684*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7685*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7686*4bdc9457SAndroid Build Coastguard Worker .m(1) 7687*4bdc9457SAndroid Build Coastguard Worker .n(n) 7688*4bdc9457SAndroid Build Coastguard Worker .k(8) 7689*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7691*4bdc9457SAndroid Build Coastguard Worker } 7692*4bdc9457SAndroid Build Coastguard Worker } 7693*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_lt_8)7694*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_lt_8) { 7695*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7696*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 7697*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7698*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7699*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7700*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7701*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7702*4bdc9457SAndroid Build Coastguard Worker .m(1) 7703*4bdc9457SAndroid Build Coastguard Worker .n(32) 7704*4bdc9457SAndroid Build Coastguard Worker .k(k) 7705*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7706*4bdc9457SAndroid Build Coastguard Worker } 7707*4bdc9457SAndroid Build Coastguard Worker } 7708*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_lt_8_strided_a)7709*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_lt_8_strided_a) { 7710*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7711*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 7712*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7713*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7714*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7715*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7716*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7717*4bdc9457SAndroid Build Coastguard Worker .m(1) 7718*4bdc9457SAndroid Build Coastguard Worker .n(32) 7719*4bdc9457SAndroid Build Coastguard Worker .k(k) 7720*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 7721*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7722*4bdc9457SAndroid Build Coastguard Worker } 7723*4bdc9457SAndroid Build Coastguard Worker } 7724*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_lt_8_subtile)7725*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_lt_8_subtile) { 7726*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7727*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 7728*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 32; n++) { 7729*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7730*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7731*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7732*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7733*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7734*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7735*4bdc9457SAndroid Build Coastguard Worker .m(m) 7736*4bdc9457SAndroid Build Coastguard Worker .n(n) 7737*4bdc9457SAndroid Build Coastguard Worker .k(k) 7738*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7739*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7740*4bdc9457SAndroid Build Coastguard Worker } 7741*4bdc9457SAndroid Build Coastguard Worker } 7742*4bdc9457SAndroid Build Coastguard Worker } 7743*4bdc9457SAndroid Build Coastguard Worker } 7744*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_gt_8)7745*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_gt_8) { 7746*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7747*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 7748*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7749*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7750*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7751*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7752*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7753*4bdc9457SAndroid Build Coastguard Worker .m(1) 7754*4bdc9457SAndroid Build Coastguard Worker .n(32) 7755*4bdc9457SAndroid Build Coastguard Worker .k(k) 7756*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7757*4bdc9457SAndroid Build Coastguard Worker } 7758*4bdc9457SAndroid Build Coastguard Worker } 7759*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_gt_8_strided_a)7760*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_gt_8_strided_a) { 7761*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7762*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 7763*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7764*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7765*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7766*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7767*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7768*4bdc9457SAndroid Build Coastguard Worker .m(1) 7769*4bdc9457SAndroid Build Coastguard Worker .n(32) 7770*4bdc9457SAndroid Build Coastguard Worker .k(k) 7771*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 7772*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7773*4bdc9457SAndroid Build Coastguard Worker } 7774*4bdc9457SAndroid Build Coastguard Worker } 7775*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_gt_8_subtile)7776*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_gt_8_subtile) { 7777*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7778*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 7779*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 32; n++) { 7780*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7781*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7782*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7783*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7784*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7785*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7786*4bdc9457SAndroid Build Coastguard Worker .m(m) 7787*4bdc9457SAndroid Build Coastguard Worker .n(n) 7788*4bdc9457SAndroid Build Coastguard Worker .k(k) 7789*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7790*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7791*4bdc9457SAndroid Build Coastguard Worker } 7792*4bdc9457SAndroid Build Coastguard Worker } 7793*4bdc9457SAndroid Build Coastguard Worker } 7794*4bdc9457SAndroid Build Coastguard Worker } 7795*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_div_8)7796*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_div_8) { 7797*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7798*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 7799*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7800*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7801*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7802*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7803*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7804*4bdc9457SAndroid Build Coastguard Worker .m(1) 7805*4bdc9457SAndroid Build Coastguard Worker .n(32) 7806*4bdc9457SAndroid Build Coastguard Worker .k(k) 7807*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7808*4bdc9457SAndroid Build Coastguard Worker } 7809*4bdc9457SAndroid Build Coastguard Worker } 7810*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_div_8_strided_a)7811*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_div_8_strided_a) { 7812*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7813*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 7814*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7815*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7816*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7817*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7818*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7819*4bdc9457SAndroid Build Coastguard Worker .m(1) 7820*4bdc9457SAndroid Build Coastguard Worker .n(32) 7821*4bdc9457SAndroid Build Coastguard Worker .k(k) 7822*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 7823*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7824*4bdc9457SAndroid Build Coastguard Worker } 7825*4bdc9457SAndroid Build Coastguard Worker } 7826*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,k_div_8_subtile)7827*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, k_div_8_subtile) { 7828*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7829*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 7830*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 32; n++) { 7831*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7832*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7833*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7834*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7835*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7836*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7837*4bdc9457SAndroid Build Coastguard Worker .m(m) 7838*4bdc9457SAndroid Build Coastguard Worker .n(n) 7839*4bdc9457SAndroid Build Coastguard Worker .k(k) 7840*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7841*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7842*4bdc9457SAndroid Build Coastguard Worker } 7843*4bdc9457SAndroid Build Coastguard Worker } 7844*4bdc9457SAndroid Build Coastguard Worker } 7845*4bdc9457SAndroid Build Coastguard Worker } 7846*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,n_gt_32)7847*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, n_gt_32) { 7848*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7849*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 33; n < 64; n++) { 7850*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7851*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7852*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7853*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7854*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7855*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7856*4bdc9457SAndroid Build Coastguard Worker .m(1) 7857*4bdc9457SAndroid Build Coastguard Worker .n(n) 7858*4bdc9457SAndroid Build Coastguard Worker .k(k) 7859*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7860*4bdc9457SAndroid Build Coastguard Worker } 7861*4bdc9457SAndroid Build Coastguard Worker } 7862*4bdc9457SAndroid Build Coastguard Worker } 7863*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,n_gt_32_strided_cn)7864*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, n_gt_32_strided_cn) { 7865*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7866*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 33; n < 64; n++) { 7867*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7868*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7869*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7870*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7871*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7872*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7873*4bdc9457SAndroid Build Coastguard Worker .m(1) 7874*4bdc9457SAndroid Build Coastguard Worker .n(n) 7875*4bdc9457SAndroid Build Coastguard Worker .k(k) 7876*4bdc9457SAndroid Build Coastguard Worker .cn_stride(37) 7877*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7878*4bdc9457SAndroid Build Coastguard Worker } 7879*4bdc9457SAndroid Build Coastguard Worker } 7880*4bdc9457SAndroid Build Coastguard Worker } 7881*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,n_gt_32_strided_a)7882*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, n_gt_32_strided_a) { 7883*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7884*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 33; n < 64; n++) { 7885*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7886*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7887*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7888*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7889*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7890*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7891*4bdc9457SAndroid Build Coastguard Worker .m(1) 7892*4bdc9457SAndroid Build Coastguard Worker .n(n) 7893*4bdc9457SAndroid Build Coastguard Worker .k(k) 7894*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 7895*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7896*4bdc9457SAndroid Build Coastguard Worker } 7897*4bdc9457SAndroid Build Coastguard Worker } 7898*4bdc9457SAndroid Build Coastguard Worker } 7899*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,n_gt_32_subtile)7900*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, n_gt_32_subtile) { 7901*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7902*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 33; n < 64; n++) { 7903*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7904*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7905*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7906*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7907*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7908*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7909*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7910*4bdc9457SAndroid Build Coastguard Worker .m(m) 7911*4bdc9457SAndroid Build Coastguard Worker .n(n) 7912*4bdc9457SAndroid Build Coastguard Worker .k(k) 7913*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7914*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7915*4bdc9457SAndroid Build Coastguard Worker } 7916*4bdc9457SAndroid Build Coastguard Worker } 7917*4bdc9457SAndroid Build Coastguard Worker } 7918*4bdc9457SAndroid Build Coastguard Worker } 7919*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,n_div_32)7920*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, n_div_32) { 7921*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7922*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 64; n <= 96; n += 32) { 7923*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7924*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7925*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7926*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7927*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7928*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7929*4bdc9457SAndroid Build Coastguard Worker .m(1) 7930*4bdc9457SAndroid Build Coastguard Worker .n(n) 7931*4bdc9457SAndroid Build Coastguard Worker .k(k) 7932*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7933*4bdc9457SAndroid Build Coastguard Worker } 7934*4bdc9457SAndroid Build Coastguard Worker } 7935*4bdc9457SAndroid Build Coastguard Worker } 7936*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,n_div_32_strided_cn)7937*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, n_div_32_strided_cn) { 7938*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7939*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 64; n <= 96; n += 32) { 7940*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7941*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7942*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7943*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7944*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7945*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7946*4bdc9457SAndroid Build Coastguard Worker .m(1) 7947*4bdc9457SAndroid Build Coastguard Worker .n(n) 7948*4bdc9457SAndroid Build Coastguard Worker .k(k) 7949*4bdc9457SAndroid Build Coastguard Worker .cn_stride(37) 7950*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7951*4bdc9457SAndroid Build Coastguard Worker } 7952*4bdc9457SAndroid Build Coastguard Worker } 7953*4bdc9457SAndroid Build Coastguard Worker } 7954*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,n_div_32_strided_a)7955*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, n_div_32_strided_a) { 7956*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7957*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 64; n <= 96; n += 32) { 7958*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7959*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7960*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7961*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7962*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7963*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7964*4bdc9457SAndroid Build Coastguard Worker .m(1) 7965*4bdc9457SAndroid Build Coastguard Worker .n(n) 7966*4bdc9457SAndroid Build Coastguard Worker .k(k) 7967*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 7968*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7969*4bdc9457SAndroid Build Coastguard Worker } 7970*4bdc9457SAndroid Build Coastguard Worker } 7971*4bdc9457SAndroid Build Coastguard Worker } 7972*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,n_div_32_subtile)7973*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, n_div_32_subtile) { 7974*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7975*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 64; n <= 96; n += 32) { 7976*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7977*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7978*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7979*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7980*4bdc9457SAndroid Build Coastguard Worker .nr(32) 7981*4bdc9457SAndroid Build Coastguard Worker .kr(4) 7982*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7983*4bdc9457SAndroid Build Coastguard Worker .m(m) 7984*4bdc9457SAndroid Build Coastguard Worker .n(n) 7985*4bdc9457SAndroid Build Coastguard Worker .k(k) 7986*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7987*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 7988*4bdc9457SAndroid Build Coastguard Worker } 7989*4bdc9457SAndroid Build Coastguard Worker } 7990*4bdc9457SAndroid Build Coastguard Worker } 7991*4bdc9457SAndroid Build Coastguard Worker } 7992*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,strided_cm_subtile)7993*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, strided_cm_subtile) { 7994*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 7995*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 7996*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 32; n++) { 7997*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 7998*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7999*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8000*4bdc9457SAndroid Build Coastguard Worker .nr(32) 8001*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8002*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8003*4bdc9457SAndroid Build Coastguard Worker .m(m) 8004*4bdc9457SAndroid Build Coastguard Worker .n(n) 8005*4bdc9457SAndroid Build Coastguard Worker .k(k) 8006*4bdc9457SAndroid Build Coastguard Worker .cm_stride(37) 8007*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8008*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8009*4bdc9457SAndroid Build Coastguard Worker } 8010*4bdc9457SAndroid Build Coastguard Worker } 8011*4bdc9457SAndroid Build Coastguard Worker } 8012*4bdc9457SAndroid Build Coastguard Worker } 8013*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,qmin)8014*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, qmin) { 8015*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8016*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8017*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8018*4bdc9457SAndroid Build Coastguard Worker .nr(32) 8019*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8020*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8021*4bdc9457SAndroid Build Coastguard Worker .m(1) 8022*4bdc9457SAndroid Build Coastguard Worker .n(32) 8023*4bdc9457SAndroid Build Coastguard Worker .k(8) 8024*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8025*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8026*4bdc9457SAndroid Build Coastguard Worker } 8027*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,qmax)8028*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, qmax) { 8029*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8030*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8031*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8032*4bdc9457SAndroid Build Coastguard Worker .nr(32) 8033*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8034*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8035*4bdc9457SAndroid Build Coastguard Worker .m(1) 8036*4bdc9457SAndroid Build Coastguard Worker .n(32) 8037*4bdc9457SAndroid Build Coastguard Worker .k(8) 8038*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8039*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8040*4bdc9457SAndroid Build Coastguard Worker } 8041*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,strided_cm)8042*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, strided_cm) { 8043*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8044*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8045*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8046*4bdc9457SAndroid Build Coastguard Worker .nr(32) 8047*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8048*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8049*4bdc9457SAndroid Build Coastguard Worker .m(1) 8050*4bdc9457SAndroid Build Coastguard Worker .n(32) 8051*4bdc9457SAndroid Build Coastguard Worker .k(8) 8052*4bdc9457SAndroid Build Coastguard Worker .cm_stride(37) 8053*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8054*4bdc9457SAndroid Build Coastguard Worker } 8055*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,no_a_zero_point)8056*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, no_a_zero_point) { 8057*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8058*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8059*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8060*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8061*4bdc9457SAndroid Build Coastguard Worker .nr(32) 8062*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8063*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8064*4bdc9457SAndroid Build Coastguard Worker .m(1) 8065*4bdc9457SAndroid Build Coastguard Worker .n(32) 8066*4bdc9457SAndroid Build Coastguard Worker .k(k) 8067*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 8068*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8069*4bdc9457SAndroid Build Coastguard Worker } 8070*4bdc9457SAndroid Build Coastguard Worker } 8071*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,no_b_zero_point)8072*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, no_b_zero_point) { 8073*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8074*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8075*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8076*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8077*4bdc9457SAndroid Build Coastguard Worker .nr(32) 8078*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8079*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8080*4bdc9457SAndroid Build Coastguard Worker .m(1) 8081*4bdc9457SAndroid Build Coastguard Worker .n(32) 8082*4bdc9457SAndroid Build Coastguard Worker .k(k) 8083*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 8084*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8085*4bdc9457SAndroid Build Coastguard Worker } 8086*4bdc9457SAndroid Build Coastguard Worker } 8087*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT,no_zero_point)8088*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_1X32C4__NEONDOT, no_zero_point) { 8089*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8090*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8091*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8092*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8093*4bdc9457SAndroid Build Coastguard Worker .nr(32) 8094*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8095*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8096*4bdc9457SAndroid Build Coastguard Worker .m(1) 8097*4bdc9457SAndroid Build Coastguard Worker .n(32) 8098*4bdc9457SAndroid Build Coastguard Worker .k(k) 8099*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 8100*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 8101*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_1x32c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8102*4bdc9457SAndroid Build Coastguard Worker } 8103*4bdc9457SAndroid Build Coastguard Worker } 8104*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) 8105*4bdc9457SAndroid Build Coastguard Worker 8106*4bdc9457SAndroid Build Coastguard Worker 8107*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_eq_8)8108*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_eq_8) { 8109*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8110*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8111*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8112*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8113*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8114*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8115*4bdc9457SAndroid Build Coastguard Worker .m(2) 8116*4bdc9457SAndroid Build Coastguard Worker .n(8) 8117*4bdc9457SAndroid Build Coastguard Worker .k(8) 8118*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8119*4bdc9457SAndroid Build Coastguard Worker } 8120*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,strided_cn)8121*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, strided_cn) { 8122*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8123*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8124*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8125*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8126*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8127*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8128*4bdc9457SAndroid Build Coastguard Worker .m(2) 8129*4bdc9457SAndroid Build Coastguard Worker .n(8) 8130*4bdc9457SAndroid Build Coastguard Worker .k(8) 8131*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8133*4bdc9457SAndroid Build Coastguard Worker } 8134*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_eq_8_strided_a)8135*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_eq_8_strided_a) { 8136*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8137*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8138*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8139*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8140*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8141*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8142*4bdc9457SAndroid Build Coastguard Worker .m(2) 8143*4bdc9457SAndroid Build Coastguard Worker .n(8) 8144*4bdc9457SAndroid Build Coastguard Worker .k(8) 8145*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 8146*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8147*4bdc9457SAndroid Build Coastguard Worker } 8148*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_eq_8_subtile)8149*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_eq_8_subtile) { 8150*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8151*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8152*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 8153*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8154*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8155*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8156*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8157*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8158*4bdc9457SAndroid Build Coastguard Worker .m(m) 8159*4bdc9457SAndroid Build Coastguard Worker .n(n) 8160*4bdc9457SAndroid Build Coastguard Worker .k(8) 8161*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8162*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8163*4bdc9457SAndroid Build Coastguard Worker } 8164*4bdc9457SAndroid Build Coastguard Worker } 8165*4bdc9457SAndroid Build Coastguard Worker } 8166*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_eq_8_subtile_m)8167*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_eq_8_subtile_m) { 8168*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8169*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 8170*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8171*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8172*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8173*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8174*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8175*4bdc9457SAndroid Build Coastguard Worker .m(m) 8176*4bdc9457SAndroid Build Coastguard Worker .n(8) 8177*4bdc9457SAndroid Build Coastguard Worker .k(8) 8178*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8179*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8180*4bdc9457SAndroid Build Coastguard Worker } 8181*4bdc9457SAndroid Build Coastguard Worker } 8182*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_eq_8_subtile_n)8183*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_eq_8_subtile_n) { 8184*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8185*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8186*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8187*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8188*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8189*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8190*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8191*4bdc9457SAndroid Build Coastguard Worker .m(2) 8192*4bdc9457SAndroid Build Coastguard Worker .n(n) 8193*4bdc9457SAndroid Build Coastguard Worker .k(8) 8194*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8195*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8196*4bdc9457SAndroid Build Coastguard Worker } 8197*4bdc9457SAndroid Build Coastguard Worker } 8198*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_lt_8)8199*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_lt_8) { 8200*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8201*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 8202*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8203*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8204*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8205*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8206*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8207*4bdc9457SAndroid Build Coastguard Worker .m(2) 8208*4bdc9457SAndroid Build Coastguard Worker .n(8) 8209*4bdc9457SAndroid Build Coastguard Worker .k(k) 8210*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8211*4bdc9457SAndroid Build Coastguard Worker } 8212*4bdc9457SAndroid Build Coastguard Worker } 8213*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_lt_8_strided_a)8214*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_lt_8_strided_a) { 8215*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8216*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 8217*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8218*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8219*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8220*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8221*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8222*4bdc9457SAndroid Build Coastguard Worker .m(2) 8223*4bdc9457SAndroid Build Coastguard Worker .n(8) 8224*4bdc9457SAndroid Build Coastguard Worker .k(k) 8225*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 8226*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8227*4bdc9457SAndroid Build Coastguard Worker } 8228*4bdc9457SAndroid Build Coastguard Worker } 8229*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_lt_8_subtile)8230*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_lt_8_subtile) { 8231*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8232*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 8233*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8234*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 8235*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8236*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8237*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8238*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8239*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8240*4bdc9457SAndroid Build Coastguard Worker .m(m) 8241*4bdc9457SAndroid Build Coastguard Worker .n(n) 8242*4bdc9457SAndroid Build Coastguard Worker .k(k) 8243*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8244*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8245*4bdc9457SAndroid Build Coastguard Worker } 8246*4bdc9457SAndroid Build Coastguard Worker } 8247*4bdc9457SAndroid Build Coastguard Worker } 8248*4bdc9457SAndroid Build Coastguard Worker } 8249*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_gt_8)8250*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_gt_8) { 8251*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8252*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 8253*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8254*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8255*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8256*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8257*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8258*4bdc9457SAndroid Build Coastguard Worker .m(2) 8259*4bdc9457SAndroid Build Coastguard Worker .n(8) 8260*4bdc9457SAndroid Build Coastguard Worker .k(k) 8261*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8262*4bdc9457SAndroid Build Coastguard Worker } 8263*4bdc9457SAndroid Build Coastguard Worker } 8264*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_gt_8_strided_a)8265*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_gt_8_strided_a) { 8266*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8267*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 8268*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8269*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8270*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8271*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8272*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8273*4bdc9457SAndroid Build Coastguard Worker .m(2) 8274*4bdc9457SAndroid Build Coastguard Worker .n(8) 8275*4bdc9457SAndroid Build Coastguard Worker .k(k) 8276*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 8277*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8278*4bdc9457SAndroid Build Coastguard Worker } 8279*4bdc9457SAndroid Build Coastguard Worker } 8280*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_gt_8_subtile)8281*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_gt_8_subtile) { 8282*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8283*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 8284*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8285*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 8286*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8287*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8288*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8289*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8290*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8291*4bdc9457SAndroid Build Coastguard Worker .m(m) 8292*4bdc9457SAndroid Build Coastguard Worker .n(n) 8293*4bdc9457SAndroid Build Coastguard Worker .k(k) 8294*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8295*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8296*4bdc9457SAndroid Build Coastguard Worker } 8297*4bdc9457SAndroid Build Coastguard Worker } 8298*4bdc9457SAndroid Build Coastguard Worker } 8299*4bdc9457SAndroid Build Coastguard Worker } 8300*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_div_8)8301*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_div_8) { 8302*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8303*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 8304*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8305*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8306*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8307*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8308*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8309*4bdc9457SAndroid Build Coastguard Worker .m(2) 8310*4bdc9457SAndroid Build Coastguard Worker .n(8) 8311*4bdc9457SAndroid Build Coastguard Worker .k(k) 8312*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8313*4bdc9457SAndroid Build Coastguard Worker } 8314*4bdc9457SAndroid Build Coastguard Worker } 8315*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_div_8_strided_a)8316*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_div_8_strided_a) { 8317*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8318*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 8319*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8320*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8321*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8322*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8323*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8324*4bdc9457SAndroid Build Coastguard Worker .m(2) 8325*4bdc9457SAndroid Build Coastguard Worker .n(8) 8326*4bdc9457SAndroid Build Coastguard Worker .k(k) 8327*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 8328*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8329*4bdc9457SAndroid Build Coastguard Worker } 8330*4bdc9457SAndroid Build Coastguard Worker } 8331*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,k_div_8_subtile)8332*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, k_div_8_subtile) { 8333*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8334*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 8335*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8336*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 8337*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8338*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8339*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8340*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8341*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8342*4bdc9457SAndroid Build Coastguard Worker .m(m) 8343*4bdc9457SAndroid Build Coastguard Worker .n(n) 8344*4bdc9457SAndroid Build Coastguard Worker .k(k) 8345*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8346*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8347*4bdc9457SAndroid Build Coastguard Worker } 8348*4bdc9457SAndroid Build Coastguard Worker } 8349*4bdc9457SAndroid Build Coastguard Worker } 8350*4bdc9457SAndroid Build Coastguard Worker } 8351*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,n_gt_8)8352*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, n_gt_8) { 8353*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8354*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8355*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8356*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8357*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8358*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8359*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8360*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8361*4bdc9457SAndroid Build Coastguard Worker .m(2) 8362*4bdc9457SAndroid Build Coastguard Worker .n(n) 8363*4bdc9457SAndroid Build Coastguard Worker .k(k) 8364*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8365*4bdc9457SAndroid Build Coastguard Worker } 8366*4bdc9457SAndroid Build Coastguard Worker } 8367*4bdc9457SAndroid Build Coastguard Worker } 8368*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,n_gt_8_strided_cn)8369*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, n_gt_8_strided_cn) { 8370*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8371*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8372*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8373*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8374*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8375*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8376*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8377*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8378*4bdc9457SAndroid Build Coastguard Worker .m(2) 8379*4bdc9457SAndroid Build Coastguard Worker .n(n) 8380*4bdc9457SAndroid Build Coastguard Worker .k(k) 8381*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8382*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8383*4bdc9457SAndroid Build Coastguard Worker } 8384*4bdc9457SAndroid Build Coastguard Worker } 8385*4bdc9457SAndroid Build Coastguard Worker } 8386*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,n_gt_8_strided_a)8387*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, n_gt_8_strided_a) { 8388*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8389*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8390*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8391*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8392*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8393*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8394*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8395*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8396*4bdc9457SAndroid Build Coastguard Worker .m(2) 8397*4bdc9457SAndroid Build Coastguard Worker .n(n) 8398*4bdc9457SAndroid Build Coastguard Worker .k(k) 8399*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 8400*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8401*4bdc9457SAndroid Build Coastguard Worker } 8402*4bdc9457SAndroid Build Coastguard Worker } 8403*4bdc9457SAndroid Build Coastguard Worker } 8404*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,n_gt_8_subtile)8405*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, n_gt_8_subtile) { 8406*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8407*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8408*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8409*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 8410*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8411*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8412*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8413*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8414*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8415*4bdc9457SAndroid Build Coastguard Worker .m(m) 8416*4bdc9457SAndroid Build Coastguard Worker .n(n) 8417*4bdc9457SAndroid Build Coastguard Worker .k(k) 8418*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8419*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8420*4bdc9457SAndroid Build Coastguard Worker } 8421*4bdc9457SAndroid Build Coastguard Worker } 8422*4bdc9457SAndroid Build Coastguard Worker } 8423*4bdc9457SAndroid Build Coastguard Worker } 8424*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,n_div_8)8425*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, n_div_8) { 8426*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8427*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8428*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8429*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8430*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8431*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8432*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8433*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8434*4bdc9457SAndroid Build Coastguard Worker .m(2) 8435*4bdc9457SAndroid Build Coastguard Worker .n(n) 8436*4bdc9457SAndroid Build Coastguard Worker .k(k) 8437*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8438*4bdc9457SAndroid Build Coastguard Worker } 8439*4bdc9457SAndroid Build Coastguard Worker } 8440*4bdc9457SAndroid Build Coastguard Worker } 8441*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,n_div_8_strided_cn)8442*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, n_div_8_strided_cn) { 8443*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8444*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8445*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8446*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8447*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8448*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8449*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8450*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8451*4bdc9457SAndroid Build Coastguard Worker .m(2) 8452*4bdc9457SAndroid Build Coastguard Worker .n(n) 8453*4bdc9457SAndroid Build Coastguard Worker .k(k) 8454*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8455*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8456*4bdc9457SAndroid Build Coastguard Worker } 8457*4bdc9457SAndroid Build Coastguard Worker } 8458*4bdc9457SAndroid Build Coastguard Worker } 8459*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,n_div_8_strided_a)8460*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, n_div_8_strided_a) { 8461*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8462*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8463*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8464*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8465*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8466*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8467*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8468*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8469*4bdc9457SAndroid Build Coastguard Worker .m(2) 8470*4bdc9457SAndroid Build Coastguard Worker .n(n) 8471*4bdc9457SAndroid Build Coastguard Worker .k(k) 8472*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 8473*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8474*4bdc9457SAndroid Build Coastguard Worker } 8475*4bdc9457SAndroid Build Coastguard Worker } 8476*4bdc9457SAndroid Build Coastguard Worker } 8477*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,n_div_8_subtile)8478*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, n_div_8_subtile) { 8479*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8480*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8481*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8482*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 8483*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8484*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8485*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8486*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8487*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8488*4bdc9457SAndroid Build Coastguard Worker .m(m) 8489*4bdc9457SAndroid Build Coastguard Worker .n(n) 8490*4bdc9457SAndroid Build Coastguard Worker .k(k) 8491*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8493*4bdc9457SAndroid Build Coastguard Worker } 8494*4bdc9457SAndroid Build Coastguard Worker } 8495*4bdc9457SAndroid Build Coastguard Worker } 8496*4bdc9457SAndroid Build Coastguard Worker } 8497*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,strided_cm_subtile)8498*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, strided_cm_subtile) { 8499*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8500*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8501*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8502*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 2; m++) { 8503*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8504*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8505*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8506*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8507*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8508*4bdc9457SAndroid Build Coastguard Worker .m(m) 8509*4bdc9457SAndroid Build Coastguard Worker .n(n) 8510*4bdc9457SAndroid Build Coastguard Worker .k(k) 8511*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 8512*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8513*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8514*4bdc9457SAndroid Build Coastguard Worker } 8515*4bdc9457SAndroid Build Coastguard Worker } 8516*4bdc9457SAndroid Build Coastguard Worker } 8517*4bdc9457SAndroid Build Coastguard Worker } 8518*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,qmin)8519*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, qmin) { 8520*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8521*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8522*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8523*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8524*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8525*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8526*4bdc9457SAndroid Build Coastguard Worker .m(2) 8527*4bdc9457SAndroid Build Coastguard Worker .n(8) 8528*4bdc9457SAndroid Build Coastguard Worker .k(8) 8529*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8530*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8531*4bdc9457SAndroid Build Coastguard Worker } 8532*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,qmax)8533*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, qmax) { 8534*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8535*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8536*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8537*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8538*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8539*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8540*4bdc9457SAndroid Build Coastguard Worker .m(2) 8541*4bdc9457SAndroid Build Coastguard Worker .n(8) 8542*4bdc9457SAndroid Build Coastguard Worker .k(8) 8543*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8544*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8545*4bdc9457SAndroid Build Coastguard Worker } 8546*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,strided_cm)8547*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, strided_cm) { 8548*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8549*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8550*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8551*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8552*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8553*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8554*4bdc9457SAndroid Build Coastguard Worker .m(2) 8555*4bdc9457SAndroid Build Coastguard Worker .n(8) 8556*4bdc9457SAndroid Build Coastguard Worker .k(8) 8557*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 8558*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8559*4bdc9457SAndroid Build Coastguard Worker } 8560*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,no_a_zero_point)8561*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, no_a_zero_point) { 8562*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8563*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8564*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8565*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8566*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8567*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8568*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8569*4bdc9457SAndroid Build Coastguard Worker .m(2) 8570*4bdc9457SAndroid Build Coastguard Worker .n(8) 8571*4bdc9457SAndroid Build Coastguard Worker .k(k) 8572*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 8573*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8574*4bdc9457SAndroid Build Coastguard Worker } 8575*4bdc9457SAndroid Build Coastguard Worker } 8576*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,no_b_zero_point)8577*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, no_b_zero_point) { 8578*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8579*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8580*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8581*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8582*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8583*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8584*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8585*4bdc9457SAndroid Build Coastguard Worker .m(2) 8586*4bdc9457SAndroid Build Coastguard Worker .n(8) 8587*4bdc9457SAndroid Build Coastguard Worker .k(k) 8588*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 8589*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8590*4bdc9457SAndroid Build Coastguard Worker } 8591*4bdc9457SAndroid Build Coastguard Worker } 8592*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT,no_zero_point)8593*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_2X8C4__NEONDOT, no_zero_point) { 8594*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8595*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8596*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8597*4bdc9457SAndroid Build Coastguard Worker .mr(2) 8598*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8599*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8600*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8601*4bdc9457SAndroid Build Coastguard Worker .m(2) 8602*4bdc9457SAndroid Build Coastguard Worker .n(8) 8603*4bdc9457SAndroid Build Coastguard Worker .k(k) 8604*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 8605*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 8606*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_2x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8607*4bdc9457SAndroid Build Coastguard Worker } 8608*4bdc9457SAndroid Build Coastguard Worker } 8609*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) 8610*4bdc9457SAndroid Build Coastguard Worker 8611*4bdc9457SAndroid Build Coastguard Worker 8612*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_eq_8)8613*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_eq_8) { 8614*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8615*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8616*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8617*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8618*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8619*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8620*4bdc9457SAndroid Build Coastguard Worker .m(3) 8621*4bdc9457SAndroid Build Coastguard Worker .n(8) 8622*4bdc9457SAndroid Build Coastguard Worker .k(8) 8623*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8624*4bdc9457SAndroid Build Coastguard Worker } 8625*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,strided_cn)8626*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, strided_cn) { 8627*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8628*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8629*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8630*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8631*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8632*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8633*4bdc9457SAndroid Build Coastguard Worker .m(3) 8634*4bdc9457SAndroid Build Coastguard Worker .n(8) 8635*4bdc9457SAndroid Build Coastguard Worker .k(8) 8636*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8637*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8638*4bdc9457SAndroid Build Coastguard Worker } 8639*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_eq_8_strided_a)8640*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_eq_8_strided_a) { 8641*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8642*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8643*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8644*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8645*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8646*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8647*4bdc9457SAndroid Build Coastguard Worker .m(3) 8648*4bdc9457SAndroid Build Coastguard Worker .n(8) 8649*4bdc9457SAndroid Build Coastguard Worker .k(8) 8650*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 8651*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8652*4bdc9457SAndroid Build Coastguard Worker } 8653*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_eq_8_subtile)8654*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_eq_8_subtile) { 8655*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8656*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8657*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8658*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8659*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8660*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8661*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8662*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8663*4bdc9457SAndroid Build Coastguard Worker .m(m) 8664*4bdc9457SAndroid Build Coastguard Worker .n(n) 8665*4bdc9457SAndroid Build Coastguard Worker .k(8) 8666*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8667*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8668*4bdc9457SAndroid Build Coastguard Worker } 8669*4bdc9457SAndroid Build Coastguard Worker } 8670*4bdc9457SAndroid Build Coastguard Worker } 8671*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_eq_8_subtile_m)8672*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_eq_8_subtile_m) { 8673*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8674*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8675*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8676*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8677*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8678*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8679*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8680*4bdc9457SAndroid Build Coastguard Worker .m(m) 8681*4bdc9457SAndroid Build Coastguard Worker .n(8) 8682*4bdc9457SAndroid Build Coastguard Worker .k(8) 8683*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8684*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8685*4bdc9457SAndroid Build Coastguard Worker } 8686*4bdc9457SAndroid Build Coastguard Worker } 8687*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_eq_8_subtile_n)8688*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_eq_8_subtile_n) { 8689*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8690*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8691*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8692*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8693*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8694*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8695*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8696*4bdc9457SAndroid Build Coastguard Worker .m(3) 8697*4bdc9457SAndroid Build Coastguard Worker .n(n) 8698*4bdc9457SAndroid Build Coastguard Worker .k(8) 8699*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8700*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8701*4bdc9457SAndroid Build Coastguard Worker } 8702*4bdc9457SAndroid Build Coastguard Worker } 8703*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_lt_8)8704*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_lt_8) { 8705*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8706*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 8707*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8708*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8709*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8710*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8711*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8712*4bdc9457SAndroid Build Coastguard Worker .m(3) 8713*4bdc9457SAndroid Build Coastguard Worker .n(8) 8714*4bdc9457SAndroid Build Coastguard Worker .k(k) 8715*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8716*4bdc9457SAndroid Build Coastguard Worker } 8717*4bdc9457SAndroid Build Coastguard Worker } 8718*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_lt_8_strided_a)8719*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_lt_8_strided_a) { 8720*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8721*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 8722*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8723*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8724*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8725*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8726*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8727*4bdc9457SAndroid Build Coastguard Worker .m(3) 8728*4bdc9457SAndroid Build Coastguard Worker .n(8) 8729*4bdc9457SAndroid Build Coastguard Worker .k(k) 8730*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 8731*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8732*4bdc9457SAndroid Build Coastguard Worker } 8733*4bdc9457SAndroid Build Coastguard Worker } 8734*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_lt_8_subtile)8735*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_lt_8_subtile) { 8736*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8737*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 8738*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8739*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8740*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8741*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8742*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8743*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8744*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8745*4bdc9457SAndroid Build Coastguard Worker .m(m) 8746*4bdc9457SAndroid Build Coastguard Worker .n(n) 8747*4bdc9457SAndroid Build Coastguard Worker .k(k) 8748*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8749*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8750*4bdc9457SAndroid Build Coastguard Worker } 8751*4bdc9457SAndroid Build Coastguard Worker } 8752*4bdc9457SAndroid Build Coastguard Worker } 8753*4bdc9457SAndroid Build Coastguard Worker } 8754*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_gt_8)8755*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_gt_8) { 8756*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8757*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 8758*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8759*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8760*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8761*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8762*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8763*4bdc9457SAndroid Build Coastguard Worker .m(3) 8764*4bdc9457SAndroid Build Coastguard Worker .n(8) 8765*4bdc9457SAndroid Build Coastguard Worker .k(k) 8766*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8767*4bdc9457SAndroid Build Coastguard Worker } 8768*4bdc9457SAndroid Build Coastguard Worker } 8769*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_gt_8_strided_a)8770*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_gt_8_strided_a) { 8771*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8772*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 8773*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8774*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8775*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8776*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8777*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8778*4bdc9457SAndroid Build Coastguard Worker .m(3) 8779*4bdc9457SAndroid Build Coastguard Worker .n(8) 8780*4bdc9457SAndroid Build Coastguard Worker .k(k) 8781*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 8782*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8783*4bdc9457SAndroid Build Coastguard Worker } 8784*4bdc9457SAndroid Build Coastguard Worker } 8785*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_gt_8_subtile)8786*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_gt_8_subtile) { 8787*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8788*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 8789*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8790*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8791*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8792*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8793*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8794*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8795*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8796*4bdc9457SAndroid Build Coastguard Worker .m(m) 8797*4bdc9457SAndroid Build Coastguard Worker .n(n) 8798*4bdc9457SAndroid Build Coastguard Worker .k(k) 8799*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8800*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8801*4bdc9457SAndroid Build Coastguard Worker } 8802*4bdc9457SAndroid Build Coastguard Worker } 8803*4bdc9457SAndroid Build Coastguard Worker } 8804*4bdc9457SAndroid Build Coastguard Worker } 8805*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_div_8)8806*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_div_8) { 8807*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8808*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 8809*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8810*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8811*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8812*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8813*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8814*4bdc9457SAndroid Build Coastguard Worker .m(3) 8815*4bdc9457SAndroid Build Coastguard Worker .n(8) 8816*4bdc9457SAndroid Build Coastguard Worker .k(k) 8817*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8818*4bdc9457SAndroid Build Coastguard Worker } 8819*4bdc9457SAndroid Build Coastguard Worker } 8820*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_div_8_strided_a)8821*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_div_8_strided_a) { 8822*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8823*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 8824*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8825*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8826*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8827*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8828*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8829*4bdc9457SAndroid Build Coastguard Worker .m(3) 8830*4bdc9457SAndroid Build Coastguard Worker .n(8) 8831*4bdc9457SAndroid Build Coastguard Worker .k(k) 8832*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 8833*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8834*4bdc9457SAndroid Build Coastguard Worker } 8835*4bdc9457SAndroid Build Coastguard Worker } 8836*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,k_div_8_subtile)8837*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, k_div_8_subtile) { 8838*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8839*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 8840*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8841*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8842*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8843*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8844*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8845*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8846*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8847*4bdc9457SAndroid Build Coastguard Worker .m(m) 8848*4bdc9457SAndroid Build Coastguard Worker .n(n) 8849*4bdc9457SAndroid Build Coastguard Worker .k(k) 8850*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8851*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8852*4bdc9457SAndroid Build Coastguard Worker } 8853*4bdc9457SAndroid Build Coastguard Worker } 8854*4bdc9457SAndroid Build Coastguard Worker } 8855*4bdc9457SAndroid Build Coastguard Worker } 8856*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,n_gt_8)8857*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, n_gt_8) { 8858*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8859*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8860*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8861*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8862*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8863*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8864*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8865*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8866*4bdc9457SAndroid Build Coastguard Worker .m(3) 8867*4bdc9457SAndroid Build Coastguard Worker .n(n) 8868*4bdc9457SAndroid Build Coastguard Worker .k(k) 8869*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8870*4bdc9457SAndroid Build Coastguard Worker } 8871*4bdc9457SAndroid Build Coastguard Worker } 8872*4bdc9457SAndroid Build Coastguard Worker } 8873*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,n_gt_8_strided_cn)8874*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, n_gt_8_strided_cn) { 8875*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8876*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8877*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8878*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8879*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8880*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8881*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8882*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8883*4bdc9457SAndroid Build Coastguard Worker .m(3) 8884*4bdc9457SAndroid Build Coastguard Worker .n(n) 8885*4bdc9457SAndroid Build Coastguard Worker .k(k) 8886*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8887*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8888*4bdc9457SAndroid Build Coastguard Worker } 8889*4bdc9457SAndroid Build Coastguard Worker } 8890*4bdc9457SAndroid Build Coastguard Worker } 8891*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,n_gt_8_strided_a)8892*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, n_gt_8_strided_a) { 8893*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8894*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8895*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8896*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8897*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8898*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8899*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8900*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8901*4bdc9457SAndroid Build Coastguard Worker .m(3) 8902*4bdc9457SAndroid Build Coastguard Worker .n(n) 8903*4bdc9457SAndroid Build Coastguard Worker .k(k) 8904*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 8905*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8906*4bdc9457SAndroid Build Coastguard Worker } 8907*4bdc9457SAndroid Build Coastguard Worker } 8908*4bdc9457SAndroid Build Coastguard Worker } 8909*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,n_gt_8_subtile)8910*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, n_gt_8_subtile) { 8911*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8912*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8913*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8914*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8915*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8916*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8917*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8918*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8919*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8920*4bdc9457SAndroid Build Coastguard Worker .m(m) 8921*4bdc9457SAndroid Build Coastguard Worker .n(n) 8922*4bdc9457SAndroid Build Coastguard Worker .k(k) 8923*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8924*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8925*4bdc9457SAndroid Build Coastguard Worker } 8926*4bdc9457SAndroid Build Coastguard Worker } 8927*4bdc9457SAndroid Build Coastguard Worker } 8928*4bdc9457SAndroid Build Coastguard Worker } 8929*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,n_div_8)8930*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, n_div_8) { 8931*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8932*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8933*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8934*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8935*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8936*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8937*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8938*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8939*4bdc9457SAndroid Build Coastguard Worker .m(3) 8940*4bdc9457SAndroid Build Coastguard Worker .n(n) 8941*4bdc9457SAndroid Build Coastguard Worker .k(k) 8942*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8943*4bdc9457SAndroid Build Coastguard Worker } 8944*4bdc9457SAndroid Build Coastguard Worker } 8945*4bdc9457SAndroid Build Coastguard Worker } 8946*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,n_div_8_strided_cn)8947*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, n_div_8_strided_cn) { 8948*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8949*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8950*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8951*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8952*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8953*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8954*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8955*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8956*4bdc9457SAndroid Build Coastguard Worker .m(3) 8957*4bdc9457SAndroid Build Coastguard Worker .n(n) 8958*4bdc9457SAndroid Build Coastguard Worker .k(k) 8959*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8960*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8961*4bdc9457SAndroid Build Coastguard Worker } 8962*4bdc9457SAndroid Build Coastguard Worker } 8963*4bdc9457SAndroid Build Coastguard Worker } 8964*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,n_div_8_strided_a)8965*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, n_div_8_strided_a) { 8966*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8967*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8968*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8969*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8970*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8971*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8972*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8973*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8974*4bdc9457SAndroid Build Coastguard Worker .m(3) 8975*4bdc9457SAndroid Build Coastguard Worker .n(n) 8976*4bdc9457SAndroid Build Coastguard Worker .k(k) 8977*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 8978*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8979*4bdc9457SAndroid Build Coastguard Worker } 8980*4bdc9457SAndroid Build Coastguard Worker } 8981*4bdc9457SAndroid Build Coastguard Worker } 8982*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,n_div_8_subtile)8983*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, n_div_8_subtile) { 8984*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 8985*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8986*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 8987*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8988*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8989*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8990*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8991*4bdc9457SAndroid Build Coastguard Worker .kr(4) 8992*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8993*4bdc9457SAndroid Build Coastguard Worker .m(m) 8994*4bdc9457SAndroid Build Coastguard Worker .n(n) 8995*4bdc9457SAndroid Build Coastguard Worker .k(k) 8996*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8997*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 8998*4bdc9457SAndroid Build Coastguard Worker } 8999*4bdc9457SAndroid Build Coastguard Worker } 9000*4bdc9457SAndroid Build Coastguard Worker } 9001*4bdc9457SAndroid Build Coastguard Worker } 9002*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,strided_cm_subtile)9003*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, strided_cm_subtile) { 9004*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9005*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9006*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9007*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 9008*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9009*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9010*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9011*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9012*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9013*4bdc9457SAndroid Build Coastguard Worker .m(m) 9014*4bdc9457SAndroid Build Coastguard Worker .n(n) 9015*4bdc9457SAndroid Build Coastguard Worker .k(k) 9016*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9017*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9018*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9019*4bdc9457SAndroid Build Coastguard Worker } 9020*4bdc9457SAndroid Build Coastguard Worker } 9021*4bdc9457SAndroid Build Coastguard Worker } 9022*4bdc9457SAndroid Build Coastguard Worker } 9023*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,qmin)9024*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, qmin) { 9025*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9026*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9027*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9028*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9029*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9030*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9031*4bdc9457SAndroid Build Coastguard Worker .m(3) 9032*4bdc9457SAndroid Build Coastguard Worker .n(8) 9033*4bdc9457SAndroid Build Coastguard Worker .k(8) 9034*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 9035*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9036*4bdc9457SAndroid Build Coastguard Worker } 9037*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,qmax)9038*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, qmax) { 9039*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9040*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9041*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9042*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9043*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9044*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9045*4bdc9457SAndroid Build Coastguard Worker .m(3) 9046*4bdc9457SAndroid Build Coastguard Worker .n(8) 9047*4bdc9457SAndroid Build Coastguard Worker .k(8) 9048*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 9049*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9050*4bdc9457SAndroid Build Coastguard Worker } 9051*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,strided_cm)9052*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, strided_cm) { 9053*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9054*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9055*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9056*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9057*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9058*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9059*4bdc9457SAndroid Build Coastguard Worker .m(3) 9060*4bdc9457SAndroid Build Coastguard Worker .n(8) 9061*4bdc9457SAndroid Build Coastguard Worker .k(8) 9062*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9063*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9064*4bdc9457SAndroid Build Coastguard Worker } 9065*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,no_a_zero_point)9066*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, no_a_zero_point) { 9067*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9068*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9069*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9070*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9071*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9072*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9073*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9074*4bdc9457SAndroid Build Coastguard Worker .m(3) 9075*4bdc9457SAndroid Build Coastguard Worker .n(8) 9076*4bdc9457SAndroid Build Coastguard Worker .k(k) 9077*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 9078*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9079*4bdc9457SAndroid Build Coastguard Worker } 9080*4bdc9457SAndroid Build Coastguard Worker } 9081*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,no_b_zero_point)9082*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, no_b_zero_point) { 9083*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9084*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9085*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9086*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9087*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9088*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9089*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9090*4bdc9457SAndroid Build Coastguard Worker .m(3) 9091*4bdc9457SAndroid Build Coastguard Worker .n(8) 9092*4bdc9457SAndroid Build Coastguard Worker .k(k) 9093*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 9094*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9095*4bdc9457SAndroid Build Coastguard Worker } 9096*4bdc9457SAndroid Build Coastguard Worker } 9097*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT,no_zero_point)9098*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_3X8C4__NEONDOT, no_zero_point) { 9099*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9100*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9101*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9102*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9103*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9104*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9105*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9106*4bdc9457SAndroid Build Coastguard Worker .m(3) 9107*4bdc9457SAndroid Build Coastguard Worker .n(8) 9108*4bdc9457SAndroid Build Coastguard Worker .k(k) 9109*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 9110*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 9111*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_3x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9112*4bdc9457SAndroid Build Coastguard Worker } 9113*4bdc9457SAndroid Build Coastguard Worker } 9114*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) 9115*4bdc9457SAndroid Build Coastguard Worker 9116*4bdc9457SAndroid Build Coastguard Worker 9117*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_eq_8)9118*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_eq_8) { 9119*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9120*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9121*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9122*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9123*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9124*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9125*4bdc9457SAndroid Build Coastguard Worker .m(4) 9126*4bdc9457SAndroid Build Coastguard Worker .n(8) 9127*4bdc9457SAndroid Build Coastguard Worker .k(8) 9128*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9129*4bdc9457SAndroid Build Coastguard Worker } 9130*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,strided_cn)9131*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, strided_cn) { 9132*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9133*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9134*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9135*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9136*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9137*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9138*4bdc9457SAndroid Build Coastguard Worker .m(4) 9139*4bdc9457SAndroid Build Coastguard Worker .n(8) 9140*4bdc9457SAndroid Build Coastguard Worker .k(8) 9141*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9143*4bdc9457SAndroid Build Coastguard Worker } 9144*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_eq_8_strided_a)9145*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_eq_8_strided_a) { 9146*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9147*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9148*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9149*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9150*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9151*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9152*4bdc9457SAndroid Build Coastguard Worker .m(4) 9153*4bdc9457SAndroid Build Coastguard Worker .n(8) 9154*4bdc9457SAndroid Build Coastguard Worker .k(8) 9155*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 9156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9157*4bdc9457SAndroid Build Coastguard Worker } 9158*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_eq_8_subtile)9159*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_eq_8_subtile) { 9160*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9161*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9162*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9163*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9164*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9165*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9166*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9167*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9168*4bdc9457SAndroid Build Coastguard Worker .m(m) 9169*4bdc9457SAndroid Build Coastguard Worker .n(n) 9170*4bdc9457SAndroid Build Coastguard Worker .k(8) 9171*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9172*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9173*4bdc9457SAndroid Build Coastguard Worker } 9174*4bdc9457SAndroid Build Coastguard Worker } 9175*4bdc9457SAndroid Build Coastguard Worker } 9176*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_eq_8_subtile_m)9177*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_eq_8_subtile_m) { 9178*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9179*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9180*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9181*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9182*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9183*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9184*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9185*4bdc9457SAndroid Build Coastguard Worker .m(m) 9186*4bdc9457SAndroid Build Coastguard Worker .n(8) 9187*4bdc9457SAndroid Build Coastguard Worker .k(8) 9188*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9189*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9190*4bdc9457SAndroid Build Coastguard Worker } 9191*4bdc9457SAndroid Build Coastguard Worker } 9192*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_eq_8_subtile_n)9193*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_eq_8_subtile_n) { 9194*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9195*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9196*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9197*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9198*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9199*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9200*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9201*4bdc9457SAndroid Build Coastguard Worker .m(4) 9202*4bdc9457SAndroid Build Coastguard Worker .n(n) 9203*4bdc9457SAndroid Build Coastguard Worker .k(8) 9204*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9205*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9206*4bdc9457SAndroid Build Coastguard Worker } 9207*4bdc9457SAndroid Build Coastguard Worker } 9208*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_lt_8)9209*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_lt_8) { 9210*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9211*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 9212*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9213*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9214*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9215*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9216*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9217*4bdc9457SAndroid Build Coastguard Worker .m(4) 9218*4bdc9457SAndroid Build Coastguard Worker .n(8) 9219*4bdc9457SAndroid Build Coastguard Worker .k(k) 9220*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9221*4bdc9457SAndroid Build Coastguard Worker } 9222*4bdc9457SAndroid Build Coastguard Worker } 9223*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_lt_8_strided_a)9224*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_lt_8_strided_a) { 9225*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9226*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 9227*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9228*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9229*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9230*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9231*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9232*4bdc9457SAndroid Build Coastguard Worker .m(4) 9233*4bdc9457SAndroid Build Coastguard Worker .n(8) 9234*4bdc9457SAndroid Build Coastguard Worker .k(k) 9235*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 9236*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9237*4bdc9457SAndroid Build Coastguard Worker } 9238*4bdc9457SAndroid Build Coastguard Worker } 9239*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_lt_8_subtile)9240*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_lt_8_subtile) { 9241*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9242*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 9243*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9244*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9245*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9246*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9247*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9248*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9249*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9250*4bdc9457SAndroid Build Coastguard Worker .m(m) 9251*4bdc9457SAndroid Build Coastguard Worker .n(n) 9252*4bdc9457SAndroid Build Coastguard Worker .k(k) 9253*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9254*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9255*4bdc9457SAndroid Build Coastguard Worker } 9256*4bdc9457SAndroid Build Coastguard Worker } 9257*4bdc9457SAndroid Build Coastguard Worker } 9258*4bdc9457SAndroid Build Coastguard Worker } 9259*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_gt_8)9260*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_gt_8) { 9261*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9262*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 9263*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9264*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9265*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9266*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9267*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9268*4bdc9457SAndroid Build Coastguard Worker .m(4) 9269*4bdc9457SAndroid Build Coastguard Worker .n(8) 9270*4bdc9457SAndroid Build Coastguard Worker .k(k) 9271*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9272*4bdc9457SAndroid Build Coastguard Worker } 9273*4bdc9457SAndroid Build Coastguard Worker } 9274*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_gt_8_strided_a)9275*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_gt_8_strided_a) { 9276*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9277*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 9278*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9279*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9280*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9281*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9282*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9283*4bdc9457SAndroid Build Coastguard Worker .m(4) 9284*4bdc9457SAndroid Build Coastguard Worker .n(8) 9285*4bdc9457SAndroid Build Coastguard Worker .k(k) 9286*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 9287*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9288*4bdc9457SAndroid Build Coastguard Worker } 9289*4bdc9457SAndroid Build Coastguard Worker } 9290*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_gt_8_subtile)9291*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_gt_8_subtile) { 9292*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9293*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 9294*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9295*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9296*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9297*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9298*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9299*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9300*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9301*4bdc9457SAndroid Build Coastguard Worker .m(m) 9302*4bdc9457SAndroid Build Coastguard Worker .n(n) 9303*4bdc9457SAndroid Build Coastguard Worker .k(k) 9304*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9305*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9306*4bdc9457SAndroid Build Coastguard Worker } 9307*4bdc9457SAndroid Build Coastguard Worker } 9308*4bdc9457SAndroid Build Coastguard Worker } 9309*4bdc9457SAndroid Build Coastguard Worker } 9310*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_div_8)9311*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_div_8) { 9312*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9313*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 9314*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9315*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9316*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9317*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9318*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9319*4bdc9457SAndroid Build Coastguard Worker .m(4) 9320*4bdc9457SAndroid Build Coastguard Worker .n(8) 9321*4bdc9457SAndroid Build Coastguard Worker .k(k) 9322*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9323*4bdc9457SAndroid Build Coastguard Worker } 9324*4bdc9457SAndroid Build Coastguard Worker } 9325*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_div_8_strided_a)9326*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_div_8_strided_a) { 9327*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9328*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 9329*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9330*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9331*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9332*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9333*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9334*4bdc9457SAndroid Build Coastguard Worker .m(4) 9335*4bdc9457SAndroid Build Coastguard Worker .n(8) 9336*4bdc9457SAndroid Build Coastguard Worker .k(k) 9337*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 9338*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9339*4bdc9457SAndroid Build Coastguard Worker } 9340*4bdc9457SAndroid Build Coastguard Worker } 9341*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,k_div_8_subtile)9342*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, k_div_8_subtile) { 9343*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9344*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 9345*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9346*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9347*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9348*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9349*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9350*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9351*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9352*4bdc9457SAndroid Build Coastguard Worker .m(m) 9353*4bdc9457SAndroid Build Coastguard Worker .n(n) 9354*4bdc9457SAndroid Build Coastguard Worker .k(k) 9355*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9356*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9357*4bdc9457SAndroid Build Coastguard Worker } 9358*4bdc9457SAndroid Build Coastguard Worker } 9359*4bdc9457SAndroid Build Coastguard Worker } 9360*4bdc9457SAndroid Build Coastguard Worker } 9361*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,n_gt_8)9362*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, n_gt_8) { 9363*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9364*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9365*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9366*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9367*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9368*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9369*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9370*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9371*4bdc9457SAndroid Build Coastguard Worker .m(4) 9372*4bdc9457SAndroid Build Coastguard Worker .n(n) 9373*4bdc9457SAndroid Build Coastguard Worker .k(k) 9374*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9375*4bdc9457SAndroid Build Coastguard Worker } 9376*4bdc9457SAndroid Build Coastguard Worker } 9377*4bdc9457SAndroid Build Coastguard Worker } 9378*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,n_gt_8_strided_cn)9379*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, n_gt_8_strided_cn) { 9380*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9381*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9382*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9383*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9384*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9385*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9386*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9387*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9388*4bdc9457SAndroid Build Coastguard Worker .m(4) 9389*4bdc9457SAndroid Build Coastguard Worker .n(n) 9390*4bdc9457SAndroid Build Coastguard Worker .k(k) 9391*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9392*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9393*4bdc9457SAndroid Build Coastguard Worker } 9394*4bdc9457SAndroid Build Coastguard Worker } 9395*4bdc9457SAndroid Build Coastguard Worker } 9396*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,n_gt_8_strided_a)9397*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, n_gt_8_strided_a) { 9398*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9399*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9400*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9401*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9402*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9403*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9404*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9405*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9406*4bdc9457SAndroid Build Coastguard Worker .m(4) 9407*4bdc9457SAndroid Build Coastguard Worker .n(n) 9408*4bdc9457SAndroid Build Coastguard Worker .k(k) 9409*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 9410*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9411*4bdc9457SAndroid Build Coastguard Worker } 9412*4bdc9457SAndroid Build Coastguard Worker } 9413*4bdc9457SAndroid Build Coastguard Worker } 9414*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,n_gt_8_subtile)9415*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, n_gt_8_subtile) { 9416*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9417*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9418*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9419*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9420*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9421*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9422*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9423*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9424*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9425*4bdc9457SAndroid Build Coastguard Worker .m(m) 9426*4bdc9457SAndroid Build Coastguard Worker .n(n) 9427*4bdc9457SAndroid Build Coastguard Worker .k(k) 9428*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9429*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9430*4bdc9457SAndroid Build Coastguard Worker } 9431*4bdc9457SAndroid Build Coastguard Worker } 9432*4bdc9457SAndroid Build Coastguard Worker } 9433*4bdc9457SAndroid Build Coastguard Worker } 9434*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,n_div_8)9435*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, n_div_8) { 9436*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9437*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9438*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9439*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9440*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9441*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9442*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9443*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9444*4bdc9457SAndroid Build Coastguard Worker .m(4) 9445*4bdc9457SAndroid Build Coastguard Worker .n(n) 9446*4bdc9457SAndroid Build Coastguard Worker .k(k) 9447*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9448*4bdc9457SAndroid Build Coastguard Worker } 9449*4bdc9457SAndroid Build Coastguard Worker } 9450*4bdc9457SAndroid Build Coastguard Worker } 9451*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,n_div_8_strided_cn)9452*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, n_div_8_strided_cn) { 9453*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9454*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9455*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9456*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9457*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9458*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9459*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9460*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9461*4bdc9457SAndroid Build Coastguard Worker .m(4) 9462*4bdc9457SAndroid Build Coastguard Worker .n(n) 9463*4bdc9457SAndroid Build Coastguard Worker .k(k) 9464*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9465*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9466*4bdc9457SAndroid Build Coastguard Worker } 9467*4bdc9457SAndroid Build Coastguard Worker } 9468*4bdc9457SAndroid Build Coastguard Worker } 9469*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,n_div_8_strided_a)9470*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, n_div_8_strided_a) { 9471*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9472*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9473*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9474*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9475*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9476*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9477*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9478*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9479*4bdc9457SAndroid Build Coastguard Worker .m(4) 9480*4bdc9457SAndroid Build Coastguard Worker .n(n) 9481*4bdc9457SAndroid Build Coastguard Worker .k(k) 9482*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 9483*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9484*4bdc9457SAndroid Build Coastguard Worker } 9485*4bdc9457SAndroid Build Coastguard Worker } 9486*4bdc9457SAndroid Build Coastguard Worker } 9487*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,n_div_8_subtile)9488*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, n_div_8_subtile) { 9489*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9490*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9491*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9492*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9493*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9494*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9495*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9496*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9497*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9498*4bdc9457SAndroid Build Coastguard Worker .m(m) 9499*4bdc9457SAndroid Build Coastguard Worker .n(n) 9500*4bdc9457SAndroid Build Coastguard Worker .k(k) 9501*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9502*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9503*4bdc9457SAndroid Build Coastguard Worker } 9504*4bdc9457SAndroid Build Coastguard Worker } 9505*4bdc9457SAndroid Build Coastguard Worker } 9506*4bdc9457SAndroid Build Coastguard Worker } 9507*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,strided_cm_subtile)9508*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, strided_cm_subtile) { 9509*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9510*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9511*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9512*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9513*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9514*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9515*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9516*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9517*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9518*4bdc9457SAndroid Build Coastguard Worker .m(m) 9519*4bdc9457SAndroid Build Coastguard Worker .n(n) 9520*4bdc9457SAndroid Build Coastguard Worker .k(k) 9521*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9522*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9523*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9524*4bdc9457SAndroid Build Coastguard Worker } 9525*4bdc9457SAndroid Build Coastguard Worker } 9526*4bdc9457SAndroid Build Coastguard Worker } 9527*4bdc9457SAndroid Build Coastguard Worker } 9528*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,qmin)9529*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, qmin) { 9530*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9531*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9532*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9533*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9534*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9535*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9536*4bdc9457SAndroid Build Coastguard Worker .m(4) 9537*4bdc9457SAndroid Build Coastguard Worker .n(8) 9538*4bdc9457SAndroid Build Coastguard Worker .k(8) 9539*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 9540*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9541*4bdc9457SAndroid Build Coastguard Worker } 9542*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,qmax)9543*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, qmax) { 9544*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9545*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9546*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9547*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9548*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9549*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9550*4bdc9457SAndroid Build Coastguard Worker .m(4) 9551*4bdc9457SAndroid Build Coastguard Worker .n(8) 9552*4bdc9457SAndroid Build Coastguard Worker .k(8) 9553*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 9554*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9555*4bdc9457SAndroid Build Coastguard Worker } 9556*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,strided_cm)9557*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, strided_cm) { 9558*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9559*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9560*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9561*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9562*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9563*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9564*4bdc9457SAndroid Build Coastguard Worker .m(4) 9565*4bdc9457SAndroid Build Coastguard Worker .n(8) 9566*4bdc9457SAndroid Build Coastguard Worker .k(8) 9567*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9568*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9569*4bdc9457SAndroid Build Coastguard Worker } 9570*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,no_a_zero_point)9571*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, no_a_zero_point) { 9572*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9573*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9574*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9575*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9576*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9577*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9578*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9579*4bdc9457SAndroid Build Coastguard Worker .m(4) 9580*4bdc9457SAndroid Build Coastguard Worker .n(8) 9581*4bdc9457SAndroid Build Coastguard Worker .k(k) 9582*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 9583*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9584*4bdc9457SAndroid Build Coastguard Worker } 9585*4bdc9457SAndroid Build Coastguard Worker } 9586*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,no_b_zero_point)9587*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, no_b_zero_point) { 9588*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9589*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9590*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9591*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9592*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9593*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9594*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9595*4bdc9457SAndroid Build Coastguard Worker .m(4) 9596*4bdc9457SAndroid Build Coastguard Worker .n(8) 9597*4bdc9457SAndroid Build Coastguard Worker .k(k) 9598*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 9599*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9600*4bdc9457SAndroid Build Coastguard Worker } 9601*4bdc9457SAndroid Build Coastguard Worker } 9602*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT,no_zero_point)9603*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X8C4__NEONDOT, no_zero_point) { 9604*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9605*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9606*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9607*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9608*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9609*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9610*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9611*4bdc9457SAndroid Build Coastguard Worker .m(4) 9612*4bdc9457SAndroid Build Coastguard Worker .n(8) 9613*4bdc9457SAndroid Build Coastguard Worker .k(k) 9614*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 9615*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 9616*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9617*4bdc9457SAndroid Build Coastguard Worker } 9618*4bdc9457SAndroid Build Coastguard Worker } 9619*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) 9620*4bdc9457SAndroid Build Coastguard Worker 9621*4bdc9457SAndroid Build Coastguard Worker 9622*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_eq_8)9623*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_eq_8) { 9624*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9625*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9626*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9627*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9628*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9629*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9630*4bdc9457SAndroid Build Coastguard Worker .m(5) 9631*4bdc9457SAndroid Build Coastguard Worker .n(8) 9632*4bdc9457SAndroid Build Coastguard Worker .k(8) 9633*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9634*4bdc9457SAndroid Build Coastguard Worker } 9635*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,strided_cn)9636*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, strided_cn) { 9637*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9638*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9639*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9640*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9641*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9642*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9643*4bdc9457SAndroid Build Coastguard Worker .m(5) 9644*4bdc9457SAndroid Build Coastguard Worker .n(8) 9645*4bdc9457SAndroid Build Coastguard Worker .k(8) 9646*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9647*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9648*4bdc9457SAndroid Build Coastguard Worker } 9649*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_eq_8_strided_a)9650*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_eq_8_strided_a) { 9651*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9652*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9653*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9654*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9655*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9656*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9657*4bdc9457SAndroid Build Coastguard Worker .m(5) 9658*4bdc9457SAndroid Build Coastguard Worker .n(8) 9659*4bdc9457SAndroid Build Coastguard Worker .k(8) 9660*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 9661*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9662*4bdc9457SAndroid Build Coastguard Worker } 9663*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_eq_8_subtile)9664*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_eq_8_subtile) { 9665*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9666*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9667*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 9668*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9669*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9670*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9671*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9672*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9673*4bdc9457SAndroid Build Coastguard Worker .m(m) 9674*4bdc9457SAndroid Build Coastguard Worker .n(n) 9675*4bdc9457SAndroid Build Coastguard Worker .k(8) 9676*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9677*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9678*4bdc9457SAndroid Build Coastguard Worker } 9679*4bdc9457SAndroid Build Coastguard Worker } 9680*4bdc9457SAndroid Build Coastguard Worker } 9681*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_eq_8_subtile_m)9682*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_eq_8_subtile_m) { 9683*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9684*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 9685*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9686*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9687*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9688*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9689*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9690*4bdc9457SAndroid Build Coastguard Worker .m(m) 9691*4bdc9457SAndroid Build Coastguard Worker .n(8) 9692*4bdc9457SAndroid Build Coastguard Worker .k(8) 9693*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9694*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9695*4bdc9457SAndroid Build Coastguard Worker } 9696*4bdc9457SAndroid Build Coastguard Worker } 9697*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_eq_8_subtile_n)9698*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_eq_8_subtile_n) { 9699*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9700*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9701*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9702*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9703*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9704*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9705*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9706*4bdc9457SAndroid Build Coastguard Worker .m(5) 9707*4bdc9457SAndroid Build Coastguard Worker .n(n) 9708*4bdc9457SAndroid Build Coastguard Worker .k(8) 9709*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9710*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9711*4bdc9457SAndroid Build Coastguard Worker } 9712*4bdc9457SAndroid Build Coastguard Worker } 9713*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_lt_8)9714*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_lt_8) { 9715*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9716*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 9717*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9718*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9719*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9720*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9721*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9722*4bdc9457SAndroid Build Coastguard Worker .m(5) 9723*4bdc9457SAndroid Build Coastguard Worker .n(8) 9724*4bdc9457SAndroid Build Coastguard Worker .k(k) 9725*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9726*4bdc9457SAndroid Build Coastguard Worker } 9727*4bdc9457SAndroid Build Coastguard Worker } 9728*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_lt_8_strided_a)9729*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_lt_8_strided_a) { 9730*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9731*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 9732*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9733*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9734*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9735*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9736*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9737*4bdc9457SAndroid Build Coastguard Worker .m(5) 9738*4bdc9457SAndroid Build Coastguard Worker .n(8) 9739*4bdc9457SAndroid Build Coastguard Worker .k(k) 9740*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 9741*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9742*4bdc9457SAndroid Build Coastguard Worker } 9743*4bdc9457SAndroid Build Coastguard Worker } 9744*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_lt_8_subtile)9745*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_lt_8_subtile) { 9746*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9747*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 9748*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9749*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 9750*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9751*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9752*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9753*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9754*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9755*4bdc9457SAndroid Build Coastguard Worker .m(m) 9756*4bdc9457SAndroid Build Coastguard Worker .n(n) 9757*4bdc9457SAndroid Build Coastguard Worker .k(k) 9758*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9759*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9760*4bdc9457SAndroid Build Coastguard Worker } 9761*4bdc9457SAndroid Build Coastguard Worker } 9762*4bdc9457SAndroid Build Coastguard Worker } 9763*4bdc9457SAndroid Build Coastguard Worker } 9764*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_gt_8)9765*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_gt_8) { 9766*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9767*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 9768*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9769*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9770*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9771*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9772*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9773*4bdc9457SAndroid Build Coastguard Worker .m(5) 9774*4bdc9457SAndroid Build Coastguard Worker .n(8) 9775*4bdc9457SAndroid Build Coastguard Worker .k(k) 9776*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9777*4bdc9457SAndroid Build Coastguard Worker } 9778*4bdc9457SAndroid Build Coastguard Worker } 9779*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_gt_8_strided_a)9780*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_gt_8_strided_a) { 9781*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9782*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 9783*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9784*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9785*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9786*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9787*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9788*4bdc9457SAndroid Build Coastguard Worker .m(5) 9789*4bdc9457SAndroid Build Coastguard Worker .n(8) 9790*4bdc9457SAndroid Build Coastguard Worker .k(k) 9791*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 9792*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9793*4bdc9457SAndroid Build Coastguard Worker } 9794*4bdc9457SAndroid Build Coastguard Worker } 9795*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_gt_8_subtile)9796*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_gt_8_subtile) { 9797*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9798*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 9799*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9800*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 9801*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9802*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9803*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9804*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9805*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9806*4bdc9457SAndroid Build Coastguard Worker .m(m) 9807*4bdc9457SAndroid Build Coastguard Worker .n(n) 9808*4bdc9457SAndroid Build Coastguard Worker .k(k) 9809*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9810*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9811*4bdc9457SAndroid Build Coastguard Worker } 9812*4bdc9457SAndroid Build Coastguard Worker } 9813*4bdc9457SAndroid Build Coastguard Worker } 9814*4bdc9457SAndroid Build Coastguard Worker } 9815*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_div_8)9816*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_div_8) { 9817*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9818*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 9819*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9820*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9821*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9822*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9823*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9824*4bdc9457SAndroid Build Coastguard Worker .m(5) 9825*4bdc9457SAndroid Build Coastguard Worker .n(8) 9826*4bdc9457SAndroid Build Coastguard Worker .k(k) 9827*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9828*4bdc9457SAndroid Build Coastguard Worker } 9829*4bdc9457SAndroid Build Coastguard Worker } 9830*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_div_8_strided_a)9831*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_div_8_strided_a) { 9832*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9833*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 9834*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9835*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9836*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9837*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9838*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9839*4bdc9457SAndroid Build Coastguard Worker .m(5) 9840*4bdc9457SAndroid Build Coastguard Worker .n(8) 9841*4bdc9457SAndroid Build Coastguard Worker .k(k) 9842*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 9843*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9844*4bdc9457SAndroid Build Coastguard Worker } 9845*4bdc9457SAndroid Build Coastguard Worker } 9846*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,k_div_8_subtile)9847*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, k_div_8_subtile) { 9848*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9849*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 9850*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9851*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 9852*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9853*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9854*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9855*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9856*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9857*4bdc9457SAndroid Build Coastguard Worker .m(m) 9858*4bdc9457SAndroid Build Coastguard Worker .n(n) 9859*4bdc9457SAndroid Build Coastguard Worker .k(k) 9860*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9861*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9862*4bdc9457SAndroid Build Coastguard Worker } 9863*4bdc9457SAndroid Build Coastguard Worker } 9864*4bdc9457SAndroid Build Coastguard Worker } 9865*4bdc9457SAndroid Build Coastguard Worker } 9866*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,n_gt_8)9867*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, n_gt_8) { 9868*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9869*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9870*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9871*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9872*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9873*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9874*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9875*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9876*4bdc9457SAndroid Build Coastguard Worker .m(5) 9877*4bdc9457SAndroid Build Coastguard Worker .n(n) 9878*4bdc9457SAndroid Build Coastguard Worker .k(k) 9879*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9880*4bdc9457SAndroid Build Coastguard Worker } 9881*4bdc9457SAndroid Build Coastguard Worker } 9882*4bdc9457SAndroid Build Coastguard Worker } 9883*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,n_gt_8_strided_cn)9884*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, n_gt_8_strided_cn) { 9885*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9886*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9887*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9888*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9889*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9890*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9891*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9892*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9893*4bdc9457SAndroid Build Coastguard Worker .m(5) 9894*4bdc9457SAndroid Build Coastguard Worker .n(n) 9895*4bdc9457SAndroid Build Coastguard Worker .k(k) 9896*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9897*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9898*4bdc9457SAndroid Build Coastguard Worker } 9899*4bdc9457SAndroid Build Coastguard Worker } 9900*4bdc9457SAndroid Build Coastguard Worker } 9901*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,n_gt_8_strided_a)9902*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, n_gt_8_strided_a) { 9903*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9904*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9905*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9906*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9907*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9908*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9909*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9910*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9911*4bdc9457SAndroid Build Coastguard Worker .m(5) 9912*4bdc9457SAndroid Build Coastguard Worker .n(n) 9913*4bdc9457SAndroid Build Coastguard Worker .k(k) 9914*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 9915*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9916*4bdc9457SAndroid Build Coastguard Worker } 9917*4bdc9457SAndroid Build Coastguard Worker } 9918*4bdc9457SAndroid Build Coastguard Worker } 9919*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,n_gt_8_subtile)9920*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, n_gt_8_subtile) { 9921*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9922*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9923*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9924*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 9925*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9926*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9927*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9928*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9929*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9930*4bdc9457SAndroid Build Coastguard Worker .m(m) 9931*4bdc9457SAndroid Build Coastguard Worker .n(n) 9932*4bdc9457SAndroid Build Coastguard Worker .k(k) 9933*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9934*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9935*4bdc9457SAndroid Build Coastguard Worker } 9936*4bdc9457SAndroid Build Coastguard Worker } 9937*4bdc9457SAndroid Build Coastguard Worker } 9938*4bdc9457SAndroid Build Coastguard Worker } 9939*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,n_div_8)9940*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, n_div_8) { 9941*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9942*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9943*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9944*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9945*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9946*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9947*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9948*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9949*4bdc9457SAndroid Build Coastguard Worker .m(5) 9950*4bdc9457SAndroid Build Coastguard Worker .n(n) 9951*4bdc9457SAndroid Build Coastguard Worker .k(k) 9952*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9953*4bdc9457SAndroid Build Coastguard Worker } 9954*4bdc9457SAndroid Build Coastguard Worker } 9955*4bdc9457SAndroid Build Coastguard Worker } 9956*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,n_div_8_strided_cn)9957*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, n_div_8_strided_cn) { 9958*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9959*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9960*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9961*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9962*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9963*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9964*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9965*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9966*4bdc9457SAndroid Build Coastguard Worker .m(5) 9967*4bdc9457SAndroid Build Coastguard Worker .n(n) 9968*4bdc9457SAndroid Build Coastguard Worker .k(k) 9969*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9970*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9971*4bdc9457SAndroid Build Coastguard Worker } 9972*4bdc9457SAndroid Build Coastguard Worker } 9973*4bdc9457SAndroid Build Coastguard Worker } 9974*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,n_div_8_strided_a)9975*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, n_div_8_strided_a) { 9976*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9977*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9978*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9979*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9980*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9981*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9982*4bdc9457SAndroid Build Coastguard Worker .kr(4) 9983*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9984*4bdc9457SAndroid Build Coastguard Worker .m(5) 9985*4bdc9457SAndroid Build Coastguard Worker .n(n) 9986*4bdc9457SAndroid Build Coastguard Worker .k(k) 9987*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 9988*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 9989*4bdc9457SAndroid Build Coastguard Worker } 9990*4bdc9457SAndroid Build Coastguard Worker } 9991*4bdc9457SAndroid Build Coastguard Worker } 9992*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,n_div_8_subtile)9993*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, n_div_8_subtile) { 9994*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 9995*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9996*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 9997*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 9998*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9999*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10000*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10001*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10002*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10003*4bdc9457SAndroid Build Coastguard Worker .m(m) 10004*4bdc9457SAndroid Build Coastguard Worker .n(n) 10005*4bdc9457SAndroid Build Coastguard Worker .k(k) 10006*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10007*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10008*4bdc9457SAndroid Build Coastguard Worker } 10009*4bdc9457SAndroid Build Coastguard Worker } 10010*4bdc9457SAndroid Build Coastguard Worker } 10011*4bdc9457SAndroid Build Coastguard Worker } 10012*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,strided_cm_subtile)10013*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, strided_cm_subtile) { 10014*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10015*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10016*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10017*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10018*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10019*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10020*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10021*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10022*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10023*4bdc9457SAndroid Build Coastguard Worker .m(m) 10024*4bdc9457SAndroid Build Coastguard Worker .n(n) 10025*4bdc9457SAndroid Build Coastguard Worker .k(k) 10026*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 10027*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10028*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10029*4bdc9457SAndroid Build Coastguard Worker } 10030*4bdc9457SAndroid Build Coastguard Worker } 10031*4bdc9457SAndroid Build Coastguard Worker } 10032*4bdc9457SAndroid Build Coastguard Worker } 10033*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,qmin)10034*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, qmin) { 10035*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10036*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10037*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10038*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10039*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10040*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10041*4bdc9457SAndroid Build Coastguard Worker .m(5) 10042*4bdc9457SAndroid Build Coastguard Worker .n(8) 10043*4bdc9457SAndroid Build Coastguard Worker .k(8) 10044*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 10045*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10046*4bdc9457SAndroid Build Coastguard Worker } 10047*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,qmax)10048*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, qmax) { 10049*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10050*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10051*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10052*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10053*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10054*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10055*4bdc9457SAndroid Build Coastguard Worker .m(5) 10056*4bdc9457SAndroid Build Coastguard Worker .n(8) 10057*4bdc9457SAndroid Build Coastguard Worker .k(8) 10058*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 10059*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10060*4bdc9457SAndroid Build Coastguard Worker } 10061*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,strided_cm)10062*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, strided_cm) { 10063*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10064*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10065*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10066*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10067*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10068*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10069*4bdc9457SAndroid Build Coastguard Worker .m(5) 10070*4bdc9457SAndroid Build Coastguard Worker .n(8) 10071*4bdc9457SAndroid Build Coastguard Worker .k(8) 10072*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 10073*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10074*4bdc9457SAndroid Build Coastguard Worker } 10075*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,no_a_zero_point)10076*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, no_a_zero_point) { 10077*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10078*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10079*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10080*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10081*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10082*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10083*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10084*4bdc9457SAndroid Build Coastguard Worker .m(5) 10085*4bdc9457SAndroid Build Coastguard Worker .n(8) 10086*4bdc9457SAndroid Build Coastguard Worker .k(k) 10087*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 10088*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10089*4bdc9457SAndroid Build Coastguard Worker } 10090*4bdc9457SAndroid Build Coastguard Worker } 10091*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,no_b_zero_point)10092*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, no_b_zero_point) { 10093*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10094*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10095*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10096*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10097*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10098*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10099*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10100*4bdc9457SAndroid Build Coastguard Worker .m(5) 10101*4bdc9457SAndroid Build Coastguard Worker .n(8) 10102*4bdc9457SAndroid Build Coastguard Worker .k(k) 10103*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 10104*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10105*4bdc9457SAndroid Build Coastguard Worker } 10106*4bdc9457SAndroid Build Coastguard Worker } 10107*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT,no_zero_point)10108*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_5X8C4__NEONDOT, no_zero_point) { 10109*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10110*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10111*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10112*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10113*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10114*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10115*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10116*4bdc9457SAndroid Build Coastguard Worker .m(5) 10117*4bdc9457SAndroid Build Coastguard Worker .n(8) 10118*4bdc9457SAndroid Build Coastguard Worker .k(k) 10119*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 10120*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 10121*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_5x8c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10122*4bdc9457SAndroid Build Coastguard Worker } 10123*4bdc9457SAndroid Build Coastguard Worker } 10124*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) 10125*4bdc9457SAndroid Build Coastguard Worker 10126*4bdc9457SAndroid Build Coastguard Worker 10127*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_eq_8)10128*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_eq_8) { 10129*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10130*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10131*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10132*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10133*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10134*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10135*4bdc9457SAndroid Build Coastguard Worker .m(6) 10136*4bdc9457SAndroid Build Coastguard Worker .n(16) 10137*4bdc9457SAndroid Build Coastguard Worker .k(8) 10138*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10139*4bdc9457SAndroid Build Coastguard Worker } 10140*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,strided_cn)10141*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, strided_cn) { 10142*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10143*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10144*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10145*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10146*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10147*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10148*4bdc9457SAndroid Build Coastguard Worker .m(6) 10149*4bdc9457SAndroid Build Coastguard Worker .n(16) 10150*4bdc9457SAndroid Build Coastguard Worker .k(8) 10151*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10152*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10153*4bdc9457SAndroid Build Coastguard Worker } 10154*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_eq_8_strided_a)10155*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_eq_8_strided_a) { 10156*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10157*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10158*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10159*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10160*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10161*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10162*4bdc9457SAndroid Build Coastguard Worker .m(6) 10163*4bdc9457SAndroid Build Coastguard Worker .n(16) 10164*4bdc9457SAndroid Build Coastguard Worker .k(8) 10165*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 10166*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10167*4bdc9457SAndroid Build Coastguard Worker } 10168*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_eq_8_subtile)10169*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_eq_8_subtile) { 10170*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10171*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10172*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10173*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10174*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10175*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10176*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10177*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10178*4bdc9457SAndroid Build Coastguard Worker .m(m) 10179*4bdc9457SAndroid Build Coastguard Worker .n(n) 10180*4bdc9457SAndroid Build Coastguard Worker .k(8) 10181*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10182*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10183*4bdc9457SAndroid Build Coastguard Worker } 10184*4bdc9457SAndroid Build Coastguard Worker } 10185*4bdc9457SAndroid Build Coastguard Worker } 10186*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_eq_8_subtile_m)10187*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_eq_8_subtile_m) { 10188*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10189*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10190*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10191*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10192*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10193*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10194*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10195*4bdc9457SAndroid Build Coastguard Worker .m(m) 10196*4bdc9457SAndroid Build Coastguard Worker .n(16) 10197*4bdc9457SAndroid Build Coastguard Worker .k(8) 10198*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10199*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10200*4bdc9457SAndroid Build Coastguard Worker } 10201*4bdc9457SAndroid Build Coastguard Worker } 10202*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_eq_8_subtile_n)10203*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_eq_8_subtile_n) { 10204*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10205*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10206*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10207*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10208*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10209*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10210*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10211*4bdc9457SAndroid Build Coastguard Worker .m(6) 10212*4bdc9457SAndroid Build Coastguard Worker .n(n) 10213*4bdc9457SAndroid Build Coastguard Worker .k(8) 10214*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10215*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10216*4bdc9457SAndroid Build Coastguard Worker } 10217*4bdc9457SAndroid Build Coastguard Worker } 10218*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_lt_8)10219*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_lt_8) { 10220*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10221*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 10222*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10223*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10224*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10225*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10226*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10227*4bdc9457SAndroid Build Coastguard Worker .m(6) 10228*4bdc9457SAndroid Build Coastguard Worker .n(16) 10229*4bdc9457SAndroid Build Coastguard Worker .k(k) 10230*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10231*4bdc9457SAndroid Build Coastguard Worker } 10232*4bdc9457SAndroid Build Coastguard Worker } 10233*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_lt_8_strided_a)10234*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_lt_8_strided_a) { 10235*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10236*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 10237*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10238*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10239*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10240*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10241*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10242*4bdc9457SAndroid Build Coastguard Worker .m(6) 10243*4bdc9457SAndroid Build Coastguard Worker .n(16) 10244*4bdc9457SAndroid Build Coastguard Worker .k(k) 10245*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 10246*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10247*4bdc9457SAndroid Build Coastguard Worker } 10248*4bdc9457SAndroid Build Coastguard Worker } 10249*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_lt_8_subtile)10250*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_lt_8_subtile) { 10251*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10252*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 10253*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10254*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10255*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10256*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10257*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10258*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10259*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10260*4bdc9457SAndroid Build Coastguard Worker .m(m) 10261*4bdc9457SAndroid Build Coastguard Worker .n(n) 10262*4bdc9457SAndroid Build Coastguard Worker .k(k) 10263*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10264*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10265*4bdc9457SAndroid Build Coastguard Worker } 10266*4bdc9457SAndroid Build Coastguard Worker } 10267*4bdc9457SAndroid Build Coastguard Worker } 10268*4bdc9457SAndroid Build Coastguard Worker } 10269*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_gt_8)10270*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_gt_8) { 10271*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10272*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 10273*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10274*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10275*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10276*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10277*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10278*4bdc9457SAndroid Build Coastguard Worker .m(6) 10279*4bdc9457SAndroid Build Coastguard Worker .n(16) 10280*4bdc9457SAndroid Build Coastguard Worker .k(k) 10281*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10282*4bdc9457SAndroid Build Coastguard Worker } 10283*4bdc9457SAndroid Build Coastguard Worker } 10284*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_gt_8_strided_a)10285*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_gt_8_strided_a) { 10286*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10287*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 10288*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10289*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10290*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10291*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10292*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10293*4bdc9457SAndroid Build Coastguard Worker .m(6) 10294*4bdc9457SAndroid Build Coastguard Worker .n(16) 10295*4bdc9457SAndroid Build Coastguard Worker .k(k) 10296*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 10297*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10298*4bdc9457SAndroid Build Coastguard Worker } 10299*4bdc9457SAndroid Build Coastguard Worker } 10300*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_gt_8_subtile)10301*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_gt_8_subtile) { 10302*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10303*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 10304*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10305*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10306*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10307*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10308*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10309*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10310*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10311*4bdc9457SAndroid Build Coastguard Worker .m(m) 10312*4bdc9457SAndroid Build Coastguard Worker .n(n) 10313*4bdc9457SAndroid Build Coastguard Worker .k(k) 10314*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10315*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10316*4bdc9457SAndroid Build Coastguard Worker } 10317*4bdc9457SAndroid Build Coastguard Worker } 10318*4bdc9457SAndroid Build Coastguard Worker } 10319*4bdc9457SAndroid Build Coastguard Worker } 10320*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_div_8)10321*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_div_8) { 10322*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10323*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 10324*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10325*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10326*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10327*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10328*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10329*4bdc9457SAndroid Build Coastguard Worker .m(6) 10330*4bdc9457SAndroid Build Coastguard Worker .n(16) 10331*4bdc9457SAndroid Build Coastguard Worker .k(k) 10332*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10333*4bdc9457SAndroid Build Coastguard Worker } 10334*4bdc9457SAndroid Build Coastguard Worker } 10335*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_div_8_strided_a)10336*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_div_8_strided_a) { 10337*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10338*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 10339*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10340*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10341*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10342*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10343*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10344*4bdc9457SAndroid Build Coastguard Worker .m(6) 10345*4bdc9457SAndroid Build Coastguard Worker .n(16) 10346*4bdc9457SAndroid Build Coastguard Worker .k(k) 10347*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 10348*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10349*4bdc9457SAndroid Build Coastguard Worker } 10350*4bdc9457SAndroid Build Coastguard Worker } 10351*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,k_div_8_subtile)10352*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, k_div_8_subtile) { 10353*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10354*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 10355*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10356*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10357*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10358*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10359*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10360*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10361*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10362*4bdc9457SAndroid Build Coastguard Worker .m(m) 10363*4bdc9457SAndroid Build Coastguard Worker .n(n) 10364*4bdc9457SAndroid Build Coastguard Worker .k(k) 10365*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10366*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10367*4bdc9457SAndroid Build Coastguard Worker } 10368*4bdc9457SAndroid Build Coastguard Worker } 10369*4bdc9457SAndroid Build Coastguard Worker } 10370*4bdc9457SAndroid Build Coastguard Worker } 10371*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,n_gt_16)10372*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, n_gt_16) { 10373*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10374*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10375*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10376*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10377*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10378*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10379*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10380*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10381*4bdc9457SAndroid Build Coastguard Worker .m(6) 10382*4bdc9457SAndroid Build Coastguard Worker .n(n) 10383*4bdc9457SAndroid Build Coastguard Worker .k(k) 10384*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10385*4bdc9457SAndroid Build Coastguard Worker } 10386*4bdc9457SAndroid Build Coastguard Worker } 10387*4bdc9457SAndroid Build Coastguard Worker } 10388*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,n_gt_16_strided_cn)10389*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, n_gt_16_strided_cn) { 10390*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10391*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10392*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10393*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10394*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10395*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10396*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10397*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10398*4bdc9457SAndroid Build Coastguard Worker .m(6) 10399*4bdc9457SAndroid Build Coastguard Worker .n(n) 10400*4bdc9457SAndroid Build Coastguard Worker .k(k) 10401*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10402*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10403*4bdc9457SAndroid Build Coastguard Worker } 10404*4bdc9457SAndroid Build Coastguard Worker } 10405*4bdc9457SAndroid Build Coastguard Worker } 10406*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,n_gt_16_strided_a)10407*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, n_gt_16_strided_a) { 10408*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10409*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10410*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10411*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10412*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10413*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10414*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10415*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10416*4bdc9457SAndroid Build Coastguard Worker .m(6) 10417*4bdc9457SAndroid Build Coastguard Worker .n(n) 10418*4bdc9457SAndroid Build Coastguard Worker .k(k) 10419*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 10420*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10421*4bdc9457SAndroid Build Coastguard Worker } 10422*4bdc9457SAndroid Build Coastguard Worker } 10423*4bdc9457SAndroid Build Coastguard Worker } 10424*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,n_gt_16_subtile)10425*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, n_gt_16_subtile) { 10426*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10427*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10428*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10429*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10430*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10431*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10432*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10433*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10434*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10435*4bdc9457SAndroid Build Coastguard Worker .m(m) 10436*4bdc9457SAndroid Build Coastguard Worker .n(n) 10437*4bdc9457SAndroid Build Coastguard Worker .k(k) 10438*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10439*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10440*4bdc9457SAndroid Build Coastguard Worker } 10441*4bdc9457SAndroid Build Coastguard Worker } 10442*4bdc9457SAndroid Build Coastguard Worker } 10443*4bdc9457SAndroid Build Coastguard Worker } 10444*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,n_div_16)10445*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, n_div_16) { 10446*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10447*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10448*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10449*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10450*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10451*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10452*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10453*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10454*4bdc9457SAndroid Build Coastguard Worker .m(6) 10455*4bdc9457SAndroid Build Coastguard Worker .n(n) 10456*4bdc9457SAndroid Build Coastguard Worker .k(k) 10457*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10458*4bdc9457SAndroid Build Coastguard Worker } 10459*4bdc9457SAndroid Build Coastguard Worker } 10460*4bdc9457SAndroid Build Coastguard Worker } 10461*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,n_div_16_strided_cn)10462*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, n_div_16_strided_cn) { 10463*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10464*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10465*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10466*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10467*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10468*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10469*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10470*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10471*4bdc9457SAndroid Build Coastguard Worker .m(6) 10472*4bdc9457SAndroid Build Coastguard Worker .n(n) 10473*4bdc9457SAndroid Build Coastguard Worker .k(k) 10474*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10475*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10476*4bdc9457SAndroid Build Coastguard Worker } 10477*4bdc9457SAndroid Build Coastguard Worker } 10478*4bdc9457SAndroid Build Coastguard Worker } 10479*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,n_div_16_strided_a)10480*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, n_div_16_strided_a) { 10481*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10482*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10483*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10484*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10485*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10486*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10487*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10488*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10489*4bdc9457SAndroid Build Coastguard Worker .m(6) 10490*4bdc9457SAndroid Build Coastguard Worker .n(n) 10491*4bdc9457SAndroid Build Coastguard Worker .k(k) 10492*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 10493*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10494*4bdc9457SAndroid Build Coastguard Worker } 10495*4bdc9457SAndroid Build Coastguard Worker } 10496*4bdc9457SAndroid Build Coastguard Worker } 10497*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,n_div_16_subtile)10498*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, n_div_16_subtile) { 10499*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10500*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10501*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10502*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10503*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10504*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10505*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10506*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10507*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10508*4bdc9457SAndroid Build Coastguard Worker .m(m) 10509*4bdc9457SAndroid Build Coastguard Worker .n(n) 10510*4bdc9457SAndroid Build Coastguard Worker .k(k) 10511*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10512*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10513*4bdc9457SAndroid Build Coastguard Worker } 10514*4bdc9457SAndroid Build Coastguard Worker } 10515*4bdc9457SAndroid Build Coastguard Worker } 10516*4bdc9457SAndroid Build Coastguard Worker } 10517*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,strided_cm_subtile)10518*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, strided_cm_subtile) { 10519*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10520*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10521*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10522*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10523*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10524*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10525*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10526*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10527*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10528*4bdc9457SAndroid Build Coastguard Worker .m(m) 10529*4bdc9457SAndroid Build Coastguard Worker .n(n) 10530*4bdc9457SAndroid Build Coastguard Worker .k(k) 10531*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 10532*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10533*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10534*4bdc9457SAndroid Build Coastguard Worker } 10535*4bdc9457SAndroid Build Coastguard Worker } 10536*4bdc9457SAndroid Build Coastguard Worker } 10537*4bdc9457SAndroid Build Coastguard Worker } 10538*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,qmin)10539*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, qmin) { 10540*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10541*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10542*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10543*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10544*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10545*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10546*4bdc9457SAndroid Build Coastguard Worker .m(6) 10547*4bdc9457SAndroid Build Coastguard Worker .n(16) 10548*4bdc9457SAndroid Build Coastguard Worker .k(8) 10549*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 10550*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10551*4bdc9457SAndroid Build Coastguard Worker } 10552*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,qmax)10553*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, qmax) { 10554*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10555*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10556*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10557*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10558*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10559*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10560*4bdc9457SAndroid Build Coastguard Worker .m(6) 10561*4bdc9457SAndroid Build Coastguard Worker .n(16) 10562*4bdc9457SAndroid Build Coastguard Worker .k(8) 10563*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 10564*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10565*4bdc9457SAndroid Build Coastguard Worker } 10566*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,strided_cm)10567*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, strided_cm) { 10568*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10569*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10570*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10571*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10572*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10573*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10574*4bdc9457SAndroid Build Coastguard Worker .m(6) 10575*4bdc9457SAndroid Build Coastguard Worker .n(16) 10576*4bdc9457SAndroid Build Coastguard Worker .k(8) 10577*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 10578*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10579*4bdc9457SAndroid Build Coastguard Worker } 10580*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,no_a_zero_point)10581*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, no_a_zero_point) { 10582*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10583*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10584*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10585*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10586*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10587*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10588*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10589*4bdc9457SAndroid Build Coastguard Worker .m(6) 10590*4bdc9457SAndroid Build Coastguard Worker .n(16) 10591*4bdc9457SAndroid Build Coastguard Worker .k(k) 10592*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 10593*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10594*4bdc9457SAndroid Build Coastguard Worker } 10595*4bdc9457SAndroid Build Coastguard Worker } 10596*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,no_b_zero_point)10597*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, no_b_zero_point) { 10598*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10599*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10600*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10601*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10602*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10603*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10604*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10605*4bdc9457SAndroid Build Coastguard Worker .m(6) 10606*4bdc9457SAndroid Build Coastguard Worker .n(16) 10607*4bdc9457SAndroid Build Coastguard Worker .k(k) 10608*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 10609*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10610*4bdc9457SAndroid Build Coastguard Worker } 10611*4bdc9457SAndroid Build Coastguard Worker } 10612*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT,no_zero_point)10613*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_6X16C4__NEONDOT, no_zero_point) { 10614*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_DOT; 10615*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10616*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10617*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10618*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10619*4bdc9457SAndroid Build Coastguard Worker .kr(4) 10620*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10621*4bdc9457SAndroid Build Coastguard Worker .m(6) 10622*4bdc9457SAndroid Build Coastguard Worker .n(16) 10623*4bdc9457SAndroid Build Coastguard Worker .k(k) 10624*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 10625*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 10626*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_6x16c4__neondot, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10627*4bdc9457SAndroid Build Coastguard Worker } 10628*4bdc9457SAndroid Build Coastguard Worker } 10629*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_DOTPROD && (XNN_ARCH_ARM && !XNN_PLATFORM_IOS || XNN_ARCH_ARM64) 10630*4bdc9457SAndroid Build Coastguard Worker 10631*4bdc9457SAndroid Build Coastguard Worker 10632*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_eq_8)10633*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_eq_8) { 10634*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10635*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10636*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10637*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10638*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10639*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10640*4bdc9457SAndroid Build Coastguard Worker .m(4) 10641*4bdc9457SAndroid Build Coastguard Worker .n(16) 10642*4bdc9457SAndroid Build Coastguard Worker .k(8) 10643*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10644*4bdc9457SAndroid Build Coastguard Worker } 10645*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,strided_cn)10646*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, strided_cn) { 10647*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10648*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10649*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10650*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10651*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10652*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10653*4bdc9457SAndroid Build Coastguard Worker .m(4) 10654*4bdc9457SAndroid Build Coastguard Worker .n(16) 10655*4bdc9457SAndroid Build Coastguard Worker .k(8) 10656*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10657*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10658*4bdc9457SAndroid Build Coastguard Worker } 10659*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_eq_8_strided_a)10660*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_eq_8_strided_a) { 10661*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10662*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10663*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10664*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10665*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10666*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10667*4bdc9457SAndroid Build Coastguard Worker .m(4) 10668*4bdc9457SAndroid Build Coastguard Worker .n(16) 10669*4bdc9457SAndroid Build Coastguard Worker .k(8) 10670*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 10671*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10672*4bdc9457SAndroid Build Coastguard Worker } 10673*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_eq_8_subtile)10674*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_eq_8_subtile) { 10675*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10676*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10677*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10678*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10679*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10680*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10681*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10682*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10683*4bdc9457SAndroid Build Coastguard Worker .m(m) 10684*4bdc9457SAndroid Build Coastguard Worker .n(n) 10685*4bdc9457SAndroid Build Coastguard Worker .k(8) 10686*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10687*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10688*4bdc9457SAndroid Build Coastguard Worker } 10689*4bdc9457SAndroid Build Coastguard Worker } 10690*4bdc9457SAndroid Build Coastguard Worker } 10691*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_eq_8_subtile_m)10692*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_eq_8_subtile_m) { 10693*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10694*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10695*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10696*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10697*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10698*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10699*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10700*4bdc9457SAndroid Build Coastguard Worker .m(m) 10701*4bdc9457SAndroid Build Coastguard Worker .n(16) 10702*4bdc9457SAndroid Build Coastguard Worker .k(8) 10703*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10704*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10705*4bdc9457SAndroid Build Coastguard Worker } 10706*4bdc9457SAndroid Build Coastguard Worker } 10707*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_eq_8_subtile_n)10708*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_eq_8_subtile_n) { 10709*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10710*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10711*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10712*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10713*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10714*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10715*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10716*4bdc9457SAndroid Build Coastguard Worker .m(4) 10717*4bdc9457SAndroid Build Coastguard Worker .n(n) 10718*4bdc9457SAndroid Build Coastguard Worker .k(8) 10719*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10720*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10721*4bdc9457SAndroid Build Coastguard Worker } 10722*4bdc9457SAndroid Build Coastguard Worker } 10723*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_lt_8)10724*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_lt_8) { 10725*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10726*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 10727*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10728*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10729*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10730*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10731*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10732*4bdc9457SAndroid Build Coastguard Worker .m(4) 10733*4bdc9457SAndroid Build Coastguard Worker .n(16) 10734*4bdc9457SAndroid Build Coastguard Worker .k(k) 10735*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10736*4bdc9457SAndroid Build Coastguard Worker } 10737*4bdc9457SAndroid Build Coastguard Worker } 10738*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_lt_8_strided_a)10739*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_lt_8_strided_a) { 10740*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10741*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 10742*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10743*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10744*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10745*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10746*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10747*4bdc9457SAndroid Build Coastguard Worker .m(4) 10748*4bdc9457SAndroid Build Coastguard Worker .n(16) 10749*4bdc9457SAndroid Build Coastguard Worker .k(k) 10750*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 10751*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10752*4bdc9457SAndroid Build Coastguard Worker } 10753*4bdc9457SAndroid Build Coastguard Worker } 10754*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_lt_8_subtile)10755*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_lt_8_subtile) { 10756*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10757*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 10758*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10759*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10760*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10761*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10762*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10763*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10764*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10765*4bdc9457SAndroid Build Coastguard Worker .m(m) 10766*4bdc9457SAndroid Build Coastguard Worker .n(n) 10767*4bdc9457SAndroid Build Coastguard Worker .k(k) 10768*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10769*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10770*4bdc9457SAndroid Build Coastguard Worker } 10771*4bdc9457SAndroid Build Coastguard Worker } 10772*4bdc9457SAndroid Build Coastguard Worker } 10773*4bdc9457SAndroid Build Coastguard Worker } 10774*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_gt_8)10775*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_gt_8) { 10776*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10777*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 10778*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10779*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10780*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10781*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10782*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10783*4bdc9457SAndroid Build Coastguard Worker .m(4) 10784*4bdc9457SAndroid Build Coastguard Worker .n(16) 10785*4bdc9457SAndroid Build Coastguard Worker .k(k) 10786*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10787*4bdc9457SAndroid Build Coastguard Worker } 10788*4bdc9457SAndroid Build Coastguard Worker } 10789*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_gt_8_strided_a)10790*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_gt_8_strided_a) { 10791*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10792*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 10793*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10794*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10795*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10796*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10797*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10798*4bdc9457SAndroid Build Coastguard Worker .m(4) 10799*4bdc9457SAndroid Build Coastguard Worker .n(16) 10800*4bdc9457SAndroid Build Coastguard Worker .k(k) 10801*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 10802*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10803*4bdc9457SAndroid Build Coastguard Worker } 10804*4bdc9457SAndroid Build Coastguard Worker } 10805*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_gt_8_subtile)10806*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_gt_8_subtile) { 10807*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10808*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 10809*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10810*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10811*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10812*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10813*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10814*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10815*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10816*4bdc9457SAndroid Build Coastguard Worker .m(m) 10817*4bdc9457SAndroid Build Coastguard Worker .n(n) 10818*4bdc9457SAndroid Build Coastguard Worker .k(k) 10819*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10820*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10821*4bdc9457SAndroid Build Coastguard Worker } 10822*4bdc9457SAndroid Build Coastguard Worker } 10823*4bdc9457SAndroid Build Coastguard Worker } 10824*4bdc9457SAndroid Build Coastguard Worker } 10825*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_div_8)10826*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_div_8) { 10827*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10828*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 10829*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10830*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10831*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10832*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10833*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10834*4bdc9457SAndroid Build Coastguard Worker .m(4) 10835*4bdc9457SAndroid Build Coastguard Worker .n(16) 10836*4bdc9457SAndroid Build Coastguard Worker .k(k) 10837*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10838*4bdc9457SAndroid Build Coastguard Worker } 10839*4bdc9457SAndroid Build Coastguard Worker } 10840*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_div_8_strided_a)10841*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_div_8_strided_a) { 10842*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10843*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 10844*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10845*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10846*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10847*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10848*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10849*4bdc9457SAndroid Build Coastguard Worker .m(4) 10850*4bdc9457SAndroid Build Coastguard Worker .n(16) 10851*4bdc9457SAndroid Build Coastguard Worker .k(k) 10852*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 10853*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10854*4bdc9457SAndroid Build Coastguard Worker } 10855*4bdc9457SAndroid Build Coastguard Worker } 10856*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,k_div_8_subtile)10857*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, k_div_8_subtile) { 10858*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10859*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 10860*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10861*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10862*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10863*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10864*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10865*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10866*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10867*4bdc9457SAndroid Build Coastguard Worker .m(m) 10868*4bdc9457SAndroid Build Coastguard Worker .n(n) 10869*4bdc9457SAndroid Build Coastguard Worker .k(k) 10870*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10871*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10872*4bdc9457SAndroid Build Coastguard Worker } 10873*4bdc9457SAndroid Build Coastguard Worker } 10874*4bdc9457SAndroid Build Coastguard Worker } 10875*4bdc9457SAndroid Build Coastguard Worker } 10876*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,n_gt_16)10877*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, n_gt_16) { 10878*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10879*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10880*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10881*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10882*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10883*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10884*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10885*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10886*4bdc9457SAndroid Build Coastguard Worker .m(4) 10887*4bdc9457SAndroid Build Coastguard Worker .n(n) 10888*4bdc9457SAndroid Build Coastguard Worker .k(k) 10889*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10890*4bdc9457SAndroid Build Coastguard Worker } 10891*4bdc9457SAndroid Build Coastguard Worker } 10892*4bdc9457SAndroid Build Coastguard Worker } 10893*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,n_gt_16_strided_cn)10894*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, n_gt_16_strided_cn) { 10895*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10896*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10897*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10898*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10899*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10900*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10901*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10902*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10903*4bdc9457SAndroid Build Coastguard Worker .m(4) 10904*4bdc9457SAndroid Build Coastguard Worker .n(n) 10905*4bdc9457SAndroid Build Coastguard Worker .k(k) 10906*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10907*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10908*4bdc9457SAndroid Build Coastguard Worker } 10909*4bdc9457SAndroid Build Coastguard Worker } 10910*4bdc9457SAndroid Build Coastguard Worker } 10911*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,n_gt_16_strided_a)10912*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, n_gt_16_strided_a) { 10913*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10914*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10915*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10916*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10917*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10918*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10919*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10920*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10921*4bdc9457SAndroid Build Coastguard Worker .m(4) 10922*4bdc9457SAndroid Build Coastguard Worker .n(n) 10923*4bdc9457SAndroid Build Coastguard Worker .k(k) 10924*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 10925*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10926*4bdc9457SAndroid Build Coastguard Worker } 10927*4bdc9457SAndroid Build Coastguard Worker } 10928*4bdc9457SAndroid Build Coastguard Worker } 10929*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,n_gt_16_subtile)10930*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, n_gt_16_subtile) { 10931*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10932*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10933*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10934*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10935*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10936*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10937*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10938*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10939*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10940*4bdc9457SAndroid Build Coastguard Worker .m(m) 10941*4bdc9457SAndroid Build Coastguard Worker .n(n) 10942*4bdc9457SAndroid Build Coastguard Worker .k(k) 10943*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10944*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10945*4bdc9457SAndroid Build Coastguard Worker } 10946*4bdc9457SAndroid Build Coastguard Worker } 10947*4bdc9457SAndroid Build Coastguard Worker } 10948*4bdc9457SAndroid Build Coastguard Worker } 10949*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,n_div_16)10950*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, n_div_16) { 10951*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10952*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10953*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10954*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10955*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10956*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10957*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10958*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10959*4bdc9457SAndroid Build Coastguard Worker .m(4) 10960*4bdc9457SAndroid Build Coastguard Worker .n(n) 10961*4bdc9457SAndroid Build Coastguard Worker .k(k) 10962*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10963*4bdc9457SAndroid Build Coastguard Worker } 10964*4bdc9457SAndroid Build Coastguard Worker } 10965*4bdc9457SAndroid Build Coastguard Worker } 10966*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,n_div_16_strided_cn)10967*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, n_div_16_strided_cn) { 10968*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10969*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10970*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10971*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10972*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10973*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10974*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10975*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10976*4bdc9457SAndroid Build Coastguard Worker .m(4) 10977*4bdc9457SAndroid Build Coastguard Worker .n(n) 10978*4bdc9457SAndroid Build Coastguard Worker .k(k) 10979*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10980*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10981*4bdc9457SAndroid Build Coastguard Worker } 10982*4bdc9457SAndroid Build Coastguard Worker } 10983*4bdc9457SAndroid Build Coastguard Worker } 10984*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,n_div_16_strided_a)10985*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, n_div_16_strided_a) { 10986*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 10987*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10988*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 10989*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10990*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10991*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10992*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10993*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10994*4bdc9457SAndroid Build Coastguard Worker .m(4) 10995*4bdc9457SAndroid Build Coastguard Worker .n(n) 10996*4bdc9457SAndroid Build Coastguard Worker .k(k) 10997*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 10998*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 10999*4bdc9457SAndroid Build Coastguard Worker } 11000*4bdc9457SAndroid Build Coastguard Worker } 11001*4bdc9457SAndroid Build Coastguard Worker } 11002*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,n_div_16_subtile)11003*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, n_div_16_subtile) { 11004*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11005*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11006*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11007*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11008*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11009*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11010*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11011*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11012*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11013*4bdc9457SAndroid Build Coastguard Worker .m(m) 11014*4bdc9457SAndroid Build Coastguard Worker .n(n) 11015*4bdc9457SAndroid Build Coastguard Worker .k(k) 11016*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11017*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11018*4bdc9457SAndroid Build Coastguard Worker } 11019*4bdc9457SAndroid Build Coastguard Worker } 11020*4bdc9457SAndroid Build Coastguard Worker } 11021*4bdc9457SAndroid Build Coastguard Worker } 11022*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,strided_cm_subtile)11023*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, strided_cm_subtile) { 11024*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11025*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11026*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11027*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11028*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11029*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11030*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11031*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11032*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11033*4bdc9457SAndroid Build Coastguard Worker .m(m) 11034*4bdc9457SAndroid Build Coastguard Worker .n(n) 11035*4bdc9457SAndroid Build Coastguard Worker .k(k) 11036*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 11037*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11038*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11039*4bdc9457SAndroid Build Coastguard Worker } 11040*4bdc9457SAndroid Build Coastguard Worker } 11041*4bdc9457SAndroid Build Coastguard Worker } 11042*4bdc9457SAndroid Build Coastguard Worker } 11043*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,qmin)11044*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, qmin) { 11045*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11046*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11047*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11048*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11049*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11050*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11051*4bdc9457SAndroid Build Coastguard Worker .m(4) 11052*4bdc9457SAndroid Build Coastguard Worker .n(16) 11053*4bdc9457SAndroid Build Coastguard Worker .k(8) 11054*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 11055*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11056*4bdc9457SAndroid Build Coastguard Worker } 11057*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,qmax)11058*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, qmax) { 11059*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11060*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11061*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11062*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11063*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11064*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11065*4bdc9457SAndroid Build Coastguard Worker .m(4) 11066*4bdc9457SAndroid Build Coastguard Worker .n(16) 11067*4bdc9457SAndroid Build Coastguard Worker .k(8) 11068*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 11069*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11070*4bdc9457SAndroid Build Coastguard Worker } 11071*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,strided_cm)11072*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, strided_cm) { 11073*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11074*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11075*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11076*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11077*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11078*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11079*4bdc9457SAndroid Build Coastguard Worker .m(4) 11080*4bdc9457SAndroid Build Coastguard Worker .n(16) 11081*4bdc9457SAndroid Build Coastguard Worker .k(8) 11082*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 11083*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11084*4bdc9457SAndroid Build Coastguard Worker } 11085*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,no_a_zero_point)11086*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, no_a_zero_point) { 11087*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11088*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11089*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11090*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11091*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11092*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11093*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11094*4bdc9457SAndroid Build Coastguard Worker .m(4) 11095*4bdc9457SAndroid Build Coastguard Worker .n(16) 11096*4bdc9457SAndroid Build Coastguard Worker .k(k) 11097*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 11098*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11099*4bdc9457SAndroid Build Coastguard Worker } 11100*4bdc9457SAndroid Build Coastguard Worker } 11101*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,no_b_zero_point)11102*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, no_b_zero_point) { 11103*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11104*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11105*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11106*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11107*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11108*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11109*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11110*4bdc9457SAndroid Build Coastguard Worker .m(4) 11111*4bdc9457SAndroid Build Coastguard Worker .n(16) 11112*4bdc9457SAndroid Build Coastguard Worker .k(k) 11113*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 11114*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11115*4bdc9457SAndroid Build Coastguard Worker } 11116*4bdc9457SAndroid Build Coastguard Worker } 11117*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75,no_zero_point)11118*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_CORTEX_A75, no_zero_point) { 11119*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11120*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11121*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11122*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11123*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11124*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11125*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11126*4bdc9457SAndroid Build Coastguard Worker .m(4) 11127*4bdc9457SAndroid Build Coastguard Worker .n(16) 11128*4bdc9457SAndroid Build Coastguard Worker .k(k) 11129*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 11130*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 11131*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a75, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11132*4bdc9457SAndroid Build Coastguard Worker } 11133*4bdc9457SAndroid Build Coastguard Worker } 11134*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 11135*4bdc9457SAndroid Build Coastguard Worker 11136*4bdc9457SAndroid Build Coastguard Worker 11137*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8)11138*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8) { 11139*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11140*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11141*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11142*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11143*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11144*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11145*4bdc9457SAndroid Build Coastguard Worker .m(4) 11146*4bdc9457SAndroid Build Coastguard Worker .n(16) 11147*4bdc9457SAndroid Build Coastguard Worker .k(8) 11148*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11149*4bdc9457SAndroid Build Coastguard Worker } 11150*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,strided_cn)11151*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, strided_cn) { 11152*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11153*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11154*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11155*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11156*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11157*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11158*4bdc9457SAndroid Build Coastguard Worker .m(4) 11159*4bdc9457SAndroid Build Coastguard Worker .n(16) 11160*4bdc9457SAndroid Build Coastguard Worker .k(8) 11161*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11162*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11163*4bdc9457SAndroid Build Coastguard Worker } 11164*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8_strided_a)11165*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8_strided_a) { 11166*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11167*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11168*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11169*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11170*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11171*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11172*4bdc9457SAndroid Build Coastguard Worker .m(4) 11173*4bdc9457SAndroid Build Coastguard Worker .n(16) 11174*4bdc9457SAndroid Build Coastguard Worker .k(8) 11175*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 11176*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11177*4bdc9457SAndroid Build Coastguard Worker } 11178*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8_subtile)11179*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8_subtile) { 11180*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11181*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11182*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11183*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11184*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11185*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11186*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11187*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11188*4bdc9457SAndroid Build Coastguard Worker .m(m) 11189*4bdc9457SAndroid Build Coastguard Worker .n(n) 11190*4bdc9457SAndroid Build Coastguard Worker .k(8) 11191*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11192*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11193*4bdc9457SAndroid Build Coastguard Worker } 11194*4bdc9457SAndroid Build Coastguard Worker } 11195*4bdc9457SAndroid Build Coastguard Worker } 11196*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8_subtile_m)11197*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8_subtile_m) { 11198*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11199*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11200*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11201*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11202*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11203*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11204*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11205*4bdc9457SAndroid Build Coastguard Worker .m(m) 11206*4bdc9457SAndroid Build Coastguard Worker .n(16) 11207*4bdc9457SAndroid Build Coastguard Worker .k(8) 11208*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11209*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11210*4bdc9457SAndroid Build Coastguard Worker } 11211*4bdc9457SAndroid Build Coastguard Worker } 11212*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_eq_8_subtile_n)11213*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_eq_8_subtile_n) { 11214*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11215*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11216*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11217*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11218*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11219*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11220*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11221*4bdc9457SAndroid Build Coastguard Worker .m(4) 11222*4bdc9457SAndroid Build Coastguard Worker .n(n) 11223*4bdc9457SAndroid Build Coastguard Worker .k(8) 11224*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11225*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11226*4bdc9457SAndroid Build Coastguard Worker } 11227*4bdc9457SAndroid Build Coastguard Worker } 11228*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_lt_8)11229*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_lt_8) { 11230*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11231*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 11232*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11233*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11234*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11235*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11236*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11237*4bdc9457SAndroid Build Coastguard Worker .m(4) 11238*4bdc9457SAndroid Build Coastguard Worker .n(16) 11239*4bdc9457SAndroid Build Coastguard Worker .k(k) 11240*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11241*4bdc9457SAndroid Build Coastguard Worker } 11242*4bdc9457SAndroid Build Coastguard Worker } 11243*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_lt_8_strided_a)11244*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_lt_8_strided_a) { 11245*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11246*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 11247*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11248*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11249*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11250*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11251*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11252*4bdc9457SAndroid Build Coastguard Worker .m(4) 11253*4bdc9457SAndroid Build Coastguard Worker .n(16) 11254*4bdc9457SAndroid Build Coastguard Worker .k(k) 11255*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 11256*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11257*4bdc9457SAndroid Build Coastguard Worker } 11258*4bdc9457SAndroid Build Coastguard Worker } 11259*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_lt_8_subtile)11260*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_lt_8_subtile) { 11261*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11262*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 8; k++) { 11263*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11264*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11265*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11266*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11267*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11268*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11269*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11270*4bdc9457SAndroid Build Coastguard Worker .m(m) 11271*4bdc9457SAndroid Build Coastguard Worker .n(n) 11272*4bdc9457SAndroid Build Coastguard Worker .k(k) 11273*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11274*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11275*4bdc9457SAndroid Build Coastguard Worker } 11276*4bdc9457SAndroid Build Coastguard Worker } 11277*4bdc9457SAndroid Build Coastguard Worker } 11278*4bdc9457SAndroid Build Coastguard Worker } 11279*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_gt_8)11280*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_gt_8) { 11281*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11282*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 11283*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11284*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11285*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11286*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11287*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11288*4bdc9457SAndroid Build Coastguard Worker .m(4) 11289*4bdc9457SAndroid Build Coastguard Worker .n(16) 11290*4bdc9457SAndroid Build Coastguard Worker .k(k) 11291*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11292*4bdc9457SAndroid Build Coastguard Worker } 11293*4bdc9457SAndroid Build Coastguard Worker } 11294*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_gt_8_strided_a)11295*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_gt_8_strided_a) { 11296*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11297*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 11298*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11299*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11300*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11301*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11302*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11303*4bdc9457SAndroid Build Coastguard Worker .m(4) 11304*4bdc9457SAndroid Build Coastguard Worker .n(16) 11305*4bdc9457SAndroid Build Coastguard Worker .k(k) 11306*4bdc9457SAndroid Build Coastguard Worker .a_stride(19) 11307*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11308*4bdc9457SAndroid Build Coastguard Worker } 11309*4bdc9457SAndroid Build Coastguard Worker } 11310*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_gt_8_subtile)11311*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_gt_8_subtile) { 11312*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11313*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 9; k < 16; k++) { 11314*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11315*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11316*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11317*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11318*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11319*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11320*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11321*4bdc9457SAndroid Build Coastguard Worker .m(m) 11322*4bdc9457SAndroid Build Coastguard Worker .n(n) 11323*4bdc9457SAndroid Build Coastguard Worker .k(k) 11324*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11325*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11326*4bdc9457SAndroid Build Coastguard Worker } 11327*4bdc9457SAndroid Build Coastguard Worker } 11328*4bdc9457SAndroid Build Coastguard Worker } 11329*4bdc9457SAndroid Build Coastguard Worker } 11330*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_div_8)11331*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_div_8) { 11332*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11333*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 11334*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11335*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11336*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11337*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11338*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11339*4bdc9457SAndroid Build Coastguard Worker .m(4) 11340*4bdc9457SAndroid Build Coastguard Worker .n(16) 11341*4bdc9457SAndroid Build Coastguard Worker .k(k) 11342*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11343*4bdc9457SAndroid Build Coastguard Worker } 11344*4bdc9457SAndroid Build Coastguard Worker } 11345*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_div_8_strided_a)11346*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_div_8_strided_a) { 11347*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11348*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 11349*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11350*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11351*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11352*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11353*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11354*4bdc9457SAndroid Build Coastguard Worker .m(4) 11355*4bdc9457SAndroid Build Coastguard Worker .n(16) 11356*4bdc9457SAndroid Build Coastguard Worker .k(k) 11357*4bdc9457SAndroid Build Coastguard Worker .a_stride(83) 11358*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11359*4bdc9457SAndroid Build Coastguard Worker } 11360*4bdc9457SAndroid Build Coastguard Worker } 11361*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,k_div_8_subtile)11362*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, k_div_8_subtile) { 11363*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11364*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 16; k <= 80; k += 8) { 11365*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11366*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11367*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11368*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11369*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11370*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11371*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11372*4bdc9457SAndroid Build Coastguard Worker .m(m) 11373*4bdc9457SAndroid Build Coastguard Worker .n(n) 11374*4bdc9457SAndroid Build Coastguard Worker .k(k) 11375*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11376*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11377*4bdc9457SAndroid Build Coastguard Worker } 11378*4bdc9457SAndroid Build Coastguard Worker } 11379*4bdc9457SAndroid Build Coastguard Worker } 11380*4bdc9457SAndroid Build Coastguard Worker } 11381*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_gt_16)11382*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_gt_16) { 11383*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11384*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11385*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11386*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11387*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11388*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11389*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11390*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11391*4bdc9457SAndroid Build Coastguard Worker .m(4) 11392*4bdc9457SAndroid Build Coastguard Worker .n(n) 11393*4bdc9457SAndroid Build Coastguard Worker .k(k) 11394*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11395*4bdc9457SAndroid Build Coastguard Worker } 11396*4bdc9457SAndroid Build Coastguard Worker } 11397*4bdc9457SAndroid Build Coastguard Worker } 11398*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_gt_16_strided_cn)11399*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_gt_16_strided_cn) { 11400*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11401*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11402*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11403*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11404*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11405*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11406*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11407*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11408*4bdc9457SAndroid Build Coastguard Worker .m(4) 11409*4bdc9457SAndroid Build Coastguard Worker .n(n) 11410*4bdc9457SAndroid Build Coastguard Worker .k(k) 11411*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11413*4bdc9457SAndroid Build Coastguard Worker } 11414*4bdc9457SAndroid Build Coastguard Worker } 11415*4bdc9457SAndroid Build Coastguard Worker } 11416*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_gt_16_strided_a)11417*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_gt_16_strided_a) { 11418*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11419*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11420*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11421*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11422*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11423*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11424*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11425*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11426*4bdc9457SAndroid Build Coastguard Worker .m(4) 11427*4bdc9457SAndroid Build Coastguard Worker .n(n) 11428*4bdc9457SAndroid Build Coastguard Worker .k(k) 11429*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 11430*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11431*4bdc9457SAndroid Build Coastguard Worker } 11432*4bdc9457SAndroid Build Coastguard Worker } 11433*4bdc9457SAndroid Build Coastguard Worker } 11434*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_gt_16_subtile)11435*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_gt_16_subtile) { 11436*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11437*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11438*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11439*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11440*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11441*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11442*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11443*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11444*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11445*4bdc9457SAndroid Build Coastguard Worker .m(m) 11446*4bdc9457SAndroid Build Coastguard Worker .n(n) 11447*4bdc9457SAndroid Build Coastguard Worker .k(k) 11448*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11449*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11450*4bdc9457SAndroid Build Coastguard Worker } 11451*4bdc9457SAndroid Build Coastguard Worker } 11452*4bdc9457SAndroid Build Coastguard Worker } 11453*4bdc9457SAndroid Build Coastguard Worker } 11454*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_div_16)11455*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_div_16) { 11456*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11457*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11458*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11459*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11460*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11461*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11462*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11463*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11464*4bdc9457SAndroid Build Coastguard Worker .m(4) 11465*4bdc9457SAndroid Build Coastguard Worker .n(n) 11466*4bdc9457SAndroid Build Coastguard Worker .k(k) 11467*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11468*4bdc9457SAndroid Build Coastguard Worker } 11469*4bdc9457SAndroid Build Coastguard Worker } 11470*4bdc9457SAndroid Build Coastguard Worker } 11471*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_div_16_strided_cn)11472*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_div_16_strided_cn) { 11473*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11474*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11475*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11476*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11477*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11478*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11479*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11480*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11481*4bdc9457SAndroid Build Coastguard Worker .m(4) 11482*4bdc9457SAndroid Build Coastguard Worker .n(n) 11483*4bdc9457SAndroid Build Coastguard Worker .k(k) 11484*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11485*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11486*4bdc9457SAndroid Build Coastguard Worker } 11487*4bdc9457SAndroid Build Coastguard Worker } 11488*4bdc9457SAndroid Build Coastguard Worker } 11489*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_div_16_strided_a)11490*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_div_16_strided_a) { 11491*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11492*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11493*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11494*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11495*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11496*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11497*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11498*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11499*4bdc9457SAndroid Build Coastguard Worker .m(4) 11500*4bdc9457SAndroid Build Coastguard Worker .n(n) 11501*4bdc9457SAndroid Build Coastguard Worker .k(k) 11502*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 11503*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11504*4bdc9457SAndroid Build Coastguard Worker } 11505*4bdc9457SAndroid Build Coastguard Worker } 11506*4bdc9457SAndroid Build Coastguard Worker } 11507*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,n_div_16_subtile)11508*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, n_div_16_subtile) { 11509*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11510*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11511*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11512*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11513*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11514*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11515*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11516*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11517*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11518*4bdc9457SAndroid Build Coastguard Worker .m(m) 11519*4bdc9457SAndroid Build Coastguard Worker .n(n) 11520*4bdc9457SAndroid Build Coastguard Worker .k(k) 11521*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11522*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11523*4bdc9457SAndroid Build Coastguard Worker } 11524*4bdc9457SAndroid Build Coastguard Worker } 11525*4bdc9457SAndroid Build Coastguard Worker } 11526*4bdc9457SAndroid Build Coastguard Worker } 11527*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,strided_cm_subtile)11528*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, strided_cm_subtile) { 11529*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11530*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11531*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11532*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11533*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11534*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11535*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11536*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11537*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11538*4bdc9457SAndroid Build Coastguard Worker .m(m) 11539*4bdc9457SAndroid Build Coastguard Worker .n(n) 11540*4bdc9457SAndroid Build Coastguard Worker .k(k) 11541*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 11542*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11543*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11544*4bdc9457SAndroid Build Coastguard Worker } 11545*4bdc9457SAndroid Build Coastguard Worker } 11546*4bdc9457SAndroid Build Coastguard Worker } 11547*4bdc9457SAndroid Build Coastguard Worker } 11548*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,qmin)11549*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, qmin) { 11550*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11551*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11552*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11553*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11554*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11555*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11556*4bdc9457SAndroid Build Coastguard Worker .m(4) 11557*4bdc9457SAndroid Build Coastguard Worker .n(16) 11558*4bdc9457SAndroid Build Coastguard Worker .k(8) 11559*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 11560*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11561*4bdc9457SAndroid Build Coastguard Worker } 11562*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,qmax)11563*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, qmax) { 11564*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11565*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11566*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11567*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11568*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11569*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11570*4bdc9457SAndroid Build Coastguard Worker .m(4) 11571*4bdc9457SAndroid Build Coastguard Worker .n(16) 11572*4bdc9457SAndroid Build Coastguard Worker .k(8) 11573*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 11574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11575*4bdc9457SAndroid Build Coastguard Worker } 11576*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,strided_cm)11577*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, strided_cm) { 11578*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11579*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11580*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11581*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11582*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11583*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11584*4bdc9457SAndroid Build Coastguard Worker .m(4) 11585*4bdc9457SAndroid Build Coastguard Worker .n(16) 11586*4bdc9457SAndroid Build Coastguard Worker .k(8) 11587*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 11588*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11589*4bdc9457SAndroid Build Coastguard Worker } 11590*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,no_a_zero_point)11591*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, no_a_zero_point) { 11592*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11593*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11594*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11595*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11596*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11597*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11598*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11599*4bdc9457SAndroid Build Coastguard Worker .m(4) 11600*4bdc9457SAndroid Build Coastguard Worker .n(16) 11601*4bdc9457SAndroid Build Coastguard Worker .k(k) 11602*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 11603*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11604*4bdc9457SAndroid Build Coastguard Worker } 11605*4bdc9457SAndroid Build Coastguard Worker } 11606*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,no_b_zero_point)11607*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, no_b_zero_point) { 11608*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11609*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11610*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11611*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11612*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11613*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11614*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11615*4bdc9457SAndroid Build Coastguard Worker .m(4) 11616*4bdc9457SAndroid Build Coastguard Worker .n(16) 11617*4bdc9457SAndroid Build Coastguard Worker .k(k) 11618*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 11619*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11620*4bdc9457SAndroid Build Coastguard Worker } 11621*4bdc9457SAndroid Build Coastguard Worker } 11622*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53,no_zero_point)11623*4bdc9457SAndroid Build Coastguard Worker TEST(QU8_GEMM_MINMAX_RNDNU_4X16__AARCH64_NEON_MLAL_LANE_PRFM_CORTEX_A53, no_zero_point) { 11624*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON; 11625*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 40; k += 9) { 11626*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11627*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11628*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11629*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11630*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11631*4bdc9457SAndroid Build Coastguard Worker .m(4) 11632*4bdc9457SAndroid Build Coastguard Worker .n(16) 11633*4bdc9457SAndroid Build Coastguard Worker .k(k) 11634*4bdc9457SAndroid Build Coastguard Worker .a_zero_point(0) 11635*4bdc9457SAndroid Build Coastguard Worker .b_zero_point(0) 11636*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_qu8_gemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53, xnn_init_qu8_conv_minmax_rndnu_neon_params, xnn_qu8_requantize_rndnu); 11637*4bdc9457SAndroid Build Coastguard Worker } 11638*4bdc9457SAndroid Build Coastguard Worker } 11639*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 11640