1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates. 2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved. 3*4bdc9457SAndroid Build Coastguard Worker // 4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC 5*4bdc9457SAndroid Build Coastguard Worker // 6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the 7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree. 8*4bdc9457SAndroid Build Coastguard Worker // 9*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit! 10*4bdc9457SAndroid Build Coastguard Worker // Specification: test/f16-gemm-minmax.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_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4)28*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 29*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 38*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 39*4bdc9457SAndroid Build Coastguard Worker } 40*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,strided_cn)41*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 42*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 51*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 52*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 53*4bdc9457SAndroid Build Coastguard Worker } 54*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_strided_a)55*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_strided_a) { 56*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 65*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 66*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 67*4bdc9457SAndroid Build Coastguard Worker } 68*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)69*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 70*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 81*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 82*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 83*4bdc9457SAndroid Build Coastguard Worker } 84*4bdc9457SAndroid Build Coastguard Worker } 85*4bdc9457SAndroid Build Coastguard Worker } 86*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)87*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 88*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 98*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 99*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 100*4bdc9457SAndroid Build Coastguard Worker } 101*4bdc9457SAndroid Build Coastguard Worker } 102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)103*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 104*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 114*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 115*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 116*4bdc9457SAndroid Build Coastguard Worker } 117*4bdc9457SAndroid Build Coastguard Worker } 118*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4)119*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 120*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 121*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 131*4bdc9457SAndroid Build Coastguard Worker } 132*4bdc9457SAndroid Build Coastguard Worker } 133*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4_strided_a)134*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4_strided_a) { 135*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 136*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; 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(7) 146*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 147*4bdc9457SAndroid Build Coastguard Worker } 148*4bdc9457SAndroid Build Coastguard Worker } 149*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)150*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 151*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 152*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 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(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4)170*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 171*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 172*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 182*4bdc9457SAndroid Build Coastguard Worker } 183*4bdc9457SAndroid Build Coastguard Worker } 184*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4_strided_a)185*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4_strided_a) { 186*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 187*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; 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(11) 197*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 198*4bdc9457SAndroid Build Coastguard Worker } 199*4bdc9457SAndroid Build Coastguard Worker } 200*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 202*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 203*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 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(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_div_4)221*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 222*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 223*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 233*4bdc9457SAndroid Build Coastguard Worker } 234*4bdc9457SAndroid Build Coastguard Worker } 235*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_div_4_strided_a)236*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_div_4_strided_a) { 237*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 238*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 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(43) 248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 249*4bdc9457SAndroid Build Coastguard Worker } 250*4bdc9457SAndroid Build Coastguard Worker } 251*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 253*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 254*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 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(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8)272*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8) { 273*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 274*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 275*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 285*4bdc9457SAndroid Build Coastguard Worker } 286*4bdc9457SAndroid Build Coastguard Worker } 287*4bdc9457SAndroid Build Coastguard Worker } 288*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_strided_cn)289*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 290*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 291*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 292*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 303*4bdc9457SAndroid Build Coastguard Worker } 304*4bdc9457SAndroid Build Coastguard Worker } 305*4bdc9457SAndroid Build Coastguard Worker } 306*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_strided_a)307*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_strided_a) { 308*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 309*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 310*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 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(23) 320*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 321*4bdc9457SAndroid Build Coastguard Worker } 322*4bdc9457SAndroid Build Coastguard Worker } 323*4bdc9457SAndroid Build Coastguard Worker } 324*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_subtile)325*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_subtile) { 326*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 327*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 328*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 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(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,n_div_8)345*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, n_div_8) { 346*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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 <= 20; k += 5) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 358*4bdc9457SAndroid Build Coastguard Worker } 359*4bdc9457SAndroid Build Coastguard Worker } 360*4bdc9457SAndroid Build Coastguard Worker } 361*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_strided_cn)362*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_strided_cn) { 363*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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 <= 20; k += 5) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 376*4bdc9457SAndroid Build Coastguard Worker } 377*4bdc9457SAndroid Build Coastguard Worker } 378*4bdc9457SAndroid Build Coastguard Worker } 379*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_strided_a)380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_strided_a) { 381*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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 <= 20; k += 5) { 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(23) 393*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 394*4bdc9457SAndroid Build Coastguard Worker } 395*4bdc9457SAndroid Build Coastguard Worker } 396*4bdc9457SAndroid Build Coastguard Worker } 397*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_subtile)398*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_subtile) { 399*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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 <= 20; k += 5) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 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(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)418*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 419*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 420*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 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_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 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(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,qmin)439*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, qmin) { 440*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 449*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 450*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 451*4bdc9457SAndroid Build Coastguard Worker } 452*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,qmax)453*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, qmax) { 454*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 463*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 464*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 465*4bdc9457SAndroid Build Coastguard Worker } 466*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64,strided_cm)467*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 468*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 477*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 478*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 479*4bdc9457SAndroid Build Coastguard Worker } 480*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 481*4bdc9457SAndroid Build Coastguard Worker 482*4bdc9457SAndroid Build Coastguard Worker 483*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2)484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2) { 485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 486*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 487*4bdc9457SAndroid Build Coastguard Worker .mr(1) 488*4bdc9457SAndroid Build Coastguard Worker .nr(16) 489*4bdc9457SAndroid Build Coastguard Worker .kr(1) 490*4bdc9457SAndroid Build Coastguard Worker .sr(1) 491*4bdc9457SAndroid Build Coastguard Worker .m(1) 492*4bdc9457SAndroid Build Coastguard Worker .n(16) 493*4bdc9457SAndroid Build Coastguard Worker .k(2) 494*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 495*4bdc9457SAndroid Build Coastguard Worker } 496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,strided_cn)497*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, strided_cn) { 498*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 499*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 500*4bdc9457SAndroid Build Coastguard Worker .mr(1) 501*4bdc9457SAndroid Build Coastguard Worker .nr(16) 502*4bdc9457SAndroid Build Coastguard Worker .kr(1) 503*4bdc9457SAndroid Build Coastguard Worker .sr(1) 504*4bdc9457SAndroid Build Coastguard Worker .m(1) 505*4bdc9457SAndroid Build Coastguard Worker .n(16) 506*4bdc9457SAndroid Build Coastguard Worker .k(2) 507*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 508*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 509*4bdc9457SAndroid Build Coastguard Worker } 510*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_strided_a)511*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_strided_a) { 512*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 513*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 514*4bdc9457SAndroid Build Coastguard Worker .mr(1) 515*4bdc9457SAndroid Build Coastguard Worker .nr(16) 516*4bdc9457SAndroid Build Coastguard Worker .kr(1) 517*4bdc9457SAndroid Build Coastguard Worker .sr(1) 518*4bdc9457SAndroid Build Coastguard Worker .m(1) 519*4bdc9457SAndroid Build Coastguard Worker .n(16) 520*4bdc9457SAndroid Build Coastguard Worker .k(2) 521*4bdc9457SAndroid Build Coastguard Worker .a_stride(5) 522*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 523*4bdc9457SAndroid Build Coastguard Worker } 524*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile)525*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile) { 526*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 527*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 528*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 529*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 530*4bdc9457SAndroid Build Coastguard Worker .mr(1) 531*4bdc9457SAndroid Build Coastguard Worker .nr(16) 532*4bdc9457SAndroid Build Coastguard Worker .kr(1) 533*4bdc9457SAndroid Build Coastguard Worker .sr(1) 534*4bdc9457SAndroid Build Coastguard Worker .m(m) 535*4bdc9457SAndroid Build Coastguard Worker .n(n) 536*4bdc9457SAndroid Build Coastguard Worker .k(2) 537*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 538*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 539*4bdc9457SAndroid Build Coastguard Worker } 540*4bdc9457SAndroid Build Coastguard Worker } 541*4bdc9457SAndroid Build Coastguard Worker } 542*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_m)543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_m) { 544*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 545*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 546*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 547*4bdc9457SAndroid Build Coastguard Worker .mr(1) 548*4bdc9457SAndroid Build Coastguard Worker .nr(16) 549*4bdc9457SAndroid Build Coastguard Worker .kr(1) 550*4bdc9457SAndroid Build Coastguard Worker .sr(1) 551*4bdc9457SAndroid Build Coastguard Worker .m(m) 552*4bdc9457SAndroid Build Coastguard Worker .n(16) 553*4bdc9457SAndroid Build Coastguard Worker .k(2) 554*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 555*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 556*4bdc9457SAndroid Build Coastguard Worker } 557*4bdc9457SAndroid Build Coastguard Worker } 558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_n)559*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_n) { 560*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 561*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 562*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 563*4bdc9457SAndroid Build Coastguard Worker .mr(1) 564*4bdc9457SAndroid Build Coastguard Worker .nr(16) 565*4bdc9457SAndroid Build Coastguard Worker .kr(1) 566*4bdc9457SAndroid Build Coastguard Worker .sr(1) 567*4bdc9457SAndroid Build Coastguard Worker .m(1) 568*4bdc9457SAndroid Build Coastguard Worker .n(n) 569*4bdc9457SAndroid Build Coastguard Worker .k(2) 570*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 571*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 572*4bdc9457SAndroid Build Coastguard Worker } 573*4bdc9457SAndroid Build Coastguard Worker } 574*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2)575*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2) { 576*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 577*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 578*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 579*4bdc9457SAndroid Build Coastguard Worker .mr(1) 580*4bdc9457SAndroid Build Coastguard Worker .nr(16) 581*4bdc9457SAndroid Build Coastguard Worker .kr(1) 582*4bdc9457SAndroid Build Coastguard Worker .sr(1) 583*4bdc9457SAndroid Build Coastguard Worker .m(1) 584*4bdc9457SAndroid Build Coastguard Worker .n(16) 585*4bdc9457SAndroid Build Coastguard Worker .k(k) 586*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 587*4bdc9457SAndroid Build Coastguard Worker } 588*4bdc9457SAndroid Build Coastguard Worker } 589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_strided_a)590*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_strided_a) { 591*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 592*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 593*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 594*4bdc9457SAndroid Build Coastguard Worker .mr(1) 595*4bdc9457SAndroid Build Coastguard Worker .nr(16) 596*4bdc9457SAndroid Build Coastguard Worker .kr(1) 597*4bdc9457SAndroid Build Coastguard Worker .sr(1) 598*4bdc9457SAndroid Build Coastguard Worker .m(1) 599*4bdc9457SAndroid Build Coastguard Worker .n(16) 600*4bdc9457SAndroid Build Coastguard Worker .k(k) 601*4bdc9457SAndroid Build Coastguard Worker .a_stride(5) 602*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 603*4bdc9457SAndroid Build Coastguard Worker } 604*4bdc9457SAndroid Build Coastguard Worker } 605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_subtile)606*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_subtile) { 607*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 608*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 609*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 610*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 611*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 612*4bdc9457SAndroid Build Coastguard Worker .mr(1) 613*4bdc9457SAndroid Build Coastguard Worker .nr(16) 614*4bdc9457SAndroid Build Coastguard Worker .kr(1) 615*4bdc9457SAndroid Build Coastguard Worker .sr(1) 616*4bdc9457SAndroid Build Coastguard Worker .m(m) 617*4bdc9457SAndroid Build Coastguard Worker .n(n) 618*4bdc9457SAndroid Build Coastguard Worker .k(k) 619*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 621*4bdc9457SAndroid Build Coastguard Worker } 622*4bdc9457SAndroid Build Coastguard Worker } 623*4bdc9457SAndroid Build Coastguard Worker } 624*4bdc9457SAndroid Build Coastguard Worker } 625*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2)626*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2) { 627*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 628*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 629*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 630*4bdc9457SAndroid Build Coastguard Worker .mr(1) 631*4bdc9457SAndroid Build Coastguard Worker .nr(16) 632*4bdc9457SAndroid Build Coastguard Worker .kr(1) 633*4bdc9457SAndroid Build Coastguard Worker .sr(1) 634*4bdc9457SAndroid Build Coastguard Worker .m(1) 635*4bdc9457SAndroid Build Coastguard Worker .n(16) 636*4bdc9457SAndroid Build Coastguard Worker .k(k) 637*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 638*4bdc9457SAndroid Build Coastguard Worker } 639*4bdc9457SAndroid Build Coastguard Worker } 640*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_strided_a)641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_strided_a) { 642*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 643*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 644*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 645*4bdc9457SAndroid Build Coastguard Worker .mr(1) 646*4bdc9457SAndroid Build Coastguard Worker .nr(16) 647*4bdc9457SAndroid Build Coastguard Worker .kr(1) 648*4bdc9457SAndroid Build Coastguard Worker .sr(1) 649*4bdc9457SAndroid Build Coastguard Worker .m(1) 650*4bdc9457SAndroid Build Coastguard Worker .n(16) 651*4bdc9457SAndroid Build Coastguard Worker .k(k) 652*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 653*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 654*4bdc9457SAndroid Build Coastguard Worker } 655*4bdc9457SAndroid Build Coastguard Worker } 656*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_subtile)657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_subtile) { 658*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 659*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 660*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 661*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 662*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 663*4bdc9457SAndroid Build Coastguard Worker .mr(1) 664*4bdc9457SAndroid Build Coastguard Worker .nr(16) 665*4bdc9457SAndroid Build Coastguard Worker .kr(1) 666*4bdc9457SAndroid Build Coastguard Worker .sr(1) 667*4bdc9457SAndroid Build Coastguard Worker .m(m) 668*4bdc9457SAndroid Build Coastguard Worker .n(n) 669*4bdc9457SAndroid Build Coastguard Worker .k(k) 670*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 671*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 672*4bdc9457SAndroid Build Coastguard Worker } 673*4bdc9457SAndroid Build Coastguard Worker } 674*4bdc9457SAndroid Build Coastguard Worker } 675*4bdc9457SAndroid Build Coastguard Worker } 676*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_div_2)677*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_div_2) { 678*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 679*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 680*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 681*4bdc9457SAndroid Build Coastguard Worker .mr(1) 682*4bdc9457SAndroid Build Coastguard Worker .nr(16) 683*4bdc9457SAndroid Build Coastguard Worker .kr(1) 684*4bdc9457SAndroid Build Coastguard Worker .sr(1) 685*4bdc9457SAndroid Build Coastguard Worker .m(1) 686*4bdc9457SAndroid Build Coastguard Worker .n(16) 687*4bdc9457SAndroid Build Coastguard Worker .k(k) 688*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 689*4bdc9457SAndroid Build Coastguard Worker } 690*4bdc9457SAndroid Build Coastguard Worker } 691*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_strided_a)692*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_strided_a) { 693*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 694*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 695*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 696*4bdc9457SAndroid Build Coastguard Worker .mr(1) 697*4bdc9457SAndroid Build Coastguard Worker .nr(16) 698*4bdc9457SAndroid Build Coastguard Worker .kr(1) 699*4bdc9457SAndroid Build Coastguard Worker .sr(1) 700*4bdc9457SAndroid Build Coastguard Worker .m(1) 701*4bdc9457SAndroid Build Coastguard Worker .n(16) 702*4bdc9457SAndroid Build Coastguard Worker .k(k) 703*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 704*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 705*4bdc9457SAndroid Build Coastguard Worker } 706*4bdc9457SAndroid Build Coastguard Worker } 707*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_subtile)708*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_subtile) { 709*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 710*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 711*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 712*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 713*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 714*4bdc9457SAndroid Build Coastguard Worker .mr(1) 715*4bdc9457SAndroid Build Coastguard Worker .nr(16) 716*4bdc9457SAndroid Build Coastguard Worker .kr(1) 717*4bdc9457SAndroid Build Coastguard Worker .sr(1) 718*4bdc9457SAndroid Build Coastguard Worker .m(m) 719*4bdc9457SAndroid Build Coastguard Worker .n(n) 720*4bdc9457SAndroid Build Coastguard Worker .k(k) 721*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 722*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 723*4bdc9457SAndroid Build Coastguard Worker } 724*4bdc9457SAndroid Build Coastguard Worker } 725*4bdc9457SAndroid Build Coastguard Worker } 726*4bdc9457SAndroid Build Coastguard Worker } 727*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16)728*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16) { 729*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 730*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 731*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 732*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 733*4bdc9457SAndroid Build Coastguard Worker .mr(1) 734*4bdc9457SAndroid Build Coastguard Worker .nr(16) 735*4bdc9457SAndroid Build Coastguard Worker .kr(1) 736*4bdc9457SAndroid Build Coastguard Worker .sr(1) 737*4bdc9457SAndroid Build Coastguard Worker .m(1) 738*4bdc9457SAndroid Build Coastguard Worker .n(n) 739*4bdc9457SAndroid Build Coastguard Worker .k(k) 740*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 741*4bdc9457SAndroid Build Coastguard Worker } 742*4bdc9457SAndroid Build Coastguard Worker } 743*4bdc9457SAndroid Build Coastguard Worker } 744*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_cn)745*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_cn) { 746*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 747*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 748*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 749*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 750*4bdc9457SAndroid Build Coastguard Worker .mr(1) 751*4bdc9457SAndroid Build Coastguard Worker .nr(16) 752*4bdc9457SAndroid Build Coastguard Worker .kr(1) 753*4bdc9457SAndroid Build Coastguard Worker .sr(1) 754*4bdc9457SAndroid Build Coastguard Worker .m(1) 755*4bdc9457SAndroid Build Coastguard Worker .n(n) 756*4bdc9457SAndroid Build Coastguard Worker .k(k) 757*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 758*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 759*4bdc9457SAndroid Build Coastguard Worker } 760*4bdc9457SAndroid Build Coastguard Worker } 761*4bdc9457SAndroid Build Coastguard Worker } 762*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_a)763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_a) { 764*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 765*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 766*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 767*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 768*4bdc9457SAndroid Build Coastguard Worker .mr(1) 769*4bdc9457SAndroid Build Coastguard Worker .nr(16) 770*4bdc9457SAndroid Build Coastguard Worker .kr(1) 771*4bdc9457SAndroid Build Coastguard Worker .sr(1) 772*4bdc9457SAndroid Build Coastguard Worker .m(1) 773*4bdc9457SAndroid Build Coastguard Worker .n(n) 774*4bdc9457SAndroid Build Coastguard Worker .k(k) 775*4bdc9457SAndroid Build Coastguard Worker .a_stride(13) 776*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 777*4bdc9457SAndroid Build Coastguard Worker } 778*4bdc9457SAndroid Build Coastguard Worker } 779*4bdc9457SAndroid Build Coastguard Worker } 780*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_subtile)781*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_subtile) { 782*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 783*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 784*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 785*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 786*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 787*4bdc9457SAndroid Build Coastguard Worker .mr(1) 788*4bdc9457SAndroid Build Coastguard Worker .nr(16) 789*4bdc9457SAndroid Build Coastguard Worker .kr(1) 790*4bdc9457SAndroid Build Coastguard Worker .sr(1) 791*4bdc9457SAndroid Build Coastguard Worker .m(m) 792*4bdc9457SAndroid Build Coastguard Worker .n(n) 793*4bdc9457SAndroid Build Coastguard Worker .k(k) 794*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 795*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 796*4bdc9457SAndroid Build Coastguard Worker } 797*4bdc9457SAndroid Build Coastguard Worker } 798*4bdc9457SAndroid Build Coastguard Worker } 799*4bdc9457SAndroid Build Coastguard Worker } 800*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_div_16)801*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_div_16) { 802*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 803*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 804*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 805*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 806*4bdc9457SAndroid Build Coastguard Worker .mr(1) 807*4bdc9457SAndroid Build Coastguard Worker .nr(16) 808*4bdc9457SAndroid Build Coastguard Worker .kr(1) 809*4bdc9457SAndroid Build Coastguard Worker .sr(1) 810*4bdc9457SAndroid Build Coastguard Worker .m(1) 811*4bdc9457SAndroid Build Coastguard Worker .n(n) 812*4bdc9457SAndroid Build Coastguard Worker .k(k) 813*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 814*4bdc9457SAndroid Build Coastguard Worker } 815*4bdc9457SAndroid Build Coastguard Worker } 816*4bdc9457SAndroid Build Coastguard Worker } 817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_cn)818*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_cn) { 819*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 820*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 821*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 822*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 823*4bdc9457SAndroid Build Coastguard Worker .mr(1) 824*4bdc9457SAndroid Build Coastguard Worker .nr(16) 825*4bdc9457SAndroid Build Coastguard Worker .kr(1) 826*4bdc9457SAndroid Build Coastguard Worker .sr(1) 827*4bdc9457SAndroid Build Coastguard Worker .m(1) 828*4bdc9457SAndroid Build Coastguard Worker .n(n) 829*4bdc9457SAndroid Build Coastguard Worker .k(k) 830*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 831*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 832*4bdc9457SAndroid Build Coastguard Worker } 833*4bdc9457SAndroid Build Coastguard Worker } 834*4bdc9457SAndroid Build Coastguard Worker } 835*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_a)836*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_a) { 837*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 838*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 839*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 840*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 841*4bdc9457SAndroid Build Coastguard Worker .mr(1) 842*4bdc9457SAndroid Build Coastguard Worker .nr(16) 843*4bdc9457SAndroid Build Coastguard Worker .kr(1) 844*4bdc9457SAndroid Build Coastguard Worker .sr(1) 845*4bdc9457SAndroid Build Coastguard Worker .m(1) 846*4bdc9457SAndroid Build Coastguard Worker .n(n) 847*4bdc9457SAndroid Build Coastguard Worker .k(k) 848*4bdc9457SAndroid Build Coastguard Worker .a_stride(13) 849*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 850*4bdc9457SAndroid Build Coastguard Worker } 851*4bdc9457SAndroid Build Coastguard Worker } 852*4bdc9457SAndroid Build Coastguard Worker } 853*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_subtile)854*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_subtile) { 855*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 856*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 857*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 858*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 859*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 860*4bdc9457SAndroid Build Coastguard Worker .mr(1) 861*4bdc9457SAndroid Build Coastguard Worker .nr(16) 862*4bdc9457SAndroid Build Coastguard Worker .kr(1) 863*4bdc9457SAndroid Build Coastguard Worker .sr(1) 864*4bdc9457SAndroid Build Coastguard Worker .m(m) 865*4bdc9457SAndroid Build Coastguard Worker .n(n) 866*4bdc9457SAndroid Build Coastguard Worker .k(k) 867*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 868*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 869*4bdc9457SAndroid Build Coastguard Worker } 870*4bdc9457SAndroid Build Coastguard Worker } 871*4bdc9457SAndroid Build Coastguard Worker } 872*4bdc9457SAndroid Build Coastguard Worker } 873*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,strided_cm_subtile)874*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, strided_cm_subtile) { 875*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 876*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 877*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 878*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 879*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 880*4bdc9457SAndroid Build Coastguard Worker .mr(1) 881*4bdc9457SAndroid Build Coastguard Worker .nr(16) 882*4bdc9457SAndroid Build Coastguard Worker .kr(1) 883*4bdc9457SAndroid Build Coastguard Worker .sr(1) 884*4bdc9457SAndroid Build Coastguard Worker .m(m) 885*4bdc9457SAndroid Build Coastguard Worker .n(n) 886*4bdc9457SAndroid Build Coastguard Worker .k(k) 887*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 888*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 889*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 890*4bdc9457SAndroid Build Coastguard Worker } 891*4bdc9457SAndroid Build Coastguard Worker } 892*4bdc9457SAndroid Build Coastguard Worker } 893*4bdc9457SAndroid Build Coastguard Worker } 894*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,qmin)895*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, qmin) { 896*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 897*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 898*4bdc9457SAndroid Build Coastguard Worker .mr(1) 899*4bdc9457SAndroid Build Coastguard Worker .nr(16) 900*4bdc9457SAndroid Build Coastguard Worker .kr(1) 901*4bdc9457SAndroid Build Coastguard Worker .sr(1) 902*4bdc9457SAndroid Build Coastguard Worker .m(1) 903*4bdc9457SAndroid Build Coastguard Worker .n(16) 904*4bdc9457SAndroid Build Coastguard Worker .k(2) 905*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 906*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 907*4bdc9457SAndroid Build Coastguard Worker } 908*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,qmax)909*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, qmax) { 910*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 911*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 912*4bdc9457SAndroid Build Coastguard Worker .mr(1) 913*4bdc9457SAndroid Build Coastguard Worker .nr(16) 914*4bdc9457SAndroid Build Coastguard Worker .kr(1) 915*4bdc9457SAndroid Build Coastguard Worker .sr(1) 916*4bdc9457SAndroid Build Coastguard Worker .m(1) 917*4bdc9457SAndroid Build Coastguard Worker .n(16) 918*4bdc9457SAndroid Build Coastguard Worker .k(2) 919*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 920*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 921*4bdc9457SAndroid Build Coastguard Worker } 922*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,strided_cm)923*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, strided_cm) { 924*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 925*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 926*4bdc9457SAndroid Build Coastguard Worker .mr(1) 927*4bdc9457SAndroid Build Coastguard Worker .nr(16) 928*4bdc9457SAndroid Build Coastguard Worker .kr(1) 929*4bdc9457SAndroid Build Coastguard Worker .sr(1) 930*4bdc9457SAndroid Build Coastguard Worker .m(1) 931*4bdc9457SAndroid Build Coastguard Worker .n(16) 932*4bdc9457SAndroid Build Coastguard Worker .k(2) 933*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 934*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 935*4bdc9457SAndroid Build Coastguard Worker } 936*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 937*4bdc9457SAndroid Build Coastguard Worker 938*4bdc9457SAndroid Build Coastguard Worker 939*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4)940*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 941*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 942*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 943*4bdc9457SAndroid Build Coastguard Worker .mr(1) 944*4bdc9457SAndroid Build Coastguard Worker .nr(16) 945*4bdc9457SAndroid Build Coastguard Worker .kr(1) 946*4bdc9457SAndroid Build Coastguard Worker .sr(1) 947*4bdc9457SAndroid Build Coastguard Worker .m(1) 948*4bdc9457SAndroid Build Coastguard Worker .n(16) 949*4bdc9457SAndroid Build Coastguard Worker .k(4) 950*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 951*4bdc9457SAndroid Build Coastguard Worker } 952*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,strided_cn)953*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 954*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 955*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 956*4bdc9457SAndroid Build Coastguard Worker .mr(1) 957*4bdc9457SAndroid Build Coastguard Worker .nr(16) 958*4bdc9457SAndroid Build Coastguard Worker .kr(1) 959*4bdc9457SAndroid Build Coastguard Worker .sr(1) 960*4bdc9457SAndroid Build Coastguard Worker .m(1) 961*4bdc9457SAndroid Build Coastguard Worker .n(16) 962*4bdc9457SAndroid Build Coastguard Worker .k(4) 963*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 964*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 965*4bdc9457SAndroid Build Coastguard Worker } 966*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_strided_a)967*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_strided_a) { 968*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 969*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 970*4bdc9457SAndroid Build Coastguard Worker .mr(1) 971*4bdc9457SAndroid Build Coastguard Worker .nr(16) 972*4bdc9457SAndroid Build Coastguard Worker .kr(1) 973*4bdc9457SAndroid Build Coastguard Worker .sr(1) 974*4bdc9457SAndroid Build Coastguard Worker .m(1) 975*4bdc9457SAndroid Build Coastguard Worker .n(16) 976*4bdc9457SAndroid Build Coastguard Worker .k(4) 977*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 978*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 979*4bdc9457SAndroid Build Coastguard Worker } 980*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)981*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 982*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 983*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 984*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 985*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 986*4bdc9457SAndroid Build Coastguard Worker .mr(1) 987*4bdc9457SAndroid Build Coastguard Worker .nr(16) 988*4bdc9457SAndroid Build Coastguard Worker .kr(1) 989*4bdc9457SAndroid Build Coastguard Worker .sr(1) 990*4bdc9457SAndroid Build Coastguard Worker .m(m) 991*4bdc9457SAndroid Build Coastguard Worker .n(n) 992*4bdc9457SAndroid Build Coastguard Worker .k(4) 993*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 994*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 995*4bdc9457SAndroid Build Coastguard Worker } 996*4bdc9457SAndroid Build Coastguard Worker } 997*4bdc9457SAndroid Build Coastguard Worker } 998*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)999*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 1000*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1001*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 1002*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1003*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1004*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1005*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1006*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1007*4bdc9457SAndroid Build Coastguard Worker .m(m) 1008*4bdc9457SAndroid Build Coastguard Worker .n(16) 1009*4bdc9457SAndroid Build Coastguard Worker .k(4) 1010*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1011*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1012*4bdc9457SAndroid Build Coastguard Worker } 1013*4bdc9457SAndroid Build Coastguard Worker } 1014*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)1015*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 1016*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1017*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1018*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1019*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1020*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1021*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1022*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1023*4bdc9457SAndroid Build Coastguard Worker .m(1) 1024*4bdc9457SAndroid Build Coastguard Worker .n(n) 1025*4bdc9457SAndroid Build Coastguard Worker .k(4) 1026*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1027*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1028*4bdc9457SAndroid Build Coastguard Worker } 1029*4bdc9457SAndroid Build Coastguard Worker } 1030*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4)1031*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 1032*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1033*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 1034*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1035*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1036*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1037*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1038*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1039*4bdc9457SAndroid Build Coastguard Worker .m(1) 1040*4bdc9457SAndroid Build Coastguard Worker .n(16) 1041*4bdc9457SAndroid Build Coastguard Worker .k(k) 1042*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1043*4bdc9457SAndroid Build Coastguard Worker } 1044*4bdc9457SAndroid Build Coastguard Worker } 1045*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_strided_a)1046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_strided_a) { 1047*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1048*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 1049*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1050*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1051*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1052*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1053*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1054*4bdc9457SAndroid Build Coastguard Worker .m(1) 1055*4bdc9457SAndroid Build Coastguard Worker .n(16) 1056*4bdc9457SAndroid Build Coastguard Worker .k(k) 1057*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 1058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1059*4bdc9457SAndroid Build Coastguard Worker } 1060*4bdc9457SAndroid Build Coastguard Worker } 1061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)1062*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 1063*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1064*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 1065*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1066*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 1067*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1068*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1069*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1070*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1071*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1072*4bdc9457SAndroid Build Coastguard Worker .m(m) 1073*4bdc9457SAndroid Build Coastguard Worker .n(n) 1074*4bdc9457SAndroid Build Coastguard Worker .k(k) 1075*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1076*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1077*4bdc9457SAndroid Build Coastguard Worker } 1078*4bdc9457SAndroid Build Coastguard Worker } 1079*4bdc9457SAndroid Build Coastguard Worker } 1080*4bdc9457SAndroid Build Coastguard Worker } 1081*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4)1082*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 1083*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1084*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 1085*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1086*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1087*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1088*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1089*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1090*4bdc9457SAndroid Build Coastguard Worker .m(1) 1091*4bdc9457SAndroid Build Coastguard Worker .n(16) 1092*4bdc9457SAndroid Build Coastguard Worker .k(k) 1093*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1094*4bdc9457SAndroid Build Coastguard Worker } 1095*4bdc9457SAndroid Build Coastguard Worker } 1096*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_strided_a)1097*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_strided_a) { 1098*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1099*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 1100*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1101*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1102*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1103*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1104*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1105*4bdc9457SAndroid Build Coastguard Worker .m(1) 1106*4bdc9457SAndroid Build Coastguard Worker .n(16) 1107*4bdc9457SAndroid Build Coastguard Worker .k(k) 1108*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 1109*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1110*4bdc9457SAndroid Build Coastguard Worker } 1111*4bdc9457SAndroid Build Coastguard Worker } 1112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)1113*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 1114*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1115*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 1116*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1117*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 1118*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1119*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1120*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1121*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1122*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1123*4bdc9457SAndroid Build Coastguard Worker .m(m) 1124*4bdc9457SAndroid Build Coastguard Worker .n(n) 1125*4bdc9457SAndroid Build Coastguard Worker .k(k) 1126*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1127*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1128*4bdc9457SAndroid Build Coastguard Worker } 1129*4bdc9457SAndroid Build Coastguard Worker } 1130*4bdc9457SAndroid Build Coastguard Worker } 1131*4bdc9457SAndroid Build Coastguard Worker } 1132*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_div_4)1133*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 1134*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1135*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 1136*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1137*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1138*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1139*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1140*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1141*4bdc9457SAndroid Build Coastguard Worker .m(1) 1142*4bdc9457SAndroid Build Coastguard Worker .n(16) 1143*4bdc9457SAndroid Build Coastguard Worker .k(k) 1144*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1145*4bdc9457SAndroid Build Coastguard Worker } 1146*4bdc9457SAndroid Build Coastguard Worker } 1147*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_strided_a)1148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_strided_a) { 1149*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1150*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 1151*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1152*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1153*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1154*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1155*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1156*4bdc9457SAndroid Build Coastguard Worker .m(1) 1157*4bdc9457SAndroid Build Coastguard Worker .n(16) 1158*4bdc9457SAndroid Build Coastguard Worker .k(k) 1159*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 1160*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1161*4bdc9457SAndroid Build Coastguard Worker } 1162*4bdc9457SAndroid Build Coastguard Worker } 1163*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)1164*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 1165*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1166*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 1167*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1168*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 1169*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1170*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1171*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1172*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1173*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1174*4bdc9457SAndroid Build Coastguard Worker .m(m) 1175*4bdc9457SAndroid Build Coastguard Worker .n(n) 1176*4bdc9457SAndroid Build Coastguard Worker .k(k) 1177*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1178*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1179*4bdc9457SAndroid Build Coastguard Worker } 1180*4bdc9457SAndroid Build Coastguard Worker } 1181*4bdc9457SAndroid Build Coastguard Worker } 1182*4bdc9457SAndroid Build Coastguard Worker } 1183*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16)1184*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16) { 1185*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1186*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1187*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1188*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1189*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1190*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1191*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1192*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1193*4bdc9457SAndroid Build Coastguard Worker .m(1) 1194*4bdc9457SAndroid Build Coastguard Worker .n(n) 1195*4bdc9457SAndroid Build Coastguard Worker .k(k) 1196*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1197*4bdc9457SAndroid Build Coastguard Worker } 1198*4bdc9457SAndroid Build Coastguard Worker } 1199*4bdc9457SAndroid Build Coastguard Worker } 1200*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_cn)1201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 1202*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1203*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1204*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1205*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1206*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1207*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1208*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1209*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1210*4bdc9457SAndroid Build Coastguard Worker .m(1) 1211*4bdc9457SAndroid Build Coastguard Worker .n(n) 1212*4bdc9457SAndroid Build Coastguard Worker .k(k) 1213*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1214*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1215*4bdc9457SAndroid Build Coastguard Worker } 1216*4bdc9457SAndroid Build Coastguard Worker } 1217*4bdc9457SAndroid Build Coastguard Worker } 1218*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_a)1219*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_a) { 1220*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1221*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1222*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1223*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1224*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1225*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1226*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1227*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1228*4bdc9457SAndroid Build Coastguard Worker .m(1) 1229*4bdc9457SAndroid Build Coastguard Worker .n(n) 1230*4bdc9457SAndroid Build Coastguard Worker .k(k) 1231*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 1232*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1233*4bdc9457SAndroid Build Coastguard Worker } 1234*4bdc9457SAndroid Build Coastguard Worker } 1235*4bdc9457SAndroid Build Coastguard Worker } 1236*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_subtile)1237*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_subtile) { 1238*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1239*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1240*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1241*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 1242*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1243*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1244*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1245*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1246*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1247*4bdc9457SAndroid Build Coastguard Worker .m(m) 1248*4bdc9457SAndroid Build Coastguard Worker .n(n) 1249*4bdc9457SAndroid Build Coastguard Worker .k(k) 1250*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1251*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1252*4bdc9457SAndroid Build Coastguard Worker } 1253*4bdc9457SAndroid Build Coastguard Worker } 1254*4bdc9457SAndroid Build Coastguard Worker } 1255*4bdc9457SAndroid Build Coastguard Worker } 1256*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_div_16)1257*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_div_16) { 1258*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1259*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1260*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1261*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1262*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1263*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1264*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1265*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1266*4bdc9457SAndroid Build Coastguard Worker .m(1) 1267*4bdc9457SAndroid Build Coastguard Worker .n(n) 1268*4bdc9457SAndroid Build Coastguard Worker .k(k) 1269*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1270*4bdc9457SAndroid Build Coastguard Worker } 1271*4bdc9457SAndroid Build Coastguard Worker } 1272*4bdc9457SAndroid Build Coastguard Worker } 1273*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_cn)1274*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_cn) { 1275*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1276*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1277*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1278*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1279*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1280*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1281*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1282*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1283*4bdc9457SAndroid Build Coastguard Worker .m(1) 1284*4bdc9457SAndroid Build Coastguard Worker .n(n) 1285*4bdc9457SAndroid Build Coastguard Worker .k(k) 1286*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1287*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1288*4bdc9457SAndroid Build Coastguard Worker } 1289*4bdc9457SAndroid Build Coastguard Worker } 1290*4bdc9457SAndroid Build Coastguard Worker } 1291*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_a)1292*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_a) { 1293*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1294*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1295*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1296*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1297*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1298*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1299*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1300*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1301*4bdc9457SAndroid Build Coastguard Worker .m(1) 1302*4bdc9457SAndroid Build Coastguard Worker .n(n) 1303*4bdc9457SAndroid Build Coastguard Worker .k(k) 1304*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 1305*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1306*4bdc9457SAndroid Build Coastguard Worker } 1307*4bdc9457SAndroid Build Coastguard Worker } 1308*4bdc9457SAndroid Build Coastguard Worker } 1309*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_subtile)1310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_subtile) { 1311*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1312*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1313*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1314*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 1315*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1316*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1317*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1318*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1319*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1320*4bdc9457SAndroid Build Coastguard Worker .m(m) 1321*4bdc9457SAndroid Build Coastguard Worker .n(n) 1322*4bdc9457SAndroid Build Coastguard Worker .k(k) 1323*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1324*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1325*4bdc9457SAndroid Build Coastguard Worker } 1326*4bdc9457SAndroid Build Coastguard Worker } 1327*4bdc9457SAndroid Build Coastguard Worker } 1328*4bdc9457SAndroid Build Coastguard Worker } 1329*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)1330*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 1331*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1332*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1333*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1334*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 1335*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1336*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1337*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1338*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1339*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1340*4bdc9457SAndroid Build Coastguard Worker .m(m) 1341*4bdc9457SAndroid Build Coastguard Worker .n(n) 1342*4bdc9457SAndroid Build Coastguard Worker .k(k) 1343*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 1344*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1345*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1346*4bdc9457SAndroid Build Coastguard Worker } 1347*4bdc9457SAndroid Build Coastguard Worker } 1348*4bdc9457SAndroid Build Coastguard Worker } 1349*4bdc9457SAndroid Build Coastguard Worker } 1350*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,qmin)1351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, qmin) { 1352*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1353*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1354*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1355*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1356*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1357*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1358*4bdc9457SAndroid Build Coastguard Worker .m(1) 1359*4bdc9457SAndroid Build Coastguard Worker .n(16) 1360*4bdc9457SAndroid Build Coastguard Worker .k(4) 1361*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1362*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1363*4bdc9457SAndroid Build Coastguard Worker } 1364*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,qmax)1365*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, qmax) { 1366*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1367*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1368*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1369*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1370*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1371*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1372*4bdc9457SAndroid Build Coastguard Worker .m(1) 1373*4bdc9457SAndroid Build Coastguard Worker .n(16) 1374*4bdc9457SAndroid Build Coastguard Worker .k(4) 1375*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1376*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1377*4bdc9457SAndroid Build Coastguard Worker } 1378*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,strided_cm)1379*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 1380*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1381*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1382*4bdc9457SAndroid Build Coastguard Worker .mr(1) 1383*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1384*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1385*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1386*4bdc9457SAndroid Build Coastguard Worker .m(1) 1387*4bdc9457SAndroid Build Coastguard Worker .n(16) 1388*4bdc9457SAndroid Build Coastguard Worker .k(4) 1389*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 1390*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1391*4bdc9457SAndroid Build Coastguard Worker } 1392*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 1393*4bdc9457SAndroid Build Coastguard Worker 1394*4bdc9457SAndroid Build Coastguard Worker 1395*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4)1396*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 1397*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1398*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1399*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1400*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1401*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1402*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1403*4bdc9457SAndroid Build Coastguard Worker .m(4) 1404*4bdc9457SAndroid Build Coastguard Worker .n(8) 1405*4bdc9457SAndroid Build Coastguard Worker .k(4) 1406*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1407*4bdc9457SAndroid Build Coastguard Worker } 1408*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,strided_cn)1409*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 1410*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1411*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1412*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1413*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1414*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1415*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1416*4bdc9457SAndroid Build Coastguard Worker .m(4) 1417*4bdc9457SAndroid Build Coastguard Worker .n(8) 1418*4bdc9457SAndroid Build Coastguard Worker .k(4) 1419*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1420*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1421*4bdc9457SAndroid Build Coastguard Worker } 1422*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_strided_a)1423*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_strided_a) { 1424*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1425*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1426*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1427*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1428*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1429*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1430*4bdc9457SAndroid Build Coastguard Worker .m(4) 1431*4bdc9457SAndroid Build Coastguard Worker .n(8) 1432*4bdc9457SAndroid Build Coastguard Worker .k(4) 1433*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 1434*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1435*4bdc9457SAndroid Build Coastguard Worker } 1436*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)1437*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 1438*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1439*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1440*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1441*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1442*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1443*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1444*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1445*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1446*4bdc9457SAndroid Build Coastguard Worker .m(m) 1447*4bdc9457SAndroid Build Coastguard Worker .n(n) 1448*4bdc9457SAndroid Build Coastguard Worker .k(4) 1449*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1450*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1451*4bdc9457SAndroid Build Coastguard Worker } 1452*4bdc9457SAndroid Build Coastguard Worker } 1453*4bdc9457SAndroid Build Coastguard Worker } 1454*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)1455*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 1456*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1457*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1458*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1459*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1460*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1461*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1462*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1463*4bdc9457SAndroid Build Coastguard Worker .m(m) 1464*4bdc9457SAndroid Build Coastguard Worker .n(8) 1465*4bdc9457SAndroid Build Coastguard Worker .k(4) 1466*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1467*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1468*4bdc9457SAndroid Build Coastguard Worker } 1469*4bdc9457SAndroid Build Coastguard Worker } 1470*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)1471*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 1472*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1473*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1474*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1475*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1476*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1477*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1478*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1479*4bdc9457SAndroid Build Coastguard Worker .m(4) 1480*4bdc9457SAndroid Build Coastguard Worker .n(n) 1481*4bdc9457SAndroid Build Coastguard Worker .k(4) 1482*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1483*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1484*4bdc9457SAndroid Build Coastguard Worker } 1485*4bdc9457SAndroid Build Coastguard Worker } 1486*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4)1487*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 1488*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1489*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 1490*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1491*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1492*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1493*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1494*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1495*4bdc9457SAndroid Build Coastguard Worker .m(4) 1496*4bdc9457SAndroid Build Coastguard Worker .n(8) 1497*4bdc9457SAndroid Build Coastguard Worker .k(k) 1498*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1499*4bdc9457SAndroid Build Coastguard Worker } 1500*4bdc9457SAndroid Build Coastguard Worker } 1501*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4_strided_a)1502*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4_strided_a) { 1503*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1504*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 1505*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1506*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1507*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1508*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1509*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1510*4bdc9457SAndroid Build Coastguard Worker .m(4) 1511*4bdc9457SAndroid Build Coastguard Worker .n(8) 1512*4bdc9457SAndroid Build Coastguard Worker .k(k) 1513*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 1514*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1515*4bdc9457SAndroid Build Coastguard Worker } 1516*4bdc9457SAndroid Build Coastguard Worker } 1517*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)1518*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 1519*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1520*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 1521*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1522*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1523*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1524*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1525*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1526*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1527*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1528*4bdc9457SAndroid Build Coastguard Worker .m(m) 1529*4bdc9457SAndroid Build Coastguard Worker .n(n) 1530*4bdc9457SAndroid Build Coastguard Worker .k(k) 1531*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1532*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1533*4bdc9457SAndroid Build Coastguard Worker } 1534*4bdc9457SAndroid Build Coastguard Worker } 1535*4bdc9457SAndroid Build Coastguard Worker } 1536*4bdc9457SAndroid Build Coastguard Worker } 1537*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4)1538*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 1539*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1540*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 1541*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1542*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1543*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1544*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1545*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1546*4bdc9457SAndroid Build Coastguard Worker .m(4) 1547*4bdc9457SAndroid Build Coastguard Worker .n(8) 1548*4bdc9457SAndroid Build Coastguard Worker .k(k) 1549*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1550*4bdc9457SAndroid Build Coastguard Worker } 1551*4bdc9457SAndroid Build Coastguard Worker } 1552*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4_strided_a)1553*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4_strided_a) { 1554*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1555*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 1556*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1557*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1558*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1559*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1560*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1561*4bdc9457SAndroid Build Coastguard Worker .m(4) 1562*4bdc9457SAndroid Build Coastguard Worker .n(8) 1563*4bdc9457SAndroid Build Coastguard Worker .k(k) 1564*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 1565*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1566*4bdc9457SAndroid Build Coastguard Worker } 1567*4bdc9457SAndroid Build Coastguard Worker } 1568*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)1569*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 1570*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1571*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 1572*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1573*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1574*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1575*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1576*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1577*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1578*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1579*4bdc9457SAndroid Build Coastguard Worker .m(m) 1580*4bdc9457SAndroid Build Coastguard Worker .n(n) 1581*4bdc9457SAndroid Build Coastguard Worker .k(k) 1582*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1583*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1584*4bdc9457SAndroid Build Coastguard Worker } 1585*4bdc9457SAndroid Build Coastguard Worker } 1586*4bdc9457SAndroid Build Coastguard Worker } 1587*4bdc9457SAndroid Build Coastguard Worker } 1588*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_div_4)1589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 1590*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1591*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 1592*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1593*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1594*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1595*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1596*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1597*4bdc9457SAndroid Build Coastguard Worker .m(4) 1598*4bdc9457SAndroid Build Coastguard Worker .n(8) 1599*4bdc9457SAndroid Build Coastguard Worker .k(k) 1600*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1601*4bdc9457SAndroid Build Coastguard Worker } 1602*4bdc9457SAndroid Build Coastguard Worker } 1603*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_div_4_strided_a)1604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_div_4_strided_a) { 1605*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1606*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 1607*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1608*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1609*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1610*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1611*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1612*4bdc9457SAndroid Build Coastguard Worker .m(4) 1613*4bdc9457SAndroid Build Coastguard Worker .n(8) 1614*4bdc9457SAndroid Build Coastguard Worker .k(k) 1615*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 1616*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1617*4bdc9457SAndroid Build Coastguard Worker } 1618*4bdc9457SAndroid Build Coastguard Worker } 1619*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)1620*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 1621*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1622*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 1623*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1624*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1625*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1626*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1627*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1628*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1629*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1630*4bdc9457SAndroid Build Coastguard Worker .m(m) 1631*4bdc9457SAndroid Build Coastguard Worker .n(n) 1632*4bdc9457SAndroid Build Coastguard Worker .k(k) 1633*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1634*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1635*4bdc9457SAndroid Build Coastguard Worker } 1636*4bdc9457SAndroid Build Coastguard Worker } 1637*4bdc9457SAndroid Build Coastguard Worker } 1638*4bdc9457SAndroid Build Coastguard Worker } 1639*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8)1640*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8) { 1641*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1642*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1643*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1644*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1645*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1646*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1647*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1648*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1649*4bdc9457SAndroid Build Coastguard Worker .m(4) 1650*4bdc9457SAndroid Build Coastguard Worker .n(n) 1651*4bdc9457SAndroid Build Coastguard Worker .k(k) 1652*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1653*4bdc9457SAndroid Build Coastguard Worker } 1654*4bdc9457SAndroid Build Coastguard Worker } 1655*4bdc9457SAndroid Build Coastguard Worker } 1656*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_strided_cn)1657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 1658*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1659*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1660*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1661*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1662*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1663*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1664*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1665*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1666*4bdc9457SAndroid Build Coastguard Worker .m(4) 1667*4bdc9457SAndroid Build Coastguard Worker .n(n) 1668*4bdc9457SAndroid Build Coastguard Worker .k(k) 1669*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1670*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1671*4bdc9457SAndroid Build Coastguard Worker } 1672*4bdc9457SAndroid Build Coastguard Worker } 1673*4bdc9457SAndroid Build Coastguard Worker } 1674*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_strided_a)1675*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_strided_a) { 1676*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1677*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1678*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1679*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1680*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1681*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1682*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1683*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1684*4bdc9457SAndroid Build Coastguard Worker .m(4) 1685*4bdc9457SAndroid Build Coastguard Worker .n(n) 1686*4bdc9457SAndroid Build Coastguard Worker .k(k) 1687*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 1688*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1689*4bdc9457SAndroid Build Coastguard Worker } 1690*4bdc9457SAndroid Build Coastguard Worker } 1691*4bdc9457SAndroid Build Coastguard Worker } 1692*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_subtile)1693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_subtile) { 1694*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1695*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 1696*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1697*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1698*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1699*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1700*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1701*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1702*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1703*4bdc9457SAndroid Build Coastguard Worker .m(m) 1704*4bdc9457SAndroid Build Coastguard Worker .n(n) 1705*4bdc9457SAndroid Build Coastguard Worker .k(k) 1706*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1707*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1708*4bdc9457SAndroid Build Coastguard Worker } 1709*4bdc9457SAndroid Build Coastguard Worker } 1710*4bdc9457SAndroid Build Coastguard Worker } 1711*4bdc9457SAndroid Build Coastguard Worker } 1712*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,n_div_8)1713*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, n_div_8) { 1714*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1715*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1716*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1717*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1718*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1719*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1720*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1721*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1722*4bdc9457SAndroid Build Coastguard Worker .m(4) 1723*4bdc9457SAndroid Build Coastguard Worker .n(n) 1724*4bdc9457SAndroid Build Coastguard Worker .k(k) 1725*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1726*4bdc9457SAndroid Build Coastguard Worker } 1727*4bdc9457SAndroid Build Coastguard Worker } 1728*4bdc9457SAndroid Build Coastguard Worker } 1729*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_strided_cn)1730*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_strided_cn) { 1731*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1732*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1733*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1734*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1735*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1736*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1737*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1738*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1739*4bdc9457SAndroid Build Coastguard Worker .m(4) 1740*4bdc9457SAndroid Build Coastguard Worker .n(n) 1741*4bdc9457SAndroid Build Coastguard Worker .k(k) 1742*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 1743*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1744*4bdc9457SAndroid Build Coastguard Worker } 1745*4bdc9457SAndroid Build Coastguard Worker } 1746*4bdc9457SAndroid Build Coastguard Worker } 1747*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_strided_a)1748*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_strided_a) { 1749*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1750*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1751*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1752*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1753*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1754*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1755*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1756*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1757*4bdc9457SAndroid Build Coastguard Worker .m(4) 1758*4bdc9457SAndroid Build Coastguard Worker .n(n) 1759*4bdc9457SAndroid Build Coastguard Worker .k(k) 1760*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 1761*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1762*4bdc9457SAndroid Build Coastguard Worker } 1763*4bdc9457SAndroid Build Coastguard Worker } 1764*4bdc9457SAndroid Build Coastguard Worker } 1765*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_subtile)1766*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_subtile) { 1767*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1768*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 1769*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1770*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1771*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1772*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1773*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1774*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1775*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1776*4bdc9457SAndroid Build Coastguard Worker .m(m) 1777*4bdc9457SAndroid Build Coastguard Worker .n(n) 1778*4bdc9457SAndroid Build Coastguard Worker .k(k) 1779*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1780*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1781*4bdc9457SAndroid Build Coastguard Worker } 1782*4bdc9457SAndroid Build Coastguard Worker } 1783*4bdc9457SAndroid Build Coastguard Worker } 1784*4bdc9457SAndroid Build Coastguard Worker } 1785*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)1786*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 1787*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1788*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1789*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 1790*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 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(m) 1797*4bdc9457SAndroid Build Coastguard Worker .n(n) 1798*4bdc9457SAndroid Build Coastguard Worker .k(k) 1799*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 1800*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1801*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1802*4bdc9457SAndroid Build Coastguard Worker } 1803*4bdc9457SAndroid Build Coastguard Worker } 1804*4bdc9457SAndroid Build Coastguard Worker } 1805*4bdc9457SAndroid Build Coastguard Worker } 1806*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,qmin)1807*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, qmin) { 1808*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1809*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1810*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1811*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1812*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1813*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1814*4bdc9457SAndroid Build Coastguard Worker .m(4) 1815*4bdc9457SAndroid Build Coastguard Worker .n(8) 1816*4bdc9457SAndroid Build Coastguard Worker .k(4) 1817*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1818*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1819*4bdc9457SAndroid Build Coastguard Worker } 1820*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,qmax)1821*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, qmax) { 1822*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1823*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1824*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1825*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1826*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1827*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1828*4bdc9457SAndroid Build Coastguard Worker .m(4) 1829*4bdc9457SAndroid Build Coastguard Worker .n(8) 1830*4bdc9457SAndroid Build Coastguard Worker .k(4) 1831*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1832*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1833*4bdc9457SAndroid Build Coastguard Worker } 1834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64,strided_cm)1835*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 1836*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1837*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1838*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1839*4bdc9457SAndroid Build Coastguard Worker .nr(8) 1840*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1841*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1842*4bdc9457SAndroid Build Coastguard Worker .m(4) 1843*4bdc9457SAndroid Build Coastguard Worker .n(8) 1844*4bdc9457SAndroid Build Coastguard Worker .k(4) 1845*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 1846*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1847*4bdc9457SAndroid Build Coastguard Worker } 1848*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 1849*4bdc9457SAndroid Build Coastguard Worker 1850*4bdc9457SAndroid Build Coastguard Worker 1851*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2)1852*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2) { 1853*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1854*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1855*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1856*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1857*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1858*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1859*4bdc9457SAndroid Build Coastguard Worker .m(4) 1860*4bdc9457SAndroid Build Coastguard Worker .n(16) 1861*4bdc9457SAndroid Build Coastguard Worker .k(2) 1862*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1863*4bdc9457SAndroid Build Coastguard Worker } 1864*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,strided_cn)1865*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, strided_cn) { 1866*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1867*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1868*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1869*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1870*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1871*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1872*4bdc9457SAndroid Build Coastguard Worker .m(4) 1873*4bdc9457SAndroid Build Coastguard Worker .n(16) 1874*4bdc9457SAndroid Build Coastguard Worker .k(2) 1875*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1877*4bdc9457SAndroid Build Coastguard Worker } 1878*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_strided_a)1879*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_strided_a) { 1880*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1881*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1882*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1883*4bdc9457SAndroid Build Coastguard Worker .nr(16) 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(16) 1888*4bdc9457SAndroid Build Coastguard Worker .k(2) 1889*4bdc9457SAndroid Build Coastguard Worker .a_stride(5) 1890*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1891*4bdc9457SAndroid Build Coastguard Worker } 1892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile)1893*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile) { 1894*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1895*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1896*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1897*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1898*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1899*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1900*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1901*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1902*4bdc9457SAndroid Build Coastguard Worker .m(m) 1903*4bdc9457SAndroid Build Coastguard Worker .n(n) 1904*4bdc9457SAndroid Build Coastguard Worker .k(2) 1905*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1906*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1907*4bdc9457SAndroid Build Coastguard Worker } 1908*4bdc9457SAndroid Build Coastguard Worker } 1909*4bdc9457SAndroid Build Coastguard Worker } 1910*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_m)1911*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_m) { 1912*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1913*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1914*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1915*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1916*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1917*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1918*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1919*4bdc9457SAndroid Build Coastguard Worker .m(m) 1920*4bdc9457SAndroid Build Coastguard Worker .n(16) 1921*4bdc9457SAndroid Build Coastguard Worker .k(2) 1922*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1923*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1924*4bdc9457SAndroid Build Coastguard Worker } 1925*4bdc9457SAndroid Build Coastguard Worker } 1926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_n)1927*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_n) { 1928*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1929*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1930*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1931*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1932*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1933*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1934*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1935*4bdc9457SAndroid Build Coastguard Worker .m(4) 1936*4bdc9457SAndroid Build Coastguard Worker .n(n) 1937*4bdc9457SAndroid Build Coastguard Worker .k(2) 1938*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1939*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1940*4bdc9457SAndroid Build Coastguard Worker } 1941*4bdc9457SAndroid Build Coastguard Worker } 1942*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2)1943*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2) { 1944*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1945*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 1946*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1947*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1948*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1949*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1950*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1951*4bdc9457SAndroid Build Coastguard Worker .m(4) 1952*4bdc9457SAndroid Build Coastguard Worker .n(16) 1953*4bdc9457SAndroid Build Coastguard Worker .k(k) 1954*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1955*4bdc9457SAndroid Build Coastguard Worker } 1956*4bdc9457SAndroid Build Coastguard Worker } 1957*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_strided_a)1958*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_strided_a) { 1959*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1960*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 1961*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1962*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1963*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1964*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1965*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1966*4bdc9457SAndroid Build Coastguard Worker .m(4) 1967*4bdc9457SAndroid Build Coastguard Worker .n(16) 1968*4bdc9457SAndroid Build Coastguard Worker .k(k) 1969*4bdc9457SAndroid Build Coastguard Worker .a_stride(5) 1970*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1971*4bdc9457SAndroid Build Coastguard Worker } 1972*4bdc9457SAndroid Build Coastguard Worker } 1973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_subtile)1974*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_subtile) { 1975*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1976*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 1977*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1978*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1979*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1980*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1981*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1982*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1983*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1984*4bdc9457SAndroid Build Coastguard Worker .m(m) 1985*4bdc9457SAndroid Build Coastguard Worker .n(n) 1986*4bdc9457SAndroid Build Coastguard Worker .k(k) 1987*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1988*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1989*4bdc9457SAndroid Build Coastguard Worker } 1990*4bdc9457SAndroid Build Coastguard Worker } 1991*4bdc9457SAndroid Build Coastguard Worker } 1992*4bdc9457SAndroid Build Coastguard Worker } 1993*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2)1994*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2) { 1995*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1996*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 1997*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1998*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1999*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2000*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2001*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2002*4bdc9457SAndroid Build Coastguard Worker .m(4) 2003*4bdc9457SAndroid Build Coastguard Worker .n(16) 2004*4bdc9457SAndroid Build Coastguard Worker .k(k) 2005*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2006*4bdc9457SAndroid Build Coastguard Worker } 2007*4bdc9457SAndroid Build Coastguard Worker } 2008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_strided_a)2009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_strided_a) { 2010*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2011*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 2012*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2013*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2014*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2015*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2016*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2017*4bdc9457SAndroid Build Coastguard Worker .m(4) 2018*4bdc9457SAndroid Build Coastguard Worker .n(16) 2019*4bdc9457SAndroid Build Coastguard Worker .k(k) 2020*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 2021*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2022*4bdc9457SAndroid Build Coastguard Worker } 2023*4bdc9457SAndroid Build Coastguard Worker } 2024*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_subtile)2025*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_subtile) { 2026*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2027*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 2028*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2029*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2030*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2031*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2032*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2033*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2034*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2035*4bdc9457SAndroid Build Coastguard Worker .m(m) 2036*4bdc9457SAndroid Build Coastguard Worker .n(n) 2037*4bdc9457SAndroid Build Coastguard Worker .k(k) 2038*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2039*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2040*4bdc9457SAndroid Build Coastguard Worker } 2041*4bdc9457SAndroid Build Coastguard Worker } 2042*4bdc9457SAndroid Build Coastguard Worker } 2043*4bdc9457SAndroid Build Coastguard Worker } 2044*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_div_2)2045*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_div_2) { 2046*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2047*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 2048*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2049*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2050*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2051*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2052*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2053*4bdc9457SAndroid Build Coastguard Worker .m(4) 2054*4bdc9457SAndroid Build Coastguard Worker .n(16) 2055*4bdc9457SAndroid Build Coastguard Worker .k(k) 2056*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2057*4bdc9457SAndroid Build Coastguard Worker } 2058*4bdc9457SAndroid Build Coastguard Worker } 2059*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_strided_a)2060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_strided_a) { 2061*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2062*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 2063*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2064*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2065*4bdc9457SAndroid Build Coastguard Worker .nr(16) 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(16) 2070*4bdc9457SAndroid Build Coastguard Worker .k(k) 2071*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 2072*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2073*4bdc9457SAndroid Build Coastguard Worker } 2074*4bdc9457SAndroid Build Coastguard Worker } 2075*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_subtile)2076*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_subtile) { 2077*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2078*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 2079*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2080*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2081*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2082*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2083*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2084*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2085*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2086*4bdc9457SAndroid Build Coastguard Worker .m(m) 2087*4bdc9457SAndroid Build Coastguard Worker .n(n) 2088*4bdc9457SAndroid Build Coastguard Worker .k(k) 2089*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2090*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2091*4bdc9457SAndroid Build Coastguard Worker } 2092*4bdc9457SAndroid Build Coastguard Worker } 2093*4bdc9457SAndroid Build Coastguard Worker } 2094*4bdc9457SAndroid Build Coastguard Worker } 2095*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16)2096*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16) { 2097*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2098*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2099*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2100*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2101*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2102*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2103*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2104*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2105*4bdc9457SAndroid Build Coastguard Worker .m(4) 2106*4bdc9457SAndroid Build Coastguard Worker .n(n) 2107*4bdc9457SAndroid Build Coastguard Worker .k(k) 2108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2109*4bdc9457SAndroid Build Coastguard Worker } 2110*4bdc9457SAndroid Build Coastguard Worker } 2111*4bdc9457SAndroid Build Coastguard Worker } 2112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_cn)2113*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_cn) { 2114*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2115*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2116*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2117*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2118*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2119*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2120*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2121*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2122*4bdc9457SAndroid Build Coastguard Worker .m(4) 2123*4bdc9457SAndroid Build Coastguard Worker .n(n) 2124*4bdc9457SAndroid Build Coastguard Worker .k(k) 2125*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2126*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2127*4bdc9457SAndroid Build Coastguard Worker } 2128*4bdc9457SAndroid Build Coastguard Worker } 2129*4bdc9457SAndroid Build Coastguard Worker } 2130*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_a)2131*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_a) { 2132*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2133*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2134*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2135*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2136*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2137*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2138*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2139*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2140*4bdc9457SAndroid Build Coastguard Worker .m(4) 2141*4bdc9457SAndroid Build Coastguard Worker .n(n) 2142*4bdc9457SAndroid Build Coastguard Worker .k(k) 2143*4bdc9457SAndroid Build Coastguard Worker .a_stride(13) 2144*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2145*4bdc9457SAndroid Build Coastguard Worker } 2146*4bdc9457SAndroid Build Coastguard Worker } 2147*4bdc9457SAndroid Build Coastguard Worker } 2148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_subtile)2149*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_subtile) { 2150*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2151*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2152*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2153*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2154*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2155*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2156*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2157*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2158*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2159*4bdc9457SAndroid Build Coastguard Worker .m(m) 2160*4bdc9457SAndroid Build Coastguard Worker .n(n) 2161*4bdc9457SAndroid Build Coastguard Worker .k(k) 2162*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2163*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2164*4bdc9457SAndroid Build Coastguard Worker } 2165*4bdc9457SAndroid Build Coastguard Worker } 2166*4bdc9457SAndroid Build Coastguard Worker } 2167*4bdc9457SAndroid Build Coastguard Worker } 2168*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_div_16)2169*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_div_16) { 2170*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2171*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2172*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2173*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2174*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2175*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2176*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2177*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2178*4bdc9457SAndroid Build Coastguard Worker .m(4) 2179*4bdc9457SAndroid Build Coastguard Worker .n(n) 2180*4bdc9457SAndroid Build Coastguard Worker .k(k) 2181*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2182*4bdc9457SAndroid Build Coastguard Worker } 2183*4bdc9457SAndroid Build Coastguard Worker } 2184*4bdc9457SAndroid Build Coastguard Worker } 2185*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_cn)2186*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_cn) { 2187*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2188*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2189*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2190*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2191*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2192*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2193*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2194*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2195*4bdc9457SAndroid Build Coastguard Worker .m(4) 2196*4bdc9457SAndroid Build Coastguard Worker .n(n) 2197*4bdc9457SAndroid Build Coastguard Worker .k(k) 2198*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2199*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2200*4bdc9457SAndroid Build Coastguard Worker } 2201*4bdc9457SAndroid Build Coastguard Worker } 2202*4bdc9457SAndroid Build Coastguard Worker } 2203*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_a)2204*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_a) { 2205*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2206*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2207*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2208*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2209*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2210*4bdc9457SAndroid Build Coastguard Worker .nr(16) 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(n) 2215*4bdc9457SAndroid Build Coastguard Worker .k(k) 2216*4bdc9457SAndroid Build Coastguard Worker .a_stride(13) 2217*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2218*4bdc9457SAndroid Build Coastguard Worker } 2219*4bdc9457SAndroid Build Coastguard Worker } 2220*4bdc9457SAndroid Build Coastguard Worker } 2221*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_subtile)2222*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_subtile) { 2223*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2224*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2225*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2226*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2227*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2228*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2229*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2230*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2231*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2232*4bdc9457SAndroid Build Coastguard Worker .m(m) 2233*4bdc9457SAndroid Build Coastguard Worker .n(n) 2234*4bdc9457SAndroid Build Coastguard Worker .k(k) 2235*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2236*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2237*4bdc9457SAndroid Build Coastguard Worker } 2238*4bdc9457SAndroid Build Coastguard Worker } 2239*4bdc9457SAndroid Build Coastguard Worker } 2240*4bdc9457SAndroid Build Coastguard Worker } 2241*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,strided_cm_subtile)2242*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, strided_cm_subtile) { 2243*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2244*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2245*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2246*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2247*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2248*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2249*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2250*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2251*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2252*4bdc9457SAndroid Build Coastguard Worker .m(m) 2253*4bdc9457SAndroid Build Coastguard Worker .n(n) 2254*4bdc9457SAndroid Build Coastguard Worker .k(k) 2255*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2256*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2257*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2258*4bdc9457SAndroid Build Coastguard Worker } 2259*4bdc9457SAndroid Build Coastguard Worker } 2260*4bdc9457SAndroid Build Coastguard Worker } 2261*4bdc9457SAndroid Build Coastguard Worker } 2262*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,qmin)2263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, qmin) { 2264*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2265*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2266*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2267*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2268*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2269*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2270*4bdc9457SAndroid Build Coastguard Worker .m(4) 2271*4bdc9457SAndroid Build Coastguard Worker .n(16) 2272*4bdc9457SAndroid Build Coastguard Worker .k(2) 2273*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2274*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2275*4bdc9457SAndroid Build Coastguard Worker } 2276*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,qmax)2277*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, qmax) { 2278*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2279*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2280*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2281*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2282*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2283*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2284*4bdc9457SAndroid Build Coastguard Worker .m(4) 2285*4bdc9457SAndroid Build Coastguard Worker .n(16) 2286*4bdc9457SAndroid Build Coastguard Worker .k(2) 2287*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2288*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2289*4bdc9457SAndroid Build Coastguard Worker } 2290*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,strided_cm)2291*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, strided_cm) { 2292*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2293*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2294*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2295*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2296*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2297*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2298*4bdc9457SAndroid Build Coastguard Worker .m(4) 2299*4bdc9457SAndroid Build Coastguard Worker .n(16) 2300*4bdc9457SAndroid Build Coastguard Worker .k(2) 2301*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2302*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 2303*4bdc9457SAndroid Build Coastguard Worker } 2304*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 2305*4bdc9457SAndroid Build Coastguard Worker 2306*4bdc9457SAndroid Build Coastguard Worker 2307*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4)2308*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 2309*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2310*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2311*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2312*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2313*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2314*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2315*4bdc9457SAndroid Build Coastguard Worker .m(4) 2316*4bdc9457SAndroid Build Coastguard Worker .n(16) 2317*4bdc9457SAndroid Build Coastguard Worker .k(4) 2318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2319*4bdc9457SAndroid Build Coastguard Worker } 2320*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,strided_cn)2321*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 2322*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2323*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2324*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2325*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2326*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2327*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2328*4bdc9457SAndroid Build Coastguard Worker .m(4) 2329*4bdc9457SAndroid Build Coastguard Worker .n(16) 2330*4bdc9457SAndroid Build Coastguard Worker .k(4) 2331*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2332*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2333*4bdc9457SAndroid Build Coastguard Worker } 2334*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_strided_a)2335*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_strided_a) { 2336*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2337*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2338*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2339*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2340*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2341*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2342*4bdc9457SAndroid Build Coastguard Worker .m(4) 2343*4bdc9457SAndroid Build Coastguard Worker .n(16) 2344*4bdc9457SAndroid Build Coastguard Worker .k(4) 2345*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 2346*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2347*4bdc9457SAndroid Build Coastguard Worker } 2348*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)2349*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 2350*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2351*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2352*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2353*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2354*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2355*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2356*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2357*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2358*4bdc9457SAndroid Build Coastguard Worker .m(m) 2359*4bdc9457SAndroid Build Coastguard Worker .n(n) 2360*4bdc9457SAndroid Build Coastguard Worker .k(4) 2361*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2362*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2363*4bdc9457SAndroid Build Coastguard Worker } 2364*4bdc9457SAndroid Build Coastguard Worker } 2365*4bdc9457SAndroid Build Coastguard Worker } 2366*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)2367*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 2368*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2369*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2370*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2371*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2372*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2373*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2374*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2375*4bdc9457SAndroid Build Coastguard Worker .m(m) 2376*4bdc9457SAndroid Build Coastguard Worker .n(16) 2377*4bdc9457SAndroid Build Coastguard Worker .k(4) 2378*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2379*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2380*4bdc9457SAndroid Build Coastguard Worker } 2381*4bdc9457SAndroid Build Coastguard Worker } 2382*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)2383*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 2384*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2385*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2386*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2387*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2388*4bdc9457SAndroid Build Coastguard Worker .nr(16) 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(4) 2394*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2395*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2396*4bdc9457SAndroid Build Coastguard Worker } 2397*4bdc9457SAndroid Build Coastguard Worker } 2398*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4)2399*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 2400*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2401*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2402*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2403*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2404*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2405*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2406*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2407*4bdc9457SAndroid Build Coastguard Worker .m(4) 2408*4bdc9457SAndroid Build Coastguard Worker .n(16) 2409*4bdc9457SAndroid Build Coastguard Worker .k(k) 2410*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2411*4bdc9457SAndroid Build Coastguard Worker } 2412*4bdc9457SAndroid Build Coastguard Worker } 2413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_strided_a)2414*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_strided_a) { 2415*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2416*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2417*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2418*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2419*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2420*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2421*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2422*4bdc9457SAndroid Build Coastguard Worker .m(4) 2423*4bdc9457SAndroid Build Coastguard Worker .n(16) 2424*4bdc9457SAndroid Build Coastguard Worker .k(k) 2425*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 2426*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2427*4bdc9457SAndroid Build Coastguard Worker } 2428*4bdc9457SAndroid Build Coastguard Worker } 2429*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)2430*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 2431*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2432*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2433*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2434*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2435*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2436*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2437*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2438*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2439*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2440*4bdc9457SAndroid Build Coastguard Worker .m(m) 2441*4bdc9457SAndroid Build Coastguard Worker .n(n) 2442*4bdc9457SAndroid Build Coastguard Worker .k(k) 2443*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2444*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2445*4bdc9457SAndroid Build Coastguard Worker } 2446*4bdc9457SAndroid Build Coastguard Worker } 2447*4bdc9457SAndroid Build Coastguard Worker } 2448*4bdc9457SAndroid Build Coastguard Worker } 2449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4)2450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 2451*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2452*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2453*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2454*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2455*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2456*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2457*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2458*4bdc9457SAndroid Build Coastguard Worker .m(4) 2459*4bdc9457SAndroid Build Coastguard Worker .n(16) 2460*4bdc9457SAndroid Build Coastguard Worker .k(k) 2461*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2462*4bdc9457SAndroid Build Coastguard Worker } 2463*4bdc9457SAndroid Build Coastguard Worker } 2464*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_strided_a)2465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_strided_a) { 2466*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2467*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2468*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2469*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2470*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2471*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2472*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2473*4bdc9457SAndroid Build Coastguard Worker .m(4) 2474*4bdc9457SAndroid Build Coastguard Worker .n(16) 2475*4bdc9457SAndroid Build Coastguard Worker .k(k) 2476*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 2477*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2478*4bdc9457SAndroid Build Coastguard Worker } 2479*4bdc9457SAndroid Build Coastguard Worker } 2480*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)2481*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 2482*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2483*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2484*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2485*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2486*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2487*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2488*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2489*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2490*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2491*4bdc9457SAndroid Build Coastguard Worker .m(m) 2492*4bdc9457SAndroid Build Coastguard Worker .n(n) 2493*4bdc9457SAndroid Build Coastguard Worker .k(k) 2494*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2495*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2496*4bdc9457SAndroid Build Coastguard Worker } 2497*4bdc9457SAndroid Build Coastguard Worker } 2498*4bdc9457SAndroid Build Coastguard Worker } 2499*4bdc9457SAndroid Build Coastguard Worker } 2500*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_div_4)2501*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 2502*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2503*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2504*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2505*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2506*4bdc9457SAndroid Build Coastguard Worker .nr(16) 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(16) 2511*4bdc9457SAndroid Build Coastguard Worker .k(k) 2512*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2513*4bdc9457SAndroid Build Coastguard Worker } 2514*4bdc9457SAndroid Build Coastguard Worker } 2515*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_strided_a)2516*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_strided_a) { 2517*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2518*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2519*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2520*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2521*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2522*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2523*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2524*4bdc9457SAndroid Build Coastguard Worker .m(4) 2525*4bdc9457SAndroid Build Coastguard Worker .n(16) 2526*4bdc9457SAndroid Build Coastguard Worker .k(k) 2527*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 2528*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2529*4bdc9457SAndroid Build Coastguard Worker } 2530*4bdc9457SAndroid Build Coastguard Worker } 2531*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)2532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 2533*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2534*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2535*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2536*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2537*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2538*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2539*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2540*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2541*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2542*4bdc9457SAndroid Build Coastguard Worker .m(m) 2543*4bdc9457SAndroid Build Coastguard Worker .n(n) 2544*4bdc9457SAndroid Build Coastguard Worker .k(k) 2545*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2546*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2547*4bdc9457SAndroid Build Coastguard Worker } 2548*4bdc9457SAndroid Build Coastguard Worker } 2549*4bdc9457SAndroid Build Coastguard Worker } 2550*4bdc9457SAndroid Build Coastguard Worker } 2551*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16)2552*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16) { 2553*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2554*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2555*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2556*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2557*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2558*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2559*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2560*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2561*4bdc9457SAndroid Build Coastguard Worker .m(4) 2562*4bdc9457SAndroid Build Coastguard Worker .n(n) 2563*4bdc9457SAndroid Build Coastguard Worker .k(k) 2564*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2565*4bdc9457SAndroid Build Coastguard Worker } 2566*4bdc9457SAndroid Build Coastguard Worker } 2567*4bdc9457SAndroid Build Coastguard Worker } 2568*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_cn)2569*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 2570*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2571*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2572*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2573*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2574*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2575*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2576*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2577*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2578*4bdc9457SAndroid Build Coastguard Worker .m(4) 2579*4bdc9457SAndroid Build Coastguard Worker .n(n) 2580*4bdc9457SAndroid Build Coastguard Worker .k(k) 2581*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2582*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2583*4bdc9457SAndroid Build Coastguard Worker } 2584*4bdc9457SAndroid Build Coastguard Worker } 2585*4bdc9457SAndroid Build Coastguard Worker } 2586*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_a)2587*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_a) { 2588*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2589*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2590*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2591*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2592*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2593*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2594*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2595*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2596*4bdc9457SAndroid Build Coastguard Worker .m(4) 2597*4bdc9457SAndroid Build Coastguard Worker .n(n) 2598*4bdc9457SAndroid Build Coastguard Worker .k(k) 2599*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 2600*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2601*4bdc9457SAndroid Build Coastguard Worker } 2602*4bdc9457SAndroid Build Coastguard Worker } 2603*4bdc9457SAndroid Build Coastguard Worker } 2604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_subtile)2605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_subtile) { 2606*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2607*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2608*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2609*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2610*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2611*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2612*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2613*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2614*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2615*4bdc9457SAndroid Build Coastguard Worker .m(m) 2616*4bdc9457SAndroid Build Coastguard Worker .n(n) 2617*4bdc9457SAndroid Build Coastguard Worker .k(k) 2618*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2619*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2620*4bdc9457SAndroid Build Coastguard Worker } 2621*4bdc9457SAndroid Build Coastguard Worker } 2622*4bdc9457SAndroid Build Coastguard Worker } 2623*4bdc9457SAndroid Build Coastguard Worker } 2624*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_div_16)2625*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_div_16) { 2626*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2627*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2628*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2629*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2630*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2631*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2632*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2633*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2634*4bdc9457SAndroid Build Coastguard Worker .m(4) 2635*4bdc9457SAndroid Build Coastguard Worker .n(n) 2636*4bdc9457SAndroid Build Coastguard Worker .k(k) 2637*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2638*4bdc9457SAndroid Build Coastguard Worker } 2639*4bdc9457SAndroid Build Coastguard Worker } 2640*4bdc9457SAndroid Build Coastguard Worker } 2641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_cn)2642*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_cn) { 2643*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2644*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2645*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2646*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2647*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2648*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2649*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2650*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2651*4bdc9457SAndroid Build Coastguard Worker .m(4) 2652*4bdc9457SAndroid Build Coastguard Worker .n(n) 2653*4bdc9457SAndroid Build Coastguard Worker .k(k) 2654*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2655*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2656*4bdc9457SAndroid Build Coastguard Worker } 2657*4bdc9457SAndroid Build Coastguard Worker } 2658*4bdc9457SAndroid Build Coastguard Worker } 2659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_a)2660*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_a) { 2661*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2662*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2663*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2664*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2665*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2666*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2667*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2668*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2669*4bdc9457SAndroid Build Coastguard Worker .m(4) 2670*4bdc9457SAndroid Build Coastguard Worker .n(n) 2671*4bdc9457SAndroid Build Coastguard Worker .k(k) 2672*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 2673*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2674*4bdc9457SAndroid Build Coastguard Worker } 2675*4bdc9457SAndroid Build Coastguard Worker } 2676*4bdc9457SAndroid Build Coastguard Worker } 2677*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_subtile)2678*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_subtile) { 2679*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2680*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2681*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2682*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2683*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2684*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2685*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2686*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2687*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2688*4bdc9457SAndroid Build Coastguard Worker .m(m) 2689*4bdc9457SAndroid Build Coastguard Worker .n(n) 2690*4bdc9457SAndroid Build Coastguard Worker .k(k) 2691*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2692*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2693*4bdc9457SAndroid Build Coastguard Worker } 2694*4bdc9457SAndroid Build Coastguard Worker } 2695*4bdc9457SAndroid Build Coastguard Worker } 2696*4bdc9457SAndroid Build Coastguard Worker } 2697*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)2698*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 2699*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2700*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2701*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2702*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 2703*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2704*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2705*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2706*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2707*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2708*4bdc9457SAndroid Build Coastguard Worker .m(m) 2709*4bdc9457SAndroid Build Coastguard Worker .n(n) 2710*4bdc9457SAndroid Build Coastguard Worker .k(k) 2711*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2712*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2713*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2714*4bdc9457SAndroid Build Coastguard Worker } 2715*4bdc9457SAndroid Build Coastguard Worker } 2716*4bdc9457SAndroid Build Coastguard Worker } 2717*4bdc9457SAndroid Build Coastguard Worker } 2718*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,qmin)2719*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, qmin) { 2720*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2721*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2722*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2723*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2724*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2725*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2726*4bdc9457SAndroid Build Coastguard Worker .m(4) 2727*4bdc9457SAndroid Build Coastguard Worker .n(16) 2728*4bdc9457SAndroid Build Coastguard Worker .k(4) 2729*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2730*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2731*4bdc9457SAndroid Build Coastguard Worker } 2732*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,qmax)2733*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, qmax) { 2734*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2735*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2736*4bdc9457SAndroid Build Coastguard Worker .mr(4) 2737*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2738*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2739*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2740*4bdc9457SAndroid Build Coastguard Worker .m(4) 2741*4bdc9457SAndroid Build Coastguard Worker .n(16) 2742*4bdc9457SAndroid Build Coastguard Worker .k(4) 2743*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2744*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2745*4bdc9457SAndroid Build Coastguard Worker } 2746*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,strided_cm)2747*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 2748*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2749*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2750*4bdc9457SAndroid Build Coastguard Worker .mr(4) 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(4) 2755*4bdc9457SAndroid Build Coastguard Worker .n(16) 2756*4bdc9457SAndroid Build Coastguard Worker .k(4) 2757*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2758*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2759*4bdc9457SAndroid Build Coastguard Worker } 2760*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 2761*4bdc9457SAndroid Build Coastguard Worker 2762*4bdc9457SAndroid Build Coastguard Worker 2763*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4)2764*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 2765*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2766*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2767*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2768*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2769*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2770*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2771*4bdc9457SAndroid Build Coastguard Worker .m(6) 2772*4bdc9457SAndroid Build Coastguard Worker .n(8) 2773*4bdc9457SAndroid Build Coastguard Worker .k(4) 2774*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2775*4bdc9457SAndroid Build Coastguard Worker } 2776*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,strided_cn)2777*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 2778*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2779*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2780*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2781*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2782*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2783*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2784*4bdc9457SAndroid Build Coastguard Worker .m(6) 2785*4bdc9457SAndroid Build Coastguard Worker .n(8) 2786*4bdc9457SAndroid Build Coastguard Worker .k(4) 2787*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 2788*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2789*4bdc9457SAndroid Build Coastguard Worker } 2790*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_strided_a)2791*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_strided_a) { 2792*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2793*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2794*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2795*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2796*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2797*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2798*4bdc9457SAndroid Build Coastguard Worker .m(6) 2799*4bdc9457SAndroid Build Coastguard Worker .n(8) 2800*4bdc9457SAndroid Build Coastguard Worker .k(4) 2801*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 2802*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2803*4bdc9457SAndroid Build Coastguard Worker } 2804*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)2805*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 2806*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2807*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2808*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2809*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2810*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2811*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2812*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2813*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2814*4bdc9457SAndroid Build Coastguard Worker .m(m) 2815*4bdc9457SAndroid Build Coastguard Worker .n(n) 2816*4bdc9457SAndroid Build Coastguard Worker .k(4) 2817*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2818*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2819*4bdc9457SAndroid Build Coastguard Worker } 2820*4bdc9457SAndroid Build Coastguard Worker } 2821*4bdc9457SAndroid Build Coastguard Worker } 2822*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)2823*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 2824*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2825*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2826*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2827*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2828*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2829*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2830*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2831*4bdc9457SAndroid Build Coastguard Worker .m(m) 2832*4bdc9457SAndroid Build Coastguard Worker .n(8) 2833*4bdc9457SAndroid Build Coastguard Worker .k(4) 2834*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2835*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2836*4bdc9457SAndroid Build Coastguard Worker } 2837*4bdc9457SAndroid Build Coastguard Worker } 2838*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)2839*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 2840*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2841*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2842*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2843*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2844*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2845*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2846*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2847*4bdc9457SAndroid Build Coastguard Worker .m(6) 2848*4bdc9457SAndroid Build Coastguard Worker .n(n) 2849*4bdc9457SAndroid Build Coastguard Worker .k(4) 2850*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2851*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2852*4bdc9457SAndroid Build Coastguard Worker } 2853*4bdc9457SAndroid Build Coastguard Worker } 2854*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4)2855*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 2856*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2857*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2858*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2859*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2860*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2861*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2862*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2863*4bdc9457SAndroid Build Coastguard Worker .m(6) 2864*4bdc9457SAndroid Build Coastguard Worker .n(8) 2865*4bdc9457SAndroid Build Coastguard Worker .k(k) 2866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2867*4bdc9457SAndroid Build Coastguard Worker } 2868*4bdc9457SAndroid Build Coastguard Worker } 2869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4_strided_a)2870*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4_strided_a) { 2871*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2872*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2873*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2874*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2875*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2876*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2877*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2878*4bdc9457SAndroid Build Coastguard Worker .m(6) 2879*4bdc9457SAndroid Build Coastguard Worker .n(8) 2880*4bdc9457SAndroid Build Coastguard Worker .k(k) 2881*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 2882*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2883*4bdc9457SAndroid Build Coastguard Worker } 2884*4bdc9457SAndroid Build Coastguard Worker } 2885*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)2886*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 2887*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2888*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2889*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2890*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2891*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2892*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2893*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2894*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2895*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2896*4bdc9457SAndroid Build Coastguard Worker .m(m) 2897*4bdc9457SAndroid Build Coastguard Worker .n(n) 2898*4bdc9457SAndroid Build Coastguard Worker .k(k) 2899*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2900*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2901*4bdc9457SAndroid Build Coastguard Worker } 2902*4bdc9457SAndroid Build Coastguard Worker } 2903*4bdc9457SAndroid Build Coastguard Worker } 2904*4bdc9457SAndroid Build Coastguard Worker } 2905*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4)2906*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 2907*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2908*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2909*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2910*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2911*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2912*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2913*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2914*4bdc9457SAndroid Build Coastguard Worker .m(6) 2915*4bdc9457SAndroid Build Coastguard Worker .n(8) 2916*4bdc9457SAndroid Build Coastguard Worker .k(k) 2917*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2918*4bdc9457SAndroid Build Coastguard Worker } 2919*4bdc9457SAndroid Build Coastguard Worker } 2920*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4_strided_a)2921*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4_strided_a) { 2922*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2923*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2924*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2925*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2926*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2927*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2928*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2929*4bdc9457SAndroid Build Coastguard Worker .m(6) 2930*4bdc9457SAndroid Build Coastguard Worker .n(8) 2931*4bdc9457SAndroid Build Coastguard Worker .k(k) 2932*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 2933*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2934*4bdc9457SAndroid Build Coastguard Worker } 2935*4bdc9457SAndroid Build Coastguard Worker } 2936*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)2937*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 2938*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2939*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2940*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2941*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2942*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2943*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2944*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2945*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2946*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2947*4bdc9457SAndroid Build Coastguard Worker .m(m) 2948*4bdc9457SAndroid Build Coastguard Worker .n(n) 2949*4bdc9457SAndroid Build Coastguard Worker .k(k) 2950*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2951*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2952*4bdc9457SAndroid Build Coastguard Worker } 2953*4bdc9457SAndroid Build Coastguard Worker } 2954*4bdc9457SAndroid Build Coastguard Worker } 2955*4bdc9457SAndroid Build Coastguard Worker } 2956*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_div_4)2957*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 2958*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2959*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2960*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2961*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2962*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2963*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2964*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2965*4bdc9457SAndroid Build Coastguard Worker .m(6) 2966*4bdc9457SAndroid Build Coastguard Worker .n(8) 2967*4bdc9457SAndroid Build Coastguard Worker .k(k) 2968*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2969*4bdc9457SAndroid Build Coastguard Worker } 2970*4bdc9457SAndroid Build Coastguard Worker } 2971*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_div_4_strided_a)2972*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_div_4_strided_a) { 2973*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2974*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2975*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2976*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2977*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2978*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2979*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2980*4bdc9457SAndroid Build Coastguard Worker .m(6) 2981*4bdc9457SAndroid Build Coastguard Worker .n(8) 2982*4bdc9457SAndroid Build Coastguard Worker .k(k) 2983*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 2984*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 2985*4bdc9457SAndroid Build Coastguard Worker } 2986*4bdc9457SAndroid Build Coastguard Worker } 2987*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)2988*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 2989*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2990*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2991*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 2992*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2993*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2994*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2995*4bdc9457SAndroid Build Coastguard Worker .nr(8) 2996*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2997*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2998*4bdc9457SAndroid Build Coastguard Worker .m(m) 2999*4bdc9457SAndroid Build Coastguard Worker .n(n) 3000*4bdc9457SAndroid Build Coastguard Worker .k(k) 3001*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3002*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3003*4bdc9457SAndroid Build Coastguard Worker } 3004*4bdc9457SAndroid Build Coastguard Worker } 3005*4bdc9457SAndroid Build Coastguard Worker } 3006*4bdc9457SAndroid Build Coastguard Worker } 3007*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8)3008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8) { 3009*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3010*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 3011*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3012*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3013*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3014*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3015*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3016*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3017*4bdc9457SAndroid Build Coastguard Worker .m(6) 3018*4bdc9457SAndroid Build Coastguard Worker .n(n) 3019*4bdc9457SAndroid Build Coastguard Worker .k(k) 3020*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3021*4bdc9457SAndroid Build Coastguard Worker } 3022*4bdc9457SAndroid Build Coastguard Worker } 3023*4bdc9457SAndroid Build Coastguard Worker } 3024*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_strided_cn)3025*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 3026*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3027*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 3028*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3029*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3030*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3031*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3032*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3033*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3034*4bdc9457SAndroid Build Coastguard Worker .m(6) 3035*4bdc9457SAndroid Build Coastguard Worker .n(n) 3036*4bdc9457SAndroid Build Coastguard Worker .k(k) 3037*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 3038*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3039*4bdc9457SAndroid Build Coastguard Worker } 3040*4bdc9457SAndroid Build Coastguard Worker } 3041*4bdc9457SAndroid Build Coastguard Worker } 3042*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_strided_a)3043*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_strided_a) { 3044*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3045*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 3046*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3047*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3048*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3049*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3050*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3051*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3052*4bdc9457SAndroid Build Coastguard Worker .m(6) 3053*4bdc9457SAndroid Build Coastguard Worker .n(n) 3054*4bdc9457SAndroid Build Coastguard Worker .k(k) 3055*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 3056*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3057*4bdc9457SAndroid Build Coastguard Worker } 3058*4bdc9457SAndroid Build Coastguard Worker } 3059*4bdc9457SAndroid Build Coastguard Worker } 3060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_subtile)3061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_subtile) { 3062*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3063*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 3064*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3065*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3066*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3067*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3068*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3069*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3070*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3071*4bdc9457SAndroid Build Coastguard Worker .m(m) 3072*4bdc9457SAndroid Build Coastguard Worker .n(n) 3073*4bdc9457SAndroid Build Coastguard Worker .k(k) 3074*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3075*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3076*4bdc9457SAndroid Build Coastguard Worker } 3077*4bdc9457SAndroid Build Coastguard Worker } 3078*4bdc9457SAndroid Build Coastguard Worker } 3079*4bdc9457SAndroid Build Coastguard Worker } 3080*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,n_div_8)3081*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, n_div_8) { 3082*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3083*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 3084*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3085*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3086*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3087*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3088*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3089*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3090*4bdc9457SAndroid Build Coastguard Worker .m(6) 3091*4bdc9457SAndroid Build Coastguard Worker .n(n) 3092*4bdc9457SAndroid Build Coastguard Worker .k(k) 3093*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3094*4bdc9457SAndroid Build Coastguard Worker } 3095*4bdc9457SAndroid Build Coastguard Worker } 3096*4bdc9457SAndroid Build Coastguard Worker } 3097*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_strided_cn)3098*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_strided_cn) { 3099*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3100*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 3101*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3102*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3103*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3104*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3105*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3106*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3107*4bdc9457SAndroid Build Coastguard Worker .m(6) 3108*4bdc9457SAndroid Build Coastguard Worker .n(n) 3109*4bdc9457SAndroid Build Coastguard Worker .k(k) 3110*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 3111*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3112*4bdc9457SAndroid Build Coastguard Worker } 3113*4bdc9457SAndroid Build Coastguard Worker } 3114*4bdc9457SAndroid Build Coastguard Worker } 3115*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_strided_a)3116*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_strided_a) { 3117*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3118*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 3119*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3120*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3121*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 3126*4bdc9457SAndroid Build Coastguard Worker .n(n) 3127*4bdc9457SAndroid Build Coastguard Worker .k(k) 3128*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 3129*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3130*4bdc9457SAndroid Build Coastguard Worker } 3131*4bdc9457SAndroid Build Coastguard Worker } 3132*4bdc9457SAndroid Build Coastguard Worker } 3133*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_subtile)3134*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_subtile) { 3135*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3136*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 3137*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3138*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3139*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3140*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3141*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3142*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3143*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3144*4bdc9457SAndroid Build Coastguard Worker .m(m) 3145*4bdc9457SAndroid Build Coastguard Worker .n(n) 3146*4bdc9457SAndroid Build Coastguard Worker .k(k) 3147*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3148*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3149*4bdc9457SAndroid Build Coastguard Worker } 3150*4bdc9457SAndroid Build Coastguard Worker } 3151*4bdc9457SAndroid Build Coastguard Worker } 3152*4bdc9457SAndroid Build Coastguard Worker } 3153*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)3154*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 3155*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3156*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3157*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 3158*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3159*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3160*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3161*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3162*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3163*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3164*4bdc9457SAndroid Build Coastguard Worker .m(m) 3165*4bdc9457SAndroid Build Coastguard Worker .n(n) 3166*4bdc9457SAndroid Build Coastguard Worker .k(k) 3167*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 3168*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3169*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3170*4bdc9457SAndroid Build Coastguard Worker } 3171*4bdc9457SAndroid Build Coastguard Worker } 3172*4bdc9457SAndroid Build Coastguard Worker } 3173*4bdc9457SAndroid Build Coastguard Worker } 3174*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,qmin)3175*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, qmin) { 3176*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3177*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3178*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3179*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3180*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3181*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3182*4bdc9457SAndroid Build Coastguard Worker .m(6) 3183*4bdc9457SAndroid Build Coastguard Worker .n(8) 3184*4bdc9457SAndroid Build Coastguard Worker .k(4) 3185*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3187*4bdc9457SAndroid Build Coastguard Worker } 3188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,qmax)3189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, qmax) { 3190*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3191*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3192*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3193*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3194*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3195*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3196*4bdc9457SAndroid Build Coastguard Worker .m(6) 3197*4bdc9457SAndroid Build Coastguard Worker .n(8) 3198*4bdc9457SAndroid Build Coastguard Worker .k(4) 3199*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3200*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3201*4bdc9457SAndroid Build Coastguard Worker } 3202*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64,strided_cm)3203*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 3204*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3205*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3206*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3207*4bdc9457SAndroid Build Coastguard Worker .nr(8) 3208*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3209*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3210*4bdc9457SAndroid Build Coastguard Worker .m(6) 3211*4bdc9457SAndroid Build Coastguard Worker .n(8) 3212*4bdc9457SAndroid Build Coastguard Worker .k(4) 3213*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 3214*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3215*4bdc9457SAndroid Build Coastguard Worker } 3216*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 3217*4bdc9457SAndroid Build Coastguard Worker 3218*4bdc9457SAndroid Build Coastguard Worker 3219*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_4)3220*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_4) { 3221*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3222*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3223*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3224*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3225*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3226*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3227*4bdc9457SAndroid Build Coastguard Worker .m(6) 3228*4bdc9457SAndroid Build Coastguard Worker .n(16) 3229*4bdc9457SAndroid Build Coastguard Worker .k(4) 3230*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3231*4bdc9457SAndroid Build Coastguard Worker } 3232*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,strided_cn)3233*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, strided_cn) { 3234*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3235*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3236*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3237*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3238*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3239*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3240*4bdc9457SAndroid Build Coastguard Worker .m(6) 3241*4bdc9457SAndroid Build Coastguard Worker .n(16) 3242*4bdc9457SAndroid Build Coastguard Worker .k(4) 3243*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3244*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3245*4bdc9457SAndroid Build Coastguard Worker } 3246*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_4_strided_a)3247*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_4_strided_a) { 3248*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3249*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3250*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3251*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3252*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3253*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3254*4bdc9457SAndroid Build Coastguard Worker .m(6) 3255*4bdc9457SAndroid Build Coastguard Worker .n(16) 3256*4bdc9457SAndroid Build Coastguard Worker .k(4) 3257*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 3258*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3259*4bdc9457SAndroid Build Coastguard Worker } 3260*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_4_subtile)3261*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_4_subtile) { 3262*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3263*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3264*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3265*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3266*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3267*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3268*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3269*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3270*4bdc9457SAndroid Build Coastguard Worker .m(m) 3271*4bdc9457SAndroid Build Coastguard Worker .n(n) 3272*4bdc9457SAndroid Build Coastguard Worker .k(4) 3273*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3274*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3275*4bdc9457SAndroid Build Coastguard Worker } 3276*4bdc9457SAndroid Build Coastguard Worker } 3277*4bdc9457SAndroid Build Coastguard Worker } 3278*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_4_subtile_m)3279*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_4_subtile_m) { 3280*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3281*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3282*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3283*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3284*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3285*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3286*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3287*4bdc9457SAndroid Build Coastguard Worker .m(m) 3288*4bdc9457SAndroid Build Coastguard Worker .n(16) 3289*4bdc9457SAndroid Build Coastguard Worker .k(4) 3290*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3291*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3292*4bdc9457SAndroid Build Coastguard Worker } 3293*4bdc9457SAndroid Build Coastguard Worker } 3294*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_4_subtile_n)3295*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_4_subtile_n) { 3296*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3297*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3298*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3299*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3300*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3301*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3302*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3303*4bdc9457SAndroid Build Coastguard Worker .m(6) 3304*4bdc9457SAndroid Build Coastguard Worker .n(n) 3305*4bdc9457SAndroid Build Coastguard Worker .k(4) 3306*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3307*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3308*4bdc9457SAndroid Build Coastguard Worker } 3309*4bdc9457SAndroid Build Coastguard Worker } 3310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_lt_4)3311*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_lt_4) { 3312*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3313*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 3314*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3315*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3316*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3317*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3318*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3319*4bdc9457SAndroid Build Coastguard Worker .m(6) 3320*4bdc9457SAndroid Build Coastguard Worker .n(16) 3321*4bdc9457SAndroid Build Coastguard Worker .k(k) 3322*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3323*4bdc9457SAndroid Build Coastguard Worker } 3324*4bdc9457SAndroid Build Coastguard Worker } 3325*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_lt_4_strided_a)3326*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_lt_4_strided_a) { 3327*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3328*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 3329*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3330*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3331*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3332*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3333*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3334*4bdc9457SAndroid Build Coastguard Worker .m(6) 3335*4bdc9457SAndroid Build Coastguard Worker .n(16) 3336*4bdc9457SAndroid Build Coastguard Worker .k(k) 3337*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 3338*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3339*4bdc9457SAndroid Build Coastguard Worker } 3340*4bdc9457SAndroid Build Coastguard Worker } 3341*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_lt_4_subtile)3342*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_lt_4_subtile) { 3343*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3344*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 3345*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3346*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3347*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3348*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3349*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3350*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3351*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3352*4bdc9457SAndroid Build Coastguard Worker .m(m) 3353*4bdc9457SAndroid Build Coastguard Worker .n(n) 3354*4bdc9457SAndroid Build Coastguard Worker .k(k) 3355*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3356*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3357*4bdc9457SAndroid Build Coastguard Worker } 3358*4bdc9457SAndroid Build Coastguard Worker } 3359*4bdc9457SAndroid Build Coastguard Worker } 3360*4bdc9457SAndroid Build Coastguard Worker } 3361*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_gt_4)3362*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_gt_4) { 3363*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3364*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 3365*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3366*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3367*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3368*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3369*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3370*4bdc9457SAndroid Build Coastguard Worker .m(6) 3371*4bdc9457SAndroid Build Coastguard Worker .n(16) 3372*4bdc9457SAndroid Build Coastguard Worker .k(k) 3373*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3374*4bdc9457SAndroid Build Coastguard Worker } 3375*4bdc9457SAndroid Build Coastguard Worker } 3376*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_gt_4_strided_a)3377*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_gt_4_strided_a) { 3378*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3379*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 3380*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3381*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3382*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3383*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3384*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3385*4bdc9457SAndroid Build Coastguard Worker .m(6) 3386*4bdc9457SAndroid Build Coastguard Worker .n(16) 3387*4bdc9457SAndroid Build Coastguard Worker .k(k) 3388*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 3389*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3390*4bdc9457SAndroid Build Coastguard Worker } 3391*4bdc9457SAndroid Build Coastguard Worker } 3392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_gt_4_subtile)3393*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_gt_4_subtile) { 3394*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3395*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 3396*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3397*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3398*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3399*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3400*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3401*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3402*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3403*4bdc9457SAndroid Build Coastguard Worker .m(m) 3404*4bdc9457SAndroid Build Coastguard Worker .n(n) 3405*4bdc9457SAndroid Build Coastguard Worker .k(k) 3406*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3407*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3408*4bdc9457SAndroid Build Coastguard Worker } 3409*4bdc9457SAndroid Build Coastguard Worker } 3410*4bdc9457SAndroid Build Coastguard Worker } 3411*4bdc9457SAndroid Build Coastguard Worker } 3412*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_div_4)3413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_div_4) { 3414*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3415*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3416*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3417*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3418*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3419*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3420*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3421*4bdc9457SAndroid Build Coastguard Worker .m(6) 3422*4bdc9457SAndroid Build Coastguard Worker .n(16) 3423*4bdc9457SAndroid Build Coastguard Worker .k(k) 3424*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3425*4bdc9457SAndroid Build Coastguard Worker } 3426*4bdc9457SAndroid Build Coastguard Worker } 3427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_div_4_strided_a)3428*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_div_4_strided_a) { 3429*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3430*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3431*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3432*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3433*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3434*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3435*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3436*4bdc9457SAndroid Build Coastguard Worker .m(6) 3437*4bdc9457SAndroid Build Coastguard Worker .n(16) 3438*4bdc9457SAndroid Build Coastguard Worker .k(k) 3439*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 3440*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3441*4bdc9457SAndroid Build Coastguard Worker } 3442*4bdc9457SAndroid Build Coastguard Worker } 3443*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_div_4_subtile)3444*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_div_4_subtile) { 3445*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3446*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3447*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3448*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3449*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3450*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3451*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3452*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3453*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3454*4bdc9457SAndroid Build Coastguard Worker .m(m) 3455*4bdc9457SAndroid Build Coastguard Worker .n(n) 3456*4bdc9457SAndroid Build Coastguard Worker .k(k) 3457*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3458*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3459*4bdc9457SAndroid Build Coastguard Worker } 3460*4bdc9457SAndroid Build Coastguard Worker } 3461*4bdc9457SAndroid Build Coastguard Worker } 3462*4bdc9457SAndroid Build Coastguard Worker } 3463*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_gt_16)3464*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_gt_16) { 3465*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3466*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3467*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3468*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3469*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3470*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3471*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3472*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3473*4bdc9457SAndroid Build Coastguard Worker .m(6) 3474*4bdc9457SAndroid Build Coastguard Worker .n(n) 3475*4bdc9457SAndroid Build Coastguard Worker .k(k) 3476*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3477*4bdc9457SAndroid Build Coastguard Worker } 3478*4bdc9457SAndroid Build Coastguard Worker } 3479*4bdc9457SAndroid Build Coastguard Worker } 3480*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_gt_16_strided_cn)3481*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_gt_16_strided_cn) { 3482*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3483*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3484*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3485*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3486*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3487*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3488*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3489*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3490*4bdc9457SAndroid Build Coastguard Worker .m(6) 3491*4bdc9457SAndroid Build Coastguard Worker .n(n) 3492*4bdc9457SAndroid Build Coastguard Worker .k(k) 3493*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3494*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3495*4bdc9457SAndroid Build Coastguard Worker } 3496*4bdc9457SAndroid Build Coastguard Worker } 3497*4bdc9457SAndroid Build Coastguard Worker } 3498*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_gt_16_strided_a)3499*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_gt_16_strided_a) { 3500*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3501*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3502*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3503*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3504*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3505*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3506*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3507*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3508*4bdc9457SAndroid Build Coastguard Worker .m(6) 3509*4bdc9457SAndroid Build Coastguard Worker .n(n) 3510*4bdc9457SAndroid Build Coastguard Worker .k(k) 3511*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 3512*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3513*4bdc9457SAndroid Build Coastguard Worker } 3514*4bdc9457SAndroid Build Coastguard Worker } 3515*4bdc9457SAndroid Build Coastguard Worker } 3516*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_gt_16_subtile)3517*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_gt_16_subtile) { 3518*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3519*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3520*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3521*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3522*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3523*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3524*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3525*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3526*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3527*4bdc9457SAndroid Build Coastguard Worker .m(m) 3528*4bdc9457SAndroid Build Coastguard Worker .n(n) 3529*4bdc9457SAndroid Build Coastguard Worker .k(k) 3530*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3531*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3532*4bdc9457SAndroid Build Coastguard Worker } 3533*4bdc9457SAndroid Build Coastguard Worker } 3534*4bdc9457SAndroid Build Coastguard Worker } 3535*4bdc9457SAndroid Build Coastguard Worker } 3536*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_div_16)3537*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_div_16) { 3538*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3539*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3540*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3541*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3542*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3543*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3544*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3545*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3546*4bdc9457SAndroid Build Coastguard Worker .m(6) 3547*4bdc9457SAndroid Build Coastguard Worker .n(n) 3548*4bdc9457SAndroid Build Coastguard Worker .k(k) 3549*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3550*4bdc9457SAndroid Build Coastguard Worker } 3551*4bdc9457SAndroid Build Coastguard Worker } 3552*4bdc9457SAndroid Build Coastguard Worker } 3553*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_div_16_strided_cn)3554*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_div_16_strided_cn) { 3555*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3556*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3557*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3558*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3559*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3560*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3561*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3562*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3563*4bdc9457SAndroid Build Coastguard Worker .m(6) 3564*4bdc9457SAndroid Build Coastguard Worker .n(n) 3565*4bdc9457SAndroid Build Coastguard Worker .k(k) 3566*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3567*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3568*4bdc9457SAndroid Build Coastguard Worker } 3569*4bdc9457SAndroid Build Coastguard Worker } 3570*4bdc9457SAndroid Build Coastguard Worker } 3571*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_div_16_strided_a)3572*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_div_16_strided_a) { 3573*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3574*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3575*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3576*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3577*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3578*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3579*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3580*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3581*4bdc9457SAndroid Build Coastguard Worker .m(6) 3582*4bdc9457SAndroid Build Coastguard Worker .n(n) 3583*4bdc9457SAndroid Build Coastguard Worker .k(k) 3584*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 3585*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3586*4bdc9457SAndroid Build Coastguard Worker } 3587*4bdc9457SAndroid Build Coastguard Worker } 3588*4bdc9457SAndroid Build Coastguard Worker } 3589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_div_16_subtile)3590*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_div_16_subtile) { 3591*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3592*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3593*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3594*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3595*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3596*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3597*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3598*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3599*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3600*4bdc9457SAndroid Build Coastguard Worker .m(m) 3601*4bdc9457SAndroid Build Coastguard Worker .n(n) 3602*4bdc9457SAndroid Build Coastguard Worker .k(k) 3603*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3604*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3605*4bdc9457SAndroid Build Coastguard Worker } 3606*4bdc9457SAndroid Build Coastguard Worker } 3607*4bdc9457SAndroid Build Coastguard Worker } 3608*4bdc9457SAndroid Build Coastguard Worker } 3609*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,strided_cm_subtile)3610*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, strided_cm_subtile) { 3611*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3612*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3613*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3614*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3615*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3616*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3617*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3618*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3619*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3620*4bdc9457SAndroid Build Coastguard Worker .m(m) 3621*4bdc9457SAndroid Build Coastguard Worker .n(n) 3622*4bdc9457SAndroid Build Coastguard Worker .k(k) 3623*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 3624*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3625*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3626*4bdc9457SAndroid Build Coastguard Worker } 3627*4bdc9457SAndroid Build Coastguard Worker } 3628*4bdc9457SAndroid Build Coastguard Worker } 3629*4bdc9457SAndroid Build Coastguard Worker } 3630*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,qmin)3631*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, qmin) { 3632*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3633*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3634*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3635*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3636*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3637*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3638*4bdc9457SAndroid Build Coastguard Worker .m(6) 3639*4bdc9457SAndroid Build Coastguard Worker .n(16) 3640*4bdc9457SAndroid Build Coastguard Worker .k(4) 3641*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3642*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3643*4bdc9457SAndroid Build Coastguard Worker } 3644*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,qmax)3645*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, qmax) { 3646*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3647*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3648*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3649*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3650*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3651*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3652*4bdc9457SAndroid Build Coastguard Worker .m(6) 3653*4bdc9457SAndroid Build Coastguard Worker .n(16) 3654*4bdc9457SAndroid Build Coastguard Worker .k(4) 3655*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3656*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3657*4bdc9457SAndroid Build Coastguard Worker } 3658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,strided_cm)3659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, strided_cm) { 3660*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3661*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3662*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3663*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3664*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3665*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3666*4bdc9457SAndroid Build Coastguard Worker .m(6) 3667*4bdc9457SAndroid Build Coastguard Worker .n(16) 3668*4bdc9457SAndroid Build Coastguard Worker .k(4) 3669*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 3670*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 3671*4bdc9457SAndroid Build Coastguard Worker } 3672*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 3673*4bdc9457SAndroid Build Coastguard Worker 3674*4bdc9457SAndroid Build Coastguard Worker 3675*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4)3676*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4) { 3677*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3678*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3679*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3680*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3681*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3682*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3683*4bdc9457SAndroid Build Coastguard Worker .m(6) 3684*4bdc9457SAndroid Build Coastguard Worker .n(16) 3685*4bdc9457SAndroid Build Coastguard Worker .k(4) 3686*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3687*4bdc9457SAndroid Build Coastguard Worker } 3688*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,strided_cn)3689*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, strided_cn) { 3690*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3691*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3692*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3693*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3694*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3695*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3696*4bdc9457SAndroid Build Coastguard Worker .m(6) 3697*4bdc9457SAndroid Build Coastguard Worker .n(16) 3698*4bdc9457SAndroid Build Coastguard Worker .k(4) 3699*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3700*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3701*4bdc9457SAndroid Build Coastguard Worker } 3702*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4_strided_a)3703*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4_strided_a) { 3704*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3705*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3706*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3707*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3708*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3709*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3710*4bdc9457SAndroid Build Coastguard Worker .m(6) 3711*4bdc9457SAndroid Build Coastguard Worker .n(16) 3712*4bdc9457SAndroid Build Coastguard Worker .k(4) 3713*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 3714*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3715*4bdc9457SAndroid Build Coastguard Worker } 3716*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4_subtile)3717*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4_subtile) { 3718*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3719*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3720*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3721*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3722*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3723*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3724*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3725*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3726*4bdc9457SAndroid Build Coastguard Worker .m(m) 3727*4bdc9457SAndroid Build Coastguard Worker .n(n) 3728*4bdc9457SAndroid Build Coastguard Worker .k(4) 3729*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3730*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3731*4bdc9457SAndroid Build Coastguard Worker } 3732*4bdc9457SAndroid Build Coastguard Worker } 3733*4bdc9457SAndroid Build Coastguard Worker } 3734*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4_subtile_m)3735*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4_subtile_m) { 3736*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3737*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3738*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3739*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3740*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3741*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3742*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3743*4bdc9457SAndroid Build Coastguard Worker .m(m) 3744*4bdc9457SAndroid Build Coastguard Worker .n(16) 3745*4bdc9457SAndroid Build Coastguard Worker .k(4) 3746*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3747*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3748*4bdc9457SAndroid Build Coastguard Worker } 3749*4bdc9457SAndroid Build Coastguard Worker } 3750*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4_subtile_n)3751*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4_subtile_n) { 3752*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3753*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3754*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3755*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3756*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3757*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3758*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3759*4bdc9457SAndroid Build Coastguard Worker .m(6) 3760*4bdc9457SAndroid Build Coastguard Worker .n(n) 3761*4bdc9457SAndroid Build Coastguard Worker .k(4) 3762*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3763*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3764*4bdc9457SAndroid Build Coastguard Worker } 3765*4bdc9457SAndroid Build Coastguard Worker } 3766*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_lt_4)3767*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_lt_4) { 3768*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3769*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 3770*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3771*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3772*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3773*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3774*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3775*4bdc9457SAndroid Build Coastguard Worker .m(6) 3776*4bdc9457SAndroid Build Coastguard Worker .n(16) 3777*4bdc9457SAndroid Build Coastguard Worker .k(k) 3778*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3779*4bdc9457SAndroid Build Coastguard Worker } 3780*4bdc9457SAndroid Build Coastguard Worker } 3781*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_lt_4_strided_a)3782*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_lt_4_strided_a) { 3783*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3784*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 3785*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3786*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3787*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3788*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3789*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3790*4bdc9457SAndroid Build Coastguard Worker .m(6) 3791*4bdc9457SAndroid Build Coastguard Worker .n(16) 3792*4bdc9457SAndroid Build Coastguard Worker .k(k) 3793*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 3794*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3795*4bdc9457SAndroid Build Coastguard Worker } 3796*4bdc9457SAndroid Build Coastguard Worker } 3797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_lt_4_subtile)3798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_lt_4_subtile) { 3799*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3800*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 3801*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3802*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3803*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3804*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3805*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3806*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3807*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3808*4bdc9457SAndroid Build Coastguard Worker .m(m) 3809*4bdc9457SAndroid Build Coastguard Worker .n(n) 3810*4bdc9457SAndroid Build Coastguard Worker .k(k) 3811*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3812*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3813*4bdc9457SAndroid Build Coastguard Worker } 3814*4bdc9457SAndroid Build Coastguard Worker } 3815*4bdc9457SAndroid Build Coastguard Worker } 3816*4bdc9457SAndroid Build Coastguard Worker } 3817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_gt_4)3818*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_gt_4) { 3819*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3820*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 3821*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3822*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3823*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3824*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3825*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3826*4bdc9457SAndroid Build Coastguard Worker .m(6) 3827*4bdc9457SAndroid Build Coastguard Worker .n(16) 3828*4bdc9457SAndroid Build Coastguard Worker .k(k) 3829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3830*4bdc9457SAndroid Build Coastguard Worker } 3831*4bdc9457SAndroid Build Coastguard Worker } 3832*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_gt_4_strided_a)3833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_gt_4_strided_a) { 3834*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3835*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 3836*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3837*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3838*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3839*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3840*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3841*4bdc9457SAndroid Build Coastguard Worker .m(6) 3842*4bdc9457SAndroid Build Coastguard Worker .n(16) 3843*4bdc9457SAndroid Build Coastguard Worker .k(k) 3844*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 3845*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3846*4bdc9457SAndroid Build Coastguard Worker } 3847*4bdc9457SAndroid Build Coastguard Worker } 3848*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_gt_4_subtile)3849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_gt_4_subtile) { 3850*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3851*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 3852*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3853*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3854*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3855*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3856*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3857*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3858*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3859*4bdc9457SAndroid Build Coastguard Worker .m(m) 3860*4bdc9457SAndroid Build Coastguard Worker .n(n) 3861*4bdc9457SAndroid Build Coastguard Worker .k(k) 3862*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3863*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3864*4bdc9457SAndroid Build Coastguard Worker } 3865*4bdc9457SAndroid Build Coastguard Worker } 3866*4bdc9457SAndroid Build Coastguard Worker } 3867*4bdc9457SAndroid Build Coastguard Worker } 3868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_div_4)3869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_div_4) { 3870*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3871*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3872*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3873*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3874*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3875*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3876*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3877*4bdc9457SAndroid Build Coastguard Worker .m(6) 3878*4bdc9457SAndroid Build Coastguard Worker .n(16) 3879*4bdc9457SAndroid Build Coastguard Worker .k(k) 3880*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3881*4bdc9457SAndroid Build Coastguard Worker } 3882*4bdc9457SAndroid Build Coastguard Worker } 3883*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_div_4_strided_a)3884*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_div_4_strided_a) { 3885*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3886*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3887*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3888*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3889*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3890*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3891*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3892*4bdc9457SAndroid Build Coastguard Worker .m(6) 3893*4bdc9457SAndroid Build Coastguard Worker .n(16) 3894*4bdc9457SAndroid Build Coastguard Worker .k(k) 3895*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 3896*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3897*4bdc9457SAndroid Build Coastguard Worker } 3898*4bdc9457SAndroid Build Coastguard Worker } 3899*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_div_4_subtile)3900*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_div_4_subtile) { 3901*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3902*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3903*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3904*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3905*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3906*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3907*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3908*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3909*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3910*4bdc9457SAndroid Build Coastguard Worker .m(m) 3911*4bdc9457SAndroid Build Coastguard Worker .n(n) 3912*4bdc9457SAndroid Build Coastguard Worker .k(k) 3913*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3914*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3915*4bdc9457SAndroid Build Coastguard Worker } 3916*4bdc9457SAndroid Build Coastguard Worker } 3917*4bdc9457SAndroid Build Coastguard Worker } 3918*4bdc9457SAndroid Build Coastguard Worker } 3919*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_gt_16)3920*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_gt_16) { 3921*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3922*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3923*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3924*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3925*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3926*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3927*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3928*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3929*4bdc9457SAndroid Build Coastguard Worker .m(6) 3930*4bdc9457SAndroid Build Coastguard Worker .n(n) 3931*4bdc9457SAndroid Build Coastguard Worker .k(k) 3932*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3933*4bdc9457SAndroid Build Coastguard Worker } 3934*4bdc9457SAndroid Build Coastguard Worker } 3935*4bdc9457SAndroid Build Coastguard Worker } 3936*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_gt_16_strided_cn)3937*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_gt_16_strided_cn) { 3938*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3939*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3940*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3941*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3942*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3943*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3944*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3945*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3946*4bdc9457SAndroid Build Coastguard Worker .m(6) 3947*4bdc9457SAndroid Build Coastguard Worker .n(n) 3948*4bdc9457SAndroid Build Coastguard Worker .k(k) 3949*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3950*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3951*4bdc9457SAndroid Build Coastguard Worker } 3952*4bdc9457SAndroid Build Coastguard Worker } 3953*4bdc9457SAndroid Build Coastguard Worker } 3954*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_gt_16_strided_a)3955*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_gt_16_strided_a) { 3956*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3957*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3958*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3959*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3960*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3961*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3962*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3963*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3964*4bdc9457SAndroid Build Coastguard Worker .m(6) 3965*4bdc9457SAndroid Build Coastguard Worker .n(n) 3966*4bdc9457SAndroid Build Coastguard Worker .k(k) 3967*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 3968*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3969*4bdc9457SAndroid Build Coastguard Worker } 3970*4bdc9457SAndroid Build Coastguard Worker } 3971*4bdc9457SAndroid Build Coastguard Worker } 3972*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_gt_16_subtile)3973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_gt_16_subtile) { 3974*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3975*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3976*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3977*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3978*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3979*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3980*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3981*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3982*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3983*4bdc9457SAndroid Build Coastguard Worker .m(m) 3984*4bdc9457SAndroid Build Coastguard Worker .n(n) 3985*4bdc9457SAndroid Build Coastguard Worker .k(k) 3986*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3987*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 3988*4bdc9457SAndroid Build Coastguard Worker } 3989*4bdc9457SAndroid Build Coastguard Worker } 3990*4bdc9457SAndroid Build Coastguard Worker } 3991*4bdc9457SAndroid Build Coastguard Worker } 3992*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_div_16)3993*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_div_16) { 3994*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3995*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3996*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3997*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3998*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3999*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4000*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4001*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4002*4bdc9457SAndroid Build Coastguard Worker .m(6) 4003*4bdc9457SAndroid Build Coastguard Worker .n(n) 4004*4bdc9457SAndroid Build Coastguard Worker .k(k) 4005*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 4006*4bdc9457SAndroid Build Coastguard Worker } 4007*4bdc9457SAndroid Build Coastguard Worker } 4008*4bdc9457SAndroid Build Coastguard Worker } 4009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_div_16_strided_cn)4010*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_div_16_strided_cn) { 4011*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4012*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4013*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4014*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4015*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4016*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4017*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4018*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4019*4bdc9457SAndroid Build Coastguard Worker .m(6) 4020*4bdc9457SAndroid Build Coastguard Worker .n(n) 4021*4bdc9457SAndroid Build Coastguard Worker .k(k) 4022*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4023*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 4024*4bdc9457SAndroid Build Coastguard Worker } 4025*4bdc9457SAndroid Build Coastguard Worker } 4026*4bdc9457SAndroid Build Coastguard Worker } 4027*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_div_16_strided_a)4028*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_div_16_strided_a) { 4029*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4030*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4031*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4032*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4033*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4034*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4035*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4036*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4037*4bdc9457SAndroid Build Coastguard Worker .m(6) 4038*4bdc9457SAndroid Build Coastguard Worker .n(n) 4039*4bdc9457SAndroid Build Coastguard Worker .k(k) 4040*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 4041*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 4042*4bdc9457SAndroid Build Coastguard Worker } 4043*4bdc9457SAndroid Build Coastguard Worker } 4044*4bdc9457SAndroid Build Coastguard Worker } 4045*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_div_16_subtile)4046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_div_16_subtile) { 4047*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4048*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4049*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4050*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4051*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4052*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(m) 4057*4bdc9457SAndroid Build Coastguard Worker .n(n) 4058*4bdc9457SAndroid Build Coastguard Worker .k(k) 4059*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4060*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 4061*4bdc9457SAndroid Build Coastguard Worker } 4062*4bdc9457SAndroid Build Coastguard Worker } 4063*4bdc9457SAndroid Build Coastguard Worker } 4064*4bdc9457SAndroid Build Coastguard Worker } 4065*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,strided_cm_subtile)4066*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, strided_cm_subtile) { 4067*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4068*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4069*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4070*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4071*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4072*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4073*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4074*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4075*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4076*4bdc9457SAndroid Build Coastguard Worker .m(m) 4077*4bdc9457SAndroid Build Coastguard Worker .n(n) 4078*4bdc9457SAndroid Build Coastguard Worker .k(k) 4079*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4080*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4081*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 4082*4bdc9457SAndroid Build Coastguard Worker } 4083*4bdc9457SAndroid Build Coastguard Worker } 4084*4bdc9457SAndroid Build Coastguard Worker } 4085*4bdc9457SAndroid Build Coastguard Worker } 4086*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,qmin)4087*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, qmin) { 4088*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4089*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4090*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4091*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4092*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4093*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4094*4bdc9457SAndroid Build Coastguard Worker .m(6) 4095*4bdc9457SAndroid Build Coastguard Worker .n(16) 4096*4bdc9457SAndroid Build Coastguard Worker .k(4) 4097*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4098*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 4099*4bdc9457SAndroid Build Coastguard Worker } 4100*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,qmax)4101*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, qmax) { 4102*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4103*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4104*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4105*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4106*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4107*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4108*4bdc9457SAndroid Build Coastguard Worker .m(6) 4109*4bdc9457SAndroid Build Coastguard Worker .n(16) 4110*4bdc9457SAndroid Build Coastguard Worker .k(4) 4111*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4112*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 4113*4bdc9457SAndroid Build Coastguard Worker } 4114*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,strided_cm)4115*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, strided_cm) { 4116*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4117*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4118*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4119*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4120*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4121*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4122*4bdc9457SAndroid Build Coastguard Worker .m(6) 4123*4bdc9457SAndroid Build Coastguard Worker .n(16) 4124*4bdc9457SAndroid Build Coastguard Worker .k(4) 4125*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4126*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 4127*4bdc9457SAndroid Build Coastguard Worker } 4128*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 4129*4bdc9457SAndroid Build Coastguard Worker 4130*4bdc9457SAndroid Build Coastguard Worker 4131*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4)4132*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4) { 4133*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4134*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4135*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4136*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4137*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4138*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4139*4bdc9457SAndroid Build Coastguard Worker .m(6) 4140*4bdc9457SAndroid Build Coastguard Worker .n(16) 4141*4bdc9457SAndroid Build Coastguard Worker .k(4) 4142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4143*4bdc9457SAndroid Build Coastguard Worker } 4144*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,strided_cn)4145*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, strided_cn) { 4146*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4147*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4148*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4149*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4150*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4151*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4152*4bdc9457SAndroid Build Coastguard Worker .m(6) 4153*4bdc9457SAndroid Build Coastguard Worker .n(16) 4154*4bdc9457SAndroid Build Coastguard Worker .k(4) 4155*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4157*4bdc9457SAndroid Build Coastguard Worker } 4158*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4_strided_a)4159*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4_strided_a) { 4160*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4161*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4162*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4163*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4164*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4165*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4166*4bdc9457SAndroid Build Coastguard Worker .m(6) 4167*4bdc9457SAndroid Build Coastguard Worker .n(16) 4168*4bdc9457SAndroid Build Coastguard Worker .k(4) 4169*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 4170*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4171*4bdc9457SAndroid Build Coastguard Worker } 4172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4_subtile)4173*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4_subtile) { 4174*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4175*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4176*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4177*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4178*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4179*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4180*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4181*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4182*4bdc9457SAndroid Build Coastguard Worker .m(m) 4183*4bdc9457SAndroid Build Coastguard Worker .n(n) 4184*4bdc9457SAndroid Build Coastguard Worker .k(4) 4185*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4187*4bdc9457SAndroid Build Coastguard Worker } 4188*4bdc9457SAndroid Build Coastguard Worker } 4189*4bdc9457SAndroid Build Coastguard Worker } 4190*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4_subtile_m)4191*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4_subtile_m) { 4192*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4193*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4194*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4195*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4196*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4197*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4198*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4199*4bdc9457SAndroid Build Coastguard Worker .m(m) 4200*4bdc9457SAndroid Build Coastguard Worker .n(16) 4201*4bdc9457SAndroid Build Coastguard Worker .k(4) 4202*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4203*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4204*4bdc9457SAndroid Build Coastguard Worker } 4205*4bdc9457SAndroid Build Coastguard Worker } 4206*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4_subtile_n)4207*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4_subtile_n) { 4208*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4209*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4210*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4211*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4212*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4213*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4214*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4215*4bdc9457SAndroid Build Coastguard Worker .m(6) 4216*4bdc9457SAndroid Build Coastguard Worker .n(n) 4217*4bdc9457SAndroid Build Coastguard Worker .k(4) 4218*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4219*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4220*4bdc9457SAndroid Build Coastguard Worker } 4221*4bdc9457SAndroid Build Coastguard Worker } 4222*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_lt_4)4223*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_lt_4) { 4224*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4225*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 4226*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4227*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4228*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4229*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4230*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4231*4bdc9457SAndroid Build Coastguard Worker .m(6) 4232*4bdc9457SAndroid Build Coastguard Worker .n(16) 4233*4bdc9457SAndroid Build Coastguard Worker .k(k) 4234*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4235*4bdc9457SAndroid Build Coastguard Worker } 4236*4bdc9457SAndroid Build Coastguard Worker } 4237*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_lt_4_strided_a)4238*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_lt_4_strided_a) { 4239*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4240*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 4241*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4242*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4243*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4244*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4245*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4246*4bdc9457SAndroid Build Coastguard Worker .m(6) 4247*4bdc9457SAndroid Build Coastguard Worker .n(16) 4248*4bdc9457SAndroid Build Coastguard Worker .k(k) 4249*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 4250*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4251*4bdc9457SAndroid Build Coastguard Worker } 4252*4bdc9457SAndroid Build Coastguard Worker } 4253*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_lt_4_subtile)4254*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_lt_4_subtile) { 4255*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4256*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 4257*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4258*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4259*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4260*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4261*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4262*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4263*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4264*4bdc9457SAndroid Build Coastguard Worker .m(m) 4265*4bdc9457SAndroid Build Coastguard Worker .n(n) 4266*4bdc9457SAndroid Build Coastguard Worker .k(k) 4267*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4268*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4269*4bdc9457SAndroid Build Coastguard Worker } 4270*4bdc9457SAndroid Build Coastguard Worker } 4271*4bdc9457SAndroid Build Coastguard Worker } 4272*4bdc9457SAndroid Build Coastguard Worker } 4273*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_gt_4)4274*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_gt_4) { 4275*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4276*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 4277*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4278*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4279*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4280*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4281*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4282*4bdc9457SAndroid Build Coastguard Worker .m(6) 4283*4bdc9457SAndroid Build Coastguard Worker .n(16) 4284*4bdc9457SAndroid Build Coastguard Worker .k(k) 4285*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4286*4bdc9457SAndroid Build Coastguard Worker } 4287*4bdc9457SAndroid Build Coastguard Worker } 4288*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_gt_4_strided_a)4289*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_gt_4_strided_a) { 4290*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4291*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 4292*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4293*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4294*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4295*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4296*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4297*4bdc9457SAndroid Build Coastguard Worker .m(6) 4298*4bdc9457SAndroid Build Coastguard Worker .n(16) 4299*4bdc9457SAndroid Build Coastguard Worker .k(k) 4300*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 4301*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4302*4bdc9457SAndroid Build Coastguard Worker } 4303*4bdc9457SAndroid Build Coastguard Worker } 4304*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_gt_4_subtile)4305*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_gt_4_subtile) { 4306*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4307*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 4308*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4309*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4310*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4311*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4312*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4313*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4314*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4315*4bdc9457SAndroid Build Coastguard Worker .m(m) 4316*4bdc9457SAndroid Build Coastguard Worker .n(n) 4317*4bdc9457SAndroid Build Coastguard Worker .k(k) 4318*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4319*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4320*4bdc9457SAndroid Build Coastguard Worker } 4321*4bdc9457SAndroid Build Coastguard Worker } 4322*4bdc9457SAndroid Build Coastguard Worker } 4323*4bdc9457SAndroid Build Coastguard Worker } 4324*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_div_4)4325*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_div_4) { 4326*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4327*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 4328*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4329*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4330*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4331*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4332*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4333*4bdc9457SAndroid Build Coastguard Worker .m(6) 4334*4bdc9457SAndroid Build Coastguard Worker .n(16) 4335*4bdc9457SAndroid Build Coastguard Worker .k(k) 4336*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4337*4bdc9457SAndroid Build Coastguard Worker } 4338*4bdc9457SAndroid Build Coastguard Worker } 4339*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_div_4_strided_a)4340*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_div_4_strided_a) { 4341*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4342*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 4343*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4344*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4345*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4346*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4347*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4348*4bdc9457SAndroid Build Coastguard Worker .m(6) 4349*4bdc9457SAndroid Build Coastguard Worker .n(16) 4350*4bdc9457SAndroid Build Coastguard Worker .k(k) 4351*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 4352*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4353*4bdc9457SAndroid Build Coastguard Worker } 4354*4bdc9457SAndroid Build Coastguard Worker } 4355*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_div_4_subtile)4356*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_div_4_subtile) { 4357*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4358*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 4359*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4360*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4361*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4362*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4363*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4364*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4365*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4366*4bdc9457SAndroid Build Coastguard Worker .m(m) 4367*4bdc9457SAndroid Build Coastguard Worker .n(n) 4368*4bdc9457SAndroid Build Coastguard Worker .k(k) 4369*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4370*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4371*4bdc9457SAndroid Build Coastguard Worker } 4372*4bdc9457SAndroid Build Coastguard Worker } 4373*4bdc9457SAndroid Build Coastguard Worker } 4374*4bdc9457SAndroid Build Coastguard Worker } 4375*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_gt_16)4376*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_gt_16) { 4377*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4378*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4379*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4380*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4381*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4382*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4383*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4384*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4385*4bdc9457SAndroid Build Coastguard Worker .m(6) 4386*4bdc9457SAndroid Build Coastguard Worker .n(n) 4387*4bdc9457SAndroid Build Coastguard Worker .k(k) 4388*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4389*4bdc9457SAndroid Build Coastguard Worker } 4390*4bdc9457SAndroid Build Coastguard Worker } 4391*4bdc9457SAndroid Build Coastguard Worker } 4392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_gt_16_strided_cn)4393*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_gt_16_strided_cn) { 4394*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4395*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4396*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4397*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4398*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4399*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4400*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4401*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4402*4bdc9457SAndroid Build Coastguard Worker .m(6) 4403*4bdc9457SAndroid Build Coastguard Worker .n(n) 4404*4bdc9457SAndroid Build Coastguard Worker .k(k) 4405*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4406*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4407*4bdc9457SAndroid Build Coastguard Worker } 4408*4bdc9457SAndroid Build Coastguard Worker } 4409*4bdc9457SAndroid Build Coastguard Worker } 4410*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_gt_16_strided_a)4411*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_gt_16_strided_a) { 4412*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4413*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4414*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4415*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4416*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4417*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4418*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4419*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4420*4bdc9457SAndroid Build Coastguard Worker .m(6) 4421*4bdc9457SAndroid Build Coastguard Worker .n(n) 4422*4bdc9457SAndroid Build Coastguard Worker .k(k) 4423*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 4424*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4425*4bdc9457SAndroid Build Coastguard Worker } 4426*4bdc9457SAndroid Build Coastguard Worker } 4427*4bdc9457SAndroid Build Coastguard Worker } 4428*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_gt_16_subtile)4429*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_gt_16_subtile) { 4430*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4431*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4432*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4433*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4434*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4435*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4436*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4437*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4438*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4439*4bdc9457SAndroid Build Coastguard Worker .m(m) 4440*4bdc9457SAndroid Build Coastguard Worker .n(n) 4441*4bdc9457SAndroid Build Coastguard Worker .k(k) 4442*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4443*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4444*4bdc9457SAndroid Build Coastguard Worker } 4445*4bdc9457SAndroid Build Coastguard Worker } 4446*4bdc9457SAndroid Build Coastguard Worker } 4447*4bdc9457SAndroid Build Coastguard Worker } 4448*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_div_16)4449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_div_16) { 4450*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4451*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4452*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4453*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4454*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4455*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4456*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4457*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4458*4bdc9457SAndroid Build Coastguard Worker .m(6) 4459*4bdc9457SAndroid Build Coastguard Worker .n(n) 4460*4bdc9457SAndroid Build Coastguard Worker .k(k) 4461*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4462*4bdc9457SAndroid Build Coastguard Worker } 4463*4bdc9457SAndroid Build Coastguard Worker } 4464*4bdc9457SAndroid Build Coastguard Worker } 4465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_div_16_strided_cn)4466*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_div_16_strided_cn) { 4467*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4468*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4469*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4470*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4471*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4472*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4473*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4474*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4475*4bdc9457SAndroid Build Coastguard Worker .m(6) 4476*4bdc9457SAndroid Build Coastguard Worker .n(n) 4477*4bdc9457SAndroid Build Coastguard Worker .k(k) 4478*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4479*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4480*4bdc9457SAndroid Build Coastguard Worker } 4481*4bdc9457SAndroid Build Coastguard Worker } 4482*4bdc9457SAndroid Build Coastguard Worker } 4483*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_div_16_strided_a)4484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_div_16_strided_a) { 4485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4486*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4487*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4488*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4489*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4490*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4491*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4492*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4493*4bdc9457SAndroid Build Coastguard Worker .m(6) 4494*4bdc9457SAndroid Build Coastguard Worker .n(n) 4495*4bdc9457SAndroid Build Coastguard Worker .k(k) 4496*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 4497*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4498*4bdc9457SAndroid Build Coastguard Worker } 4499*4bdc9457SAndroid Build Coastguard Worker } 4500*4bdc9457SAndroid Build Coastguard Worker } 4501*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_div_16_subtile)4502*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_div_16_subtile) { 4503*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4504*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4505*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4506*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4507*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4508*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4509*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4510*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4511*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4512*4bdc9457SAndroid Build Coastguard Worker .m(m) 4513*4bdc9457SAndroid Build Coastguard Worker .n(n) 4514*4bdc9457SAndroid Build Coastguard Worker .k(k) 4515*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4516*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4517*4bdc9457SAndroid Build Coastguard Worker } 4518*4bdc9457SAndroid Build Coastguard Worker } 4519*4bdc9457SAndroid Build Coastguard Worker } 4520*4bdc9457SAndroid Build Coastguard Worker } 4521*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,strided_cm_subtile)4522*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, strided_cm_subtile) { 4523*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4524*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4525*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4526*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4527*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4528*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4529*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4530*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4531*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4532*4bdc9457SAndroid Build Coastguard Worker .m(m) 4533*4bdc9457SAndroid Build Coastguard Worker .n(n) 4534*4bdc9457SAndroid Build Coastguard Worker .k(k) 4535*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4536*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4537*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4538*4bdc9457SAndroid Build Coastguard Worker } 4539*4bdc9457SAndroid Build Coastguard Worker } 4540*4bdc9457SAndroid Build Coastguard Worker } 4541*4bdc9457SAndroid Build Coastguard Worker } 4542*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,qmin)4543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, qmin) { 4544*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4545*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4546*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4547*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4548*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4549*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4550*4bdc9457SAndroid Build Coastguard Worker .m(6) 4551*4bdc9457SAndroid Build Coastguard Worker .n(16) 4552*4bdc9457SAndroid Build Coastguard Worker .k(4) 4553*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4554*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4555*4bdc9457SAndroid Build Coastguard Worker } 4556*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,qmax)4557*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, qmax) { 4558*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4559*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4560*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4561*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4562*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4563*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4564*4bdc9457SAndroid Build Coastguard Worker .m(6) 4565*4bdc9457SAndroid Build Coastguard Worker .n(16) 4566*4bdc9457SAndroid Build Coastguard Worker .k(4) 4567*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4568*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4569*4bdc9457SAndroid Build Coastguard Worker } 4570*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,strided_cm)4571*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, strided_cm) { 4572*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4573*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4574*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4575*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4576*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4577*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4578*4bdc9457SAndroid Build Coastguard Worker .m(6) 4579*4bdc9457SAndroid Build Coastguard Worker .n(16) 4580*4bdc9457SAndroid Build Coastguard Worker .k(4) 4581*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4582*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 4583*4bdc9457SAndroid Build Coastguard Worker } 4584*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 4585*4bdc9457SAndroid Build Coastguard Worker 4586*4bdc9457SAndroid Build Coastguard Worker 4587*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2)4588*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2) { 4589*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4590*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4591*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4592*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4593*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4594*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4595*4bdc9457SAndroid Build Coastguard Worker .m(6) 4596*4bdc9457SAndroid Build Coastguard Worker .n(16) 4597*4bdc9457SAndroid Build Coastguard Worker .k(2) 4598*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4599*4bdc9457SAndroid Build Coastguard Worker } 4600*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,strided_cn)4601*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, strided_cn) { 4602*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4603*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4604*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4605*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4606*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4607*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4608*4bdc9457SAndroid Build Coastguard Worker .m(6) 4609*4bdc9457SAndroid Build Coastguard Worker .n(16) 4610*4bdc9457SAndroid Build Coastguard Worker .k(2) 4611*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4612*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4613*4bdc9457SAndroid Build Coastguard Worker } 4614*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_strided_a)4615*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_strided_a) { 4616*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4617*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4618*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4619*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4620*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4621*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4622*4bdc9457SAndroid Build Coastguard Worker .m(6) 4623*4bdc9457SAndroid Build Coastguard Worker .n(16) 4624*4bdc9457SAndroid Build Coastguard Worker .k(2) 4625*4bdc9457SAndroid Build Coastguard Worker .a_stride(5) 4626*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4627*4bdc9457SAndroid Build Coastguard Worker } 4628*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile)4629*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile) { 4630*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4631*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4632*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4633*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4634*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4635*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4636*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4637*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4638*4bdc9457SAndroid Build Coastguard Worker .m(m) 4639*4bdc9457SAndroid Build Coastguard Worker .n(n) 4640*4bdc9457SAndroid Build Coastguard Worker .k(2) 4641*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4642*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4643*4bdc9457SAndroid Build Coastguard Worker } 4644*4bdc9457SAndroid Build Coastguard Worker } 4645*4bdc9457SAndroid Build Coastguard Worker } 4646*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_m)4647*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_m) { 4648*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4649*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4650*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4651*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4652*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4653*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4654*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4655*4bdc9457SAndroid Build Coastguard Worker .m(m) 4656*4bdc9457SAndroid Build Coastguard Worker .n(16) 4657*4bdc9457SAndroid Build Coastguard Worker .k(2) 4658*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4659*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4660*4bdc9457SAndroid Build Coastguard Worker } 4661*4bdc9457SAndroid Build Coastguard Worker } 4662*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_n)4663*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_n) { 4664*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4665*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4666*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4667*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4668*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4669*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4670*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4671*4bdc9457SAndroid Build Coastguard Worker .m(6) 4672*4bdc9457SAndroid Build Coastguard Worker .n(n) 4673*4bdc9457SAndroid Build Coastguard Worker .k(2) 4674*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4675*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4676*4bdc9457SAndroid Build Coastguard Worker } 4677*4bdc9457SAndroid Build Coastguard Worker } 4678*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2)4679*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2) { 4680*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4681*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 4682*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4683*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 4688*4bdc9457SAndroid Build Coastguard Worker .n(16) 4689*4bdc9457SAndroid Build Coastguard Worker .k(k) 4690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4691*4bdc9457SAndroid Build Coastguard Worker } 4692*4bdc9457SAndroid Build Coastguard Worker } 4693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_strided_a)4694*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_strided_a) { 4695*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4696*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 4697*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4698*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4699*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4700*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4701*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4702*4bdc9457SAndroid Build Coastguard Worker .m(6) 4703*4bdc9457SAndroid Build Coastguard Worker .n(16) 4704*4bdc9457SAndroid Build Coastguard Worker .k(k) 4705*4bdc9457SAndroid Build Coastguard Worker .a_stride(5) 4706*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4707*4bdc9457SAndroid Build Coastguard Worker } 4708*4bdc9457SAndroid Build Coastguard Worker } 4709*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_subtile)4710*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_subtile) { 4711*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4712*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 4713*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4714*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4715*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4716*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4717*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4718*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4719*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4720*4bdc9457SAndroid Build Coastguard Worker .m(m) 4721*4bdc9457SAndroid Build Coastguard Worker .n(n) 4722*4bdc9457SAndroid Build Coastguard Worker .k(k) 4723*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4724*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4725*4bdc9457SAndroid Build Coastguard Worker } 4726*4bdc9457SAndroid Build Coastguard Worker } 4727*4bdc9457SAndroid Build Coastguard Worker } 4728*4bdc9457SAndroid Build Coastguard Worker } 4729*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2)4730*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2) { 4731*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4732*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 4733*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4734*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 4739*4bdc9457SAndroid Build Coastguard Worker .n(16) 4740*4bdc9457SAndroid Build Coastguard Worker .k(k) 4741*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4742*4bdc9457SAndroid Build Coastguard Worker } 4743*4bdc9457SAndroid Build Coastguard Worker } 4744*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_strided_a)4745*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_strided_a) { 4746*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4747*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 4748*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4749*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4750*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4751*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4752*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4753*4bdc9457SAndroid Build Coastguard Worker .m(6) 4754*4bdc9457SAndroid Build Coastguard Worker .n(16) 4755*4bdc9457SAndroid Build Coastguard Worker .k(k) 4756*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 4757*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4758*4bdc9457SAndroid Build Coastguard Worker } 4759*4bdc9457SAndroid Build Coastguard Worker } 4760*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_subtile)4761*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_subtile) { 4762*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4763*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 4764*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4765*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4766*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4767*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4768*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4769*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4770*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4771*4bdc9457SAndroid Build Coastguard Worker .m(m) 4772*4bdc9457SAndroid Build Coastguard Worker .n(n) 4773*4bdc9457SAndroid Build Coastguard Worker .k(k) 4774*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4775*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4776*4bdc9457SAndroid Build Coastguard Worker } 4777*4bdc9457SAndroid Build Coastguard Worker } 4778*4bdc9457SAndroid Build Coastguard Worker } 4779*4bdc9457SAndroid Build Coastguard Worker } 4780*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_div_2)4781*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_div_2) { 4782*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4783*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 4784*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4785*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 4790*4bdc9457SAndroid Build Coastguard Worker .n(16) 4791*4bdc9457SAndroid Build Coastguard Worker .k(k) 4792*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4793*4bdc9457SAndroid Build Coastguard Worker } 4794*4bdc9457SAndroid Build Coastguard Worker } 4795*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_strided_a)4796*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_strided_a) { 4797*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4798*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 4799*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4800*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4801*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4802*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4803*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4804*4bdc9457SAndroid Build Coastguard Worker .m(6) 4805*4bdc9457SAndroid Build Coastguard Worker .n(16) 4806*4bdc9457SAndroid Build Coastguard Worker .k(k) 4807*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 4808*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4809*4bdc9457SAndroid Build Coastguard Worker } 4810*4bdc9457SAndroid Build Coastguard Worker } 4811*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_subtile)4812*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_subtile) { 4813*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4814*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 4815*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4816*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4817*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4818*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4819*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4820*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4821*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4822*4bdc9457SAndroid Build Coastguard Worker .m(m) 4823*4bdc9457SAndroid Build Coastguard Worker .n(n) 4824*4bdc9457SAndroid Build Coastguard Worker .k(k) 4825*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4826*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4827*4bdc9457SAndroid Build Coastguard Worker } 4828*4bdc9457SAndroid Build Coastguard Worker } 4829*4bdc9457SAndroid Build Coastguard Worker } 4830*4bdc9457SAndroid Build Coastguard Worker } 4831*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16)4832*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16) { 4833*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4834*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4835*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4836*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4837*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4838*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4839*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4840*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4841*4bdc9457SAndroid Build Coastguard Worker .m(6) 4842*4bdc9457SAndroid Build Coastguard Worker .n(n) 4843*4bdc9457SAndroid Build Coastguard Worker .k(k) 4844*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4845*4bdc9457SAndroid Build Coastguard Worker } 4846*4bdc9457SAndroid Build Coastguard Worker } 4847*4bdc9457SAndroid Build Coastguard Worker } 4848*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_cn)4849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_cn) { 4850*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4851*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4852*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4853*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4854*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4855*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4856*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4857*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4858*4bdc9457SAndroid Build Coastguard Worker .m(6) 4859*4bdc9457SAndroid Build Coastguard Worker .n(n) 4860*4bdc9457SAndroid Build Coastguard Worker .k(k) 4861*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4862*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4863*4bdc9457SAndroid Build Coastguard Worker } 4864*4bdc9457SAndroid Build Coastguard Worker } 4865*4bdc9457SAndroid Build Coastguard Worker } 4866*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_a)4867*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_a) { 4868*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4869*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4870*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4871*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4872*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4873*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4874*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4875*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4876*4bdc9457SAndroid Build Coastguard Worker .m(6) 4877*4bdc9457SAndroid Build Coastguard Worker .n(n) 4878*4bdc9457SAndroid Build Coastguard Worker .k(k) 4879*4bdc9457SAndroid Build Coastguard Worker .a_stride(13) 4880*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4881*4bdc9457SAndroid Build Coastguard Worker } 4882*4bdc9457SAndroid Build Coastguard Worker } 4883*4bdc9457SAndroid Build Coastguard Worker } 4884*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_subtile)4885*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_subtile) { 4886*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4887*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4888*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4889*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4890*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4891*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4892*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4893*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4894*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4895*4bdc9457SAndroid Build Coastguard Worker .m(m) 4896*4bdc9457SAndroid Build Coastguard Worker .n(n) 4897*4bdc9457SAndroid Build Coastguard Worker .k(k) 4898*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4899*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4900*4bdc9457SAndroid Build Coastguard Worker } 4901*4bdc9457SAndroid Build Coastguard Worker } 4902*4bdc9457SAndroid Build Coastguard Worker } 4903*4bdc9457SAndroid Build Coastguard Worker } 4904*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_div_16)4905*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_div_16) { 4906*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4907*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4908*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4909*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4910*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4911*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4912*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4913*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4914*4bdc9457SAndroid Build Coastguard Worker .m(6) 4915*4bdc9457SAndroid Build Coastguard Worker .n(n) 4916*4bdc9457SAndroid Build Coastguard Worker .k(k) 4917*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4918*4bdc9457SAndroid Build Coastguard Worker } 4919*4bdc9457SAndroid Build Coastguard Worker } 4920*4bdc9457SAndroid Build Coastguard Worker } 4921*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_cn)4922*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_cn) { 4923*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4924*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4925*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4926*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4927*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4928*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4929*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4930*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4931*4bdc9457SAndroid Build Coastguard Worker .m(6) 4932*4bdc9457SAndroid Build Coastguard Worker .n(n) 4933*4bdc9457SAndroid Build Coastguard Worker .k(k) 4934*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4935*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4936*4bdc9457SAndroid Build Coastguard Worker } 4937*4bdc9457SAndroid Build Coastguard Worker } 4938*4bdc9457SAndroid Build Coastguard Worker } 4939*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_a)4940*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_a) { 4941*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4942*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4943*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4944*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4945*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4946*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4947*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4948*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4949*4bdc9457SAndroid Build Coastguard Worker .m(6) 4950*4bdc9457SAndroid Build Coastguard Worker .n(n) 4951*4bdc9457SAndroid Build Coastguard Worker .k(k) 4952*4bdc9457SAndroid Build Coastguard Worker .a_stride(13) 4953*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4954*4bdc9457SAndroid Build Coastguard Worker } 4955*4bdc9457SAndroid Build Coastguard Worker } 4956*4bdc9457SAndroid Build Coastguard Worker } 4957*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_subtile)4958*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_subtile) { 4959*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4960*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4961*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4962*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4963*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4964*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4965*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4966*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4967*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4968*4bdc9457SAndroid Build Coastguard Worker .m(m) 4969*4bdc9457SAndroid Build Coastguard Worker .n(n) 4970*4bdc9457SAndroid Build Coastguard Worker .k(k) 4971*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4972*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4973*4bdc9457SAndroid Build Coastguard Worker } 4974*4bdc9457SAndroid Build Coastguard Worker } 4975*4bdc9457SAndroid Build Coastguard Worker } 4976*4bdc9457SAndroid Build Coastguard Worker } 4977*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,strided_cm_subtile)4978*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, strided_cm_subtile) { 4979*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4980*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 4981*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4982*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4983*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4984*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4985*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4986*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4987*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4988*4bdc9457SAndroid Build Coastguard Worker .m(m) 4989*4bdc9457SAndroid Build Coastguard Worker .n(n) 4990*4bdc9457SAndroid Build Coastguard Worker .k(k) 4991*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4992*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4993*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 4994*4bdc9457SAndroid Build Coastguard Worker } 4995*4bdc9457SAndroid Build Coastguard Worker } 4996*4bdc9457SAndroid Build Coastguard Worker } 4997*4bdc9457SAndroid Build Coastguard Worker } 4998*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,qmin)4999*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, qmin) { 5000*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5001*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5002*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5003*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5004*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5005*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5006*4bdc9457SAndroid Build Coastguard Worker .m(6) 5007*4bdc9457SAndroid Build Coastguard Worker .n(16) 5008*4bdc9457SAndroid Build Coastguard Worker .k(2) 5009*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5010*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 5011*4bdc9457SAndroid Build Coastguard Worker } 5012*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,qmax)5013*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, qmax) { 5014*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5015*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5016*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5017*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5018*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5019*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5020*4bdc9457SAndroid Build Coastguard Worker .m(6) 5021*4bdc9457SAndroid Build Coastguard Worker .n(16) 5022*4bdc9457SAndroid Build Coastguard Worker .k(2) 5023*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5024*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 5025*4bdc9457SAndroid Build Coastguard Worker } 5026*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,strided_cm)5027*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, strided_cm) { 5028*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5029*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5030*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 5035*4bdc9457SAndroid Build Coastguard Worker .n(16) 5036*4bdc9457SAndroid Build Coastguard Worker .k(2) 5037*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 5038*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 5039*4bdc9457SAndroid Build Coastguard Worker } 5040*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 5041*4bdc9457SAndroid Build Coastguard Worker 5042*4bdc9457SAndroid Build Coastguard Worker 5043*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4)5044*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 5045*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5046*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5047*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5048*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5049*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5050*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5051*4bdc9457SAndroid Build Coastguard Worker .m(6) 5052*4bdc9457SAndroid Build Coastguard Worker .n(16) 5053*4bdc9457SAndroid Build Coastguard Worker .k(4) 5054*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5055*4bdc9457SAndroid Build Coastguard Worker } 5056*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,strided_cn)5057*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 5058*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5059*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5060*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5061*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5062*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5063*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5064*4bdc9457SAndroid Build Coastguard Worker .m(6) 5065*4bdc9457SAndroid Build Coastguard Worker .n(16) 5066*4bdc9457SAndroid Build Coastguard Worker .k(4) 5067*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 5068*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5069*4bdc9457SAndroid Build Coastguard Worker } 5070*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_strided_a)5071*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_strided_a) { 5072*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5073*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5074*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5075*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5076*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5077*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5078*4bdc9457SAndroid Build Coastguard Worker .m(6) 5079*4bdc9457SAndroid Build Coastguard Worker .n(16) 5080*4bdc9457SAndroid Build Coastguard Worker .k(4) 5081*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 5082*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5083*4bdc9457SAndroid Build Coastguard Worker } 5084*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)5085*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 5086*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5087*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5088*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5089*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5090*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5091*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5092*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5093*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5094*4bdc9457SAndroid Build Coastguard Worker .m(m) 5095*4bdc9457SAndroid Build Coastguard Worker .n(n) 5096*4bdc9457SAndroid Build Coastguard Worker .k(4) 5097*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5098*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5099*4bdc9457SAndroid Build Coastguard Worker } 5100*4bdc9457SAndroid Build Coastguard Worker } 5101*4bdc9457SAndroid Build Coastguard Worker } 5102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)5103*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 5104*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5105*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5106*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5107*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5108*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5109*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5110*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5111*4bdc9457SAndroid Build Coastguard Worker .m(m) 5112*4bdc9457SAndroid Build Coastguard Worker .n(16) 5113*4bdc9457SAndroid Build Coastguard Worker .k(4) 5114*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5115*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5116*4bdc9457SAndroid Build Coastguard Worker } 5117*4bdc9457SAndroid Build Coastguard Worker } 5118*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)5119*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 5120*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5121*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5122*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5123*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5124*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5125*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5126*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5127*4bdc9457SAndroid Build Coastguard Worker .m(6) 5128*4bdc9457SAndroid Build Coastguard Worker .n(n) 5129*4bdc9457SAndroid Build Coastguard Worker .k(4) 5130*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5131*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5132*4bdc9457SAndroid Build Coastguard Worker } 5133*4bdc9457SAndroid Build Coastguard Worker } 5134*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4)5135*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 5136*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5137*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5138*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5139*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5140*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5141*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5142*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5143*4bdc9457SAndroid Build Coastguard Worker .m(6) 5144*4bdc9457SAndroid Build Coastguard Worker .n(16) 5145*4bdc9457SAndroid Build Coastguard Worker .k(k) 5146*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5147*4bdc9457SAndroid Build Coastguard Worker } 5148*4bdc9457SAndroid Build Coastguard Worker } 5149*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_strided_a)5150*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_strided_a) { 5151*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5152*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5153*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5154*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5155*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5156*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5157*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5158*4bdc9457SAndroid Build Coastguard Worker .m(6) 5159*4bdc9457SAndroid Build Coastguard Worker .n(16) 5160*4bdc9457SAndroid Build Coastguard Worker .k(k) 5161*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 5162*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5163*4bdc9457SAndroid Build Coastguard Worker } 5164*4bdc9457SAndroid Build Coastguard Worker } 5165*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)5166*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 5167*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5168*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5169*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5170*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5171*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5172*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5173*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5174*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5175*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5176*4bdc9457SAndroid Build Coastguard Worker .m(m) 5177*4bdc9457SAndroid Build Coastguard Worker .n(n) 5178*4bdc9457SAndroid Build Coastguard Worker .k(k) 5179*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5180*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5181*4bdc9457SAndroid Build Coastguard Worker } 5182*4bdc9457SAndroid Build Coastguard Worker } 5183*4bdc9457SAndroid Build Coastguard Worker } 5184*4bdc9457SAndroid Build Coastguard Worker } 5185*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4)5186*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 5187*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5188*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5189*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5190*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5191*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5192*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5193*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5194*4bdc9457SAndroid Build Coastguard Worker .m(6) 5195*4bdc9457SAndroid Build Coastguard Worker .n(16) 5196*4bdc9457SAndroid Build Coastguard Worker .k(k) 5197*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5198*4bdc9457SAndroid Build Coastguard Worker } 5199*4bdc9457SAndroid Build Coastguard Worker } 5200*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_strided_a)5201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_strided_a) { 5202*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5203*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5204*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5205*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5206*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5207*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5208*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5209*4bdc9457SAndroid Build Coastguard Worker .m(6) 5210*4bdc9457SAndroid Build Coastguard Worker .n(16) 5211*4bdc9457SAndroid Build Coastguard Worker .k(k) 5212*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 5213*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5214*4bdc9457SAndroid Build Coastguard Worker } 5215*4bdc9457SAndroid Build Coastguard Worker } 5216*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)5217*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 5218*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5219*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5220*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5221*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5222*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5223*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5224*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5225*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5226*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5227*4bdc9457SAndroid Build Coastguard Worker .m(m) 5228*4bdc9457SAndroid Build Coastguard Worker .n(n) 5229*4bdc9457SAndroid Build Coastguard Worker .k(k) 5230*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5231*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5232*4bdc9457SAndroid Build Coastguard Worker } 5233*4bdc9457SAndroid Build Coastguard Worker } 5234*4bdc9457SAndroid Build Coastguard Worker } 5235*4bdc9457SAndroid Build Coastguard Worker } 5236*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_div_4)5237*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 5238*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5239*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5240*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5241*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5242*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5243*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5244*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5245*4bdc9457SAndroid Build Coastguard Worker .m(6) 5246*4bdc9457SAndroid Build Coastguard Worker .n(16) 5247*4bdc9457SAndroid Build Coastguard Worker .k(k) 5248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5249*4bdc9457SAndroid Build Coastguard Worker } 5250*4bdc9457SAndroid Build Coastguard Worker } 5251*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_strided_a)5252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_strided_a) { 5253*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5254*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5255*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5256*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5257*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5258*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5259*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5260*4bdc9457SAndroid Build Coastguard Worker .m(6) 5261*4bdc9457SAndroid Build Coastguard Worker .n(16) 5262*4bdc9457SAndroid Build Coastguard Worker .k(k) 5263*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 5264*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5265*4bdc9457SAndroid Build Coastguard Worker } 5266*4bdc9457SAndroid Build Coastguard Worker } 5267*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)5268*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 5269*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5270*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5271*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5272*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5273*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5274*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5275*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5276*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5277*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5278*4bdc9457SAndroid Build Coastguard Worker .m(m) 5279*4bdc9457SAndroid Build Coastguard Worker .n(n) 5280*4bdc9457SAndroid Build Coastguard Worker .k(k) 5281*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5282*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5283*4bdc9457SAndroid Build Coastguard Worker } 5284*4bdc9457SAndroid Build Coastguard Worker } 5285*4bdc9457SAndroid Build Coastguard Worker } 5286*4bdc9457SAndroid Build Coastguard Worker } 5287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16)5288*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16) { 5289*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5290*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5291*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5292*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5293*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5294*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5295*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5296*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5297*4bdc9457SAndroid Build Coastguard Worker .m(6) 5298*4bdc9457SAndroid Build Coastguard Worker .n(n) 5299*4bdc9457SAndroid Build Coastguard Worker .k(k) 5300*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5301*4bdc9457SAndroid Build Coastguard Worker } 5302*4bdc9457SAndroid Build Coastguard Worker } 5303*4bdc9457SAndroid Build Coastguard Worker } 5304*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_cn)5305*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 5306*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5307*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5308*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5309*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5310*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5311*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5312*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5313*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5314*4bdc9457SAndroid Build Coastguard Worker .m(6) 5315*4bdc9457SAndroid Build Coastguard Worker .n(n) 5316*4bdc9457SAndroid Build Coastguard Worker .k(k) 5317*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 5318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5319*4bdc9457SAndroid Build Coastguard Worker } 5320*4bdc9457SAndroid Build Coastguard Worker } 5321*4bdc9457SAndroid Build Coastguard Worker } 5322*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_a)5323*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_a) { 5324*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5325*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5326*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5327*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5328*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5329*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5330*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5331*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5332*4bdc9457SAndroid Build Coastguard Worker .m(6) 5333*4bdc9457SAndroid Build Coastguard Worker .n(n) 5334*4bdc9457SAndroid Build Coastguard Worker .k(k) 5335*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 5336*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5337*4bdc9457SAndroid Build Coastguard Worker } 5338*4bdc9457SAndroid Build Coastguard Worker } 5339*4bdc9457SAndroid Build Coastguard Worker } 5340*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_subtile)5341*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_subtile) { 5342*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5343*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5344*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5345*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5346*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5347*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5348*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5349*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5350*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5351*4bdc9457SAndroid Build Coastguard Worker .m(m) 5352*4bdc9457SAndroid Build Coastguard Worker .n(n) 5353*4bdc9457SAndroid Build Coastguard Worker .k(k) 5354*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5355*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5356*4bdc9457SAndroid Build Coastguard Worker } 5357*4bdc9457SAndroid Build Coastguard Worker } 5358*4bdc9457SAndroid Build Coastguard Worker } 5359*4bdc9457SAndroid Build Coastguard Worker } 5360*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_div_16)5361*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_div_16) { 5362*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5363*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5364*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5365*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5366*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5367*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5368*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5369*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5370*4bdc9457SAndroid Build Coastguard Worker .m(6) 5371*4bdc9457SAndroid Build Coastguard Worker .n(n) 5372*4bdc9457SAndroid Build Coastguard Worker .k(k) 5373*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5374*4bdc9457SAndroid Build Coastguard Worker } 5375*4bdc9457SAndroid Build Coastguard Worker } 5376*4bdc9457SAndroid Build Coastguard Worker } 5377*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_cn)5378*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_cn) { 5379*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5380*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5381*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5382*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5383*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5384*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5385*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5386*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5387*4bdc9457SAndroid Build Coastguard Worker .m(6) 5388*4bdc9457SAndroid Build Coastguard Worker .n(n) 5389*4bdc9457SAndroid Build Coastguard Worker .k(k) 5390*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 5391*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5392*4bdc9457SAndroid Build Coastguard Worker } 5393*4bdc9457SAndroid Build Coastguard Worker } 5394*4bdc9457SAndroid Build Coastguard Worker } 5395*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_a)5396*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_a) { 5397*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5398*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5399*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5400*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5401*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5402*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5403*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5404*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5405*4bdc9457SAndroid Build Coastguard Worker .m(6) 5406*4bdc9457SAndroid Build Coastguard Worker .n(n) 5407*4bdc9457SAndroid Build Coastguard Worker .k(k) 5408*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 5409*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5410*4bdc9457SAndroid Build Coastguard Worker } 5411*4bdc9457SAndroid Build Coastguard Worker } 5412*4bdc9457SAndroid Build Coastguard Worker } 5413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_subtile)5414*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_subtile) { 5415*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5416*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5417*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5418*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5419*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5420*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5421*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5422*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5423*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5424*4bdc9457SAndroid Build Coastguard Worker .m(m) 5425*4bdc9457SAndroid Build Coastguard Worker .n(n) 5426*4bdc9457SAndroid Build Coastguard Worker .k(k) 5427*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5428*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5429*4bdc9457SAndroid Build Coastguard Worker } 5430*4bdc9457SAndroid Build Coastguard Worker } 5431*4bdc9457SAndroid Build Coastguard Worker } 5432*4bdc9457SAndroid Build Coastguard Worker } 5433*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)5434*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 5435*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5436*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5437*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5438*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 5439*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5440*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5441*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5442*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5443*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5444*4bdc9457SAndroid Build Coastguard Worker .m(m) 5445*4bdc9457SAndroid Build Coastguard Worker .n(n) 5446*4bdc9457SAndroid Build Coastguard Worker .k(k) 5447*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 5448*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5449*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5450*4bdc9457SAndroid Build Coastguard Worker } 5451*4bdc9457SAndroid Build Coastguard Worker } 5452*4bdc9457SAndroid Build Coastguard Worker } 5453*4bdc9457SAndroid Build Coastguard Worker } 5454*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,qmin)5455*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, qmin) { 5456*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5457*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5458*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5459*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5460*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5461*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5462*4bdc9457SAndroid Build Coastguard Worker .m(6) 5463*4bdc9457SAndroid Build Coastguard Worker .n(16) 5464*4bdc9457SAndroid Build Coastguard Worker .k(4) 5465*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5466*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5467*4bdc9457SAndroid Build Coastguard Worker } 5468*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,qmax)5469*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, qmax) { 5470*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5471*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5472*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5473*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5474*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5475*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5476*4bdc9457SAndroid Build Coastguard Worker .m(6) 5477*4bdc9457SAndroid Build Coastguard Worker .n(16) 5478*4bdc9457SAndroid Build Coastguard Worker .k(4) 5479*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5480*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5481*4bdc9457SAndroid Build Coastguard Worker } 5482*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,strided_cm)5483*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 5484*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5485*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5486*4bdc9457SAndroid Build Coastguard Worker .mr(6) 5487*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5488*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5489*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5490*4bdc9457SAndroid Build Coastguard Worker .m(6) 5491*4bdc9457SAndroid Build Coastguard Worker .n(16) 5492*4bdc9457SAndroid Build Coastguard Worker .k(4) 5493*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 5494*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5495*4bdc9457SAndroid Build Coastguard Worker } 5496*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 5497*4bdc9457SAndroid Build Coastguard Worker 5498*4bdc9457SAndroid Build Coastguard Worker 5499*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4)5500*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 5501*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5502*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5503*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5504*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5505*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5506*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5507*4bdc9457SAndroid Build Coastguard Worker .m(8) 5508*4bdc9457SAndroid Build Coastguard Worker .n(8) 5509*4bdc9457SAndroid Build Coastguard Worker .k(4) 5510*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5511*4bdc9457SAndroid Build Coastguard Worker } 5512*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,strided_cn)5513*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 5514*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5515*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5516*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5517*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5518*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5519*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5520*4bdc9457SAndroid Build Coastguard Worker .m(8) 5521*4bdc9457SAndroid Build Coastguard Worker .n(8) 5522*4bdc9457SAndroid Build Coastguard Worker .k(4) 5523*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5524*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5525*4bdc9457SAndroid Build Coastguard Worker } 5526*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_strided_a)5527*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_strided_a) { 5528*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5529*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5530*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5531*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5532*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5533*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5534*4bdc9457SAndroid Build Coastguard Worker .m(8) 5535*4bdc9457SAndroid Build Coastguard Worker .n(8) 5536*4bdc9457SAndroid Build Coastguard Worker .k(4) 5537*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 5538*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5539*4bdc9457SAndroid Build Coastguard Worker } 5540*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)5541*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 5542*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5543*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5544*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 5545*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5546*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5547*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5548*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5549*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5550*4bdc9457SAndroid Build Coastguard Worker .m(m) 5551*4bdc9457SAndroid Build Coastguard Worker .n(n) 5552*4bdc9457SAndroid Build Coastguard Worker .k(4) 5553*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5554*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5555*4bdc9457SAndroid Build Coastguard Worker } 5556*4bdc9457SAndroid Build Coastguard Worker } 5557*4bdc9457SAndroid Build Coastguard Worker } 5558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)5559*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 5560*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5561*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 5562*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5563*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5564*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5565*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5566*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5567*4bdc9457SAndroid Build Coastguard Worker .m(m) 5568*4bdc9457SAndroid Build Coastguard Worker .n(8) 5569*4bdc9457SAndroid Build Coastguard Worker .k(4) 5570*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5571*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5572*4bdc9457SAndroid Build Coastguard Worker } 5573*4bdc9457SAndroid Build Coastguard Worker } 5574*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)5575*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 5576*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5577*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5578*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5579*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5580*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5581*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5582*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5583*4bdc9457SAndroid Build Coastguard Worker .m(8) 5584*4bdc9457SAndroid Build Coastguard Worker .n(n) 5585*4bdc9457SAndroid Build Coastguard Worker .k(4) 5586*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5587*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5588*4bdc9457SAndroid Build Coastguard Worker } 5589*4bdc9457SAndroid Build Coastguard Worker } 5590*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4)5591*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 5592*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5593*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5594*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5595*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5596*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5597*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5598*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5599*4bdc9457SAndroid Build Coastguard Worker .m(8) 5600*4bdc9457SAndroid Build Coastguard Worker .n(8) 5601*4bdc9457SAndroid Build Coastguard Worker .k(k) 5602*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5603*4bdc9457SAndroid Build Coastguard Worker } 5604*4bdc9457SAndroid Build Coastguard Worker } 5605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4_strided_a)5606*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4_strided_a) { 5607*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5608*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5609*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5610*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5611*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5612*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5613*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5614*4bdc9457SAndroid Build Coastguard Worker .m(8) 5615*4bdc9457SAndroid Build Coastguard Worker .n(8) 5616*4bdc9457SAndroid Build Coastguard Worker .k(k) 5617*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 5618*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5619*4bdc9457SAndroid Build Coastguard Worker } 5620*4bdc9457SAndroid Build Coastguard Worker } 5621*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)5622*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 5623*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5624*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5625*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5626*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 5627*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5628*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5629*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5630*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5631*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5632*4bdc9457SAndroid Build Coastguard Worker .m(m) 5633*4bdc9457SAndroid Build Coastguard Worker .n(n) 5634*4bdc9457SAndroid Build Coastguard Worker .k(k) 5635*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5636*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5637*4bdc9457SAndroid Build Coastguard Worker } 5638*4bdc9457SAndroid Build Coastguard Worker } 5639*4bdc9457SAndroid Build Coastguard Worker } 5640*4bdc9457SAndroid Build Coastguard Worker } 5641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4)5642*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 5643*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5644*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5645*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5646*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5647*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5648*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5649*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5650*4bdc9457SAndroid Build Coastguard Worker .m(8) 5651*4bdc9457SAndroid Build Coastguard Worker .n(8) 5652*4bdc9457SAndroid Build Coastguard Worker .k(k) 5653*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5654*4bdc9457SAndroid Build Coastguard Worker } 5655*4bdc9457SAndroid Build Coastguard Worker } 5656*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4_strided_a)5657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4_strided_a) { 5658*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5659*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5660*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5661*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5662*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5663*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5664*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5665*4bdc9457SAndroid Build Coastguard Worker .m(8) 5666*4bdc9457SAndroid Build Coastguard Worker .n(8) 5667*4bdc9457SAndroid Build Coastguard Worker .k(k) 5668*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 5669*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5670*4bdc9457SAndroid Build Coastguard Worker } 5671*4bdc9457SAndroid Build Coastguard Worker } 5672*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)5673*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 5674*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5675*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5676*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5677*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 5678*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5679*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5680*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5681*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5682*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5683*4bdc9457SAndroid Build Coastguard Worker .m(m) 5684*4bdc9457SAndroid Build Coastguard Worker .n(n) 5685*4bdc9457SAndroid Build Coastguard Worker .k(k) 5686*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5687*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5688*4bdc9457SAndroid Build Coastguard Worker } 5689*4bdc9457SAndroid Build Coastguard Worker } 5690*4bdc9457SAndroid Build Coastguard Worker } 5691*4bdc9457SAndroid Build Coastguard Worker } 5692*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_div_4)5693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 5694*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5695*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5696*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5697*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5698*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5699*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5700*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5701*4bdc9457SAndroid Build Coastguard Worker .m(8) 5702*4bdc9457SAndroid Build Coastguard Worker .n(8) 5703*4bdc9457SAndroid Build Coastguard Worker .k(k) 5704*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5705*4bdc9457SAndroid Build Coastguard Worker } 5706*4bdc9457SAndroid Build Coastguard Worker } 5707*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_div_4_strided_a)5708*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_div_4_strided_a) { 5709*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5710*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5711*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5712*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5713*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5714*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5715*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5716*4bdc9457SAndroid Build Coastguard Worker .m(8) 5717*4bdc9457SAndroid Build Coastguard Worker .n(8) 5718*4bdc9457SAndroid Build Coastguard Worker .k(k) 5719*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 5720*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5721*4bdc9457SAndroid Build Coastguard Worker } 5722*4bdc9457SAndroid Build Coastguard Worker } 5723*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)5724*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 5725*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5726*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5727*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5728*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 5729*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5730*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5731*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5732*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5733*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5734*4bdc9457SAndroid Build Coastguard Worker .m(m) 5735*4bdc9457SAndroid Build Coastguard Worker .n(n) 5736*4bdc9457SAndroid Build Coastguard Worker .k(k) 5737*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5738*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5739*4bdc9457SAndroid Build Coastguard Worker } 5740*4bdc9457SAndroid Build Coastguard Worker } 5741*4bdc9457SAndroid Build Coastguard Worker } 5742*4bdc9457SAndroid Build Coastguard Worker } 5743*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8)5744*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8) { 5745*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5746*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5747*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5748*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5749*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5750*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5751*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5752*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5753*4bdc9457SAndroid Build Coastguard Worker .m(8) 5754*4bdc9457SAndroid Build Coastguard Worker .n(n) 5755*4bdc9457SAndroid Build Coastguard Worker .k(k) 5756*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5757*4bdc9457SAndroid Build Coastguard Worker } 5758*4bdc9457SAndroid Build Coastguard Worker } 5759*4bdc9457SAndroid Build Coastguard Worker } 5760*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_strided_cn)5761*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 5762*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5763*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5764*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5765*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5766*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5767*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5768*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5769*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5770*4bdc9457SAndroid Build Coastguard Worker .m(8) 5771*4bdc9457SAndroid Build Coastguard Worker .n(n) 5772*4bdc9457SAndroid Build Coastguard Worker .k(k) 5773*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5774*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5775*4bdc9457SAndroid Build Coastguard Worker } 5776*4bdc9457SAndroid Build Coastguard Worker } 5777*4bdc9457SAndroid Build Coastguard Worker } 5778*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_strided_a)5779*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_strided_a) { 5780*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5781*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5782*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5783*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5784*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5785*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5786*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5787*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5788*4bdc9457SAndroid Build Coastguard Worker .m(8) 5789*4bdc9457SAndroid Build Coastguard Worker .n(n) 5790*4bdc9457SAndroid Build Coastguard Worker .k(k) 5791*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 5792*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5793*4bdc9457SAndroid Build Coastguard Worker } 5794*4bdc9457SAndroid Build Coastguard Worker } 5795*4bdc9457SAndroid Build Coastguard Worker } 5796*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,n_gt_8_subtile)5797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, n_gt_8_subtile) { 5798*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5799*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5800*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5801*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 5802*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5803*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5804*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5805*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5806*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5807*4bdc9457SAndroid Build Coastguard Worker .m(m) 5808*4bdc9457SAndroid Build Coastguard Worker .n(n) 5809*4bdc9457SAndroid Build Coastguard Worker .k(k) 5810*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5811*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5812*4bdc9457SAndroid Build Coastguard Worker } 5813*4bdc9457SAndroid Build Coastguard Worker } 5814*4bdc9457SAndroid Build Coastguard Worker } 5815*4bdc9457SAndroid Build Coastguard Worker } 5816*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,n_div_8)5817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, n_div_8) { 5818*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5819*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5820*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5821*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5822*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5823*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5824*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5825*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5826*4bdc9457SAndroid Build Coastguard Worker .m(8) 5827*4bdc9457SAndroid Build Coastguard Worker .n(n) 5828*4bdc9457SAndroid Build Coastguard Worker .k(k) 5829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5830*4bdc9457SAndroid Build Coastguard Worker } 5831*4bdc9457SAndroid Build Coastguard Worker } 5832*4bdc9457SAndroid Build Coastguard Worker } 5833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_strided_cn)5834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_strided_cn) { 5835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5836*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5837*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5838*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5839*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5840*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5841*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5842*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5843*4bdc9457SAndroid Build Coastguard Worker .m(8) 5844*4bdc9457SAndroid Build Coastguard Worker .n(n) 5845*4bdc9457SAndroid Build Coastguard Worker .k(k) 5846*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5847*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5848*4bdc9457SAndroid Build Coastguard Worker } 5849*4bdc9457SAndroid Build Coastguard Worker } 5850*4bdc9457SAndroid Build Coastguard Worker } 5851*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_strided_a)5852*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_strided_a) { 5853*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5854*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5855*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5856*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5857*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5858*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5859*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5860*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5861*4bdc9457SAndroid Build Coastguard Worker .m(8) 5862*4bdc9457SAndroid Build Coastguard Worker .n(n) 5863*4bdc9457SAndroid Build Coastguard Worker .k(k) 5864*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 5865*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5866*4bdc9457SAndroid Build Coastguard Worker } 5867*4bdc9457SAndroid Build Coastguard Worker } 5868*4bdc9457SAndroid Build Coastguard Worker } 5869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,n_div_8_subtile)5870*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, n_div_8_subtile) { 5871*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5872*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5873*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5874*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 5875*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5876*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5877*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5878*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5879*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5880*4bdc9457SAndroid Build Coastguard Worker .m(m) 5881*4bdc9457SAndroid Build Coastguard Worker .n(n) 5882*4bdc9457SAndroid Build Coastguard Worker .k(k) 5883*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5884*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5885*4bdc9457SAndroid Build Coastguard Worker } 5886*4bdc9457SAndroid Build Coastguard Worker } 5887*4bdc9457SAndroid Build Coastguard Worker } 5888*4bdc9457SAndroid Build Coastguard Worker } 5889*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)5890*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 5891*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5892*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5893*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5894*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 5895*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5896*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5897*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5898*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5899*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5900*4bdc9457SAndroid Build Coastguard Worker .m(m) 5901*4bdc9457SAndroid Build Coastguard Worker .n(n) 5902*4bdc9457SAndroid Build Coastguard Worker .k(k) 5903*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 5904*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5905*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5906*4bdc9457SAndroid Build Coastguard Worker } 5907*4bdc9457SAndroid Build Coastguard Worker } 5908*4bdc9457SAndroid Build Coastguard Worker } 5909*4bdc9457SAndroid Build Coastguard Worker } 5910*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,qmin)5911*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, qmin) { 5912*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5913*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5914*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5915*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5916*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5917*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5918*4bdc9457SAndroid Build Coastguard Worker .m(8) 5919*4bdc9457SAndroid Build Coastguard Worker .n(8) 5920*4bdc9457SAndroid Build Coastguard Worker .k(4) 5921*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5923*4bdc9457SAndroid Build Coastguard Worker } 5924*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,qmax)5925*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, qmax) { 5926*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5927*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5928*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5929*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5930*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5931*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5932*4bdc9457SAndroid Build Coastguard Worker .m(8) 5933*4bdc9457SAndroid Build Coastguard Worker .n(8) 5934*4bdc9457SAndroid Build Coastguard Worker .k(4) 5935*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5936*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5937*4bdc9457SAndroid Build Coastguard Worker } 5938*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64,strided_cm)5939*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 5940*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5941*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5942*4bdc9457SAndroid Build Coastguard Worker .mr(8) 5943*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5944*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5945*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5946*4bdc9457SAndroid Build Coastguard Worker .m(8) 5947*4bdc9457SAndroid Build Coastguard Worker .n(8) 5948*4bdc9457SAndroid Build Coastguard Worker .k(4) 5949*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 5950*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5951*4bdc9457SAndroid Build Coastguard Worker } 5952*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 5953*4bdc9457SAndroid Build Coastguard Worker 5954*4bdc9457SAndroid Build Coastguard Worker 5955*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4)5956*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4) { 5957*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5958*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5959*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5960*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5961*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5962*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5963*4bdc9457SAndroid Build Coastguard Worker .m(1) 5964*4bdc9457SAndroid Build Coastguard Worker .n(8) 5965*4bdc9457SAndroid Build Coastguard Worker .k(4) 5966*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5967*4bdc9457SAndroid Build Coastguard Worker } 5968*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,strided_cn)5969*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, strided_cn) { 5970*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5971*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5972*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5973*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5974*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5975*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5976*4bdc9457SAndroid Build Coastguard Worker .m(1) 5977*4bdc9457SAndroid Build Coastguard Worker .n(8) 5978*4bdc9457SAndroid Build Coastguard Worker .k(4) 5979*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5980*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5981*4bdc9457SAndroid Build Coastguard Worker } 5982*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4_strided_a)5983*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4_strided_a) { 5984*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5985*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5986*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5987*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5988*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5989*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5990*4bdc9457SAndroid Build Coastguard Worker .m(1) 5991*4bdc9457SAndroid Build Coastguard Worker .n(8) 5992*4bdc9457SAndroid Build Coastguard Worker .k(4) 5993*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 5994*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5995*4bdc9457SAndroid Build Coastguard Worker } 5996*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4_subtile)5997*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4_subtile) { 5998*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5999*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6000*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6001*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6002*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6003*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6004*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6005*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6006*4bdc9457SAndroid Build Coastguard Worker .m(m) 6007*4bdc9457SAndroid Build Coastguard Worker .n(n) 6008*4bdc9457SAndroid Build Coastguard Worker .k(4) 6009*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6010*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6011*4bdc9457SAndroid Build Coastguard Worker } 6012*4bdc9457SAndroid Build Coastguard Worker } 6013*4bdc9457SAndroid Build Coastguard Worker } 6014*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4_subtile_m)6015*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 6016*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6017*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6018*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6019*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6020*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6021*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6022*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6023*4bdc9457SAndroid Build Coastguard Worker .m(m) 6024*4bdc9457SAndroid Build Coastguard Worker .n(8) 6025*4bdc9457SAndroid Build Coastguard Worker .k(4) 6026*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6027*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6028*4bdc9457SAndroid Build Coastguard Worker } 6029*4bdc9457SAndroid Build Coastguard Worker } 6030*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4_subtile_n)6031*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 6032*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6033*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6034*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6035*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6036*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6037*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6038*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6039*4bdc9457SAndroid Build Coastguard Worker .m(1) 6040*4bdc9457SAndroid Build Coastguard Worker .n(n) 6041*4bdc9457SAndroid Build Coastguard Worker .k(4) 6042*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6043*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6044*4bdc9457SAndroid Build Coastguard Worker } 6045*4bdc9457SAndroid Build Coastguard Worker } 6046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_lt_4)6047*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_lt_4) { 6048*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6049*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6050*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6051*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6052*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6053*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6054*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6055*4bdc9457SAndroid Build Coastguard Worker .m(1) 6056*4bdc9457SAndroid Build Coastguard Worker .n(8) 6057*4bdc9457SAndroid Build Coastguard Worker .k(k) 6058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6059*4bdc9457SAndroid Build Coastguard Worker } 6060*4bdc9457SAndroid Build Coastguard Worker } 6061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_lt_4_strided_a)6062*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_lt_4_strided_a) { 6063*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6064*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6065*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6066*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6067*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6068*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6069*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6070*4bdc9457SAndroid Build Coastguard Worker .m(1) 6071*4bdc9457SAndroid Build Coastguard Worker .n(8) 6072*4bdc9457SAndroid Build Coastguard Worker .k(k) 6073*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 6074*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6075*4bdc9457SAndroid Build Coastguard Worker } 6076*4bdc9457SAndroid Build Coastguard Worker } 6077*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_lt_4_subtile)6078*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_lt_4_subtile) { 6079*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6080*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6081*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6082*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6083*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6084*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6085*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6086*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6087*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6088*4bdc9457SAndroid Build Coastguard Worker .m(m) 6089*4bdc9457SAndroid Build Coastguard Worker .n(n) 6090*4bdc9457SAndroid Build Coastguard Worker .k(k) 6091*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6092*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6093*4bdc9457SAndroid Build Coastguard Worker } 6094*4bdc9457SAndroid Build Coastguard Worker } 6095*4bdc9457SAndroid Build Coastguard Worker } 6096*4bdc9457SAndroid Build Coastguard Worker } 6097*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_gt_4)6098*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_gt_4) { 6099*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6100*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6101*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6102*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6103*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6104*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6105*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6106*4bdc9457SAndroid Build Coastguard Worker .m(1) 6107*4bdc9457SAndroid Build Coastguard Worker .n(8) 6108*4bdc9457SAndroid Build Coastguard Worker .k(k) 6109*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6110*4bdc9457SAndroid Build Coastguard Worker } 6111*4bdc9457SAndroid Build Coastguard Worker } 6112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_gt_4_strided_a)6113*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_gt_4_strided_a) { 6114*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6115*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6116*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6117*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6118*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6119*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6120*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6121*4bdc9457SAndroid Build Coastguard Worker .m(1) 6122*4bdc9457SAndroid Build Coastguard Worker .n(8) 6123*4bdc9457SAndroid Build Coastguard Worker .k(k) 6124*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 6125*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6126*4bdc9457SAndroid Build Coastguard Worker } 6127*4bdc9457SAndroid Build Coastguard Worker } 6128*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_gt_4_subtile)6129*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_gt_4_subtile) { 6130*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6131*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6132*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6133*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6134*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6135*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6136*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6137*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6138*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6139*4bdc9457SAndroid Build Coastguard Worker .m(m) 6140*4bdc9457SAndroid Build Coastguard Worker .n(n) 6141*4bdc9457SAndroid Build Coastguard Worker .k(k) 6142*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6143*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6144*4bdc9457SAndroid Build Coastguard Worker } 6145*4bdc9457SAndroid Build Coastguard Worker } 6146*4bdc9457SAndroid Build Coastguard Worker } 6147*4bdc9457SAndroid Build Coastguard Worker } 6148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_div_4)6149*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_div_4) { 6150*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6151*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6152*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6153*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6154*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6155*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6156*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6157*4bdc9457SAndroid Build Coastguard Worker .m(1) 6158*4bdc9457SAndroid Build Coastguard Worker .n(8) 6159*4bdc9457SAndroid Build Coastguard Worker .k(k) 6160*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6161*4bdc9457SAndroid Build Coastguard Worker } 6162*4bdc9457SAndroid Build Coastguard Worker } 6163*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_div_4_strided_a)6164*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_div_4_strided_a) { 6165*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6166*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6167*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6168*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6169*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6170*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6171*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6172*4bdc9457SAndroid Build Coastguard Worker .m(1) 6173*4bdc9457SAndroid Build Coastguard Worker .n(8) 6174*4bdc9457SAndroid Build Coastguard Worker .k(k) 6175*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 6176*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6177*4bdc9457SAndroid Build Coastguard Worker } 6178*4bdc9457SAndroid Build Coastguard Worker } 6179*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_div_4_subtile)6180*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_div_4_subtile) { 6181*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6182*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6183*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6184*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6185*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6186*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6187*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6188*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6189*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6190*4bdc9457SAndroid Build Coastguard Worker .m(m) 6191*4bdc9457SAndroid Build Coastguard Worker .n(n) 6192*4bdc9457SAndroid Build Coastguard Worker .k(k) 6193*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6194*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6195*4bdc9457SAndroid Build Coastguard Worker } 6196*4bdc9457SAndroid Build Coastguard Worker } 6197*4bdc9457SAndroid Build Coastguard Worker } 6198*4bdc9457SAndroid Build Coastguard Worker } 6199*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_gt_8)6200*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_gt_8) { 6201*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6202*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 6203*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6204*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6205*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6206*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6207*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6208*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6209*4bdc9457SAndroid Build Coastguard Worker .m(1) 6210*4bdc9457SAndroid Build Coastguard Worker .n(n) 6211*4bdc9457SAndroid Build Coastguard Worker .k(k) 6212*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6213*4bdc9457SAndroid Build Coastguard Worker } 6214*4bdc9457SAndroid Build Coastguard Worker } 6215*4bdc9457SAndroid Build Coastguard Worker } 6216*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_gt_8_strided_cn)6217*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 6218*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6219*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 6220*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6221*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6222*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6223*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6224*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6225*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6226*4bdc9457SAndroid Build Coastguard Worker .m(1) 6227*4bdc9457SAndroid Build Coastguard Worker .n(n) 6228*4bdc9457SAndroid Build Coastguard Worker .k(k) 6229*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 6230*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6231*4bdc9457SAndroid Build Coastguard Worker } 6232*4bdc9457SAndroid Build Coastguard Worker } 6233*4bdc9457SAndroid Build Coastguard Worker } 6234*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_gt_8_strided_a)6235*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_gt_8_strided_a) { 6236*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6237*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 6238*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6239*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6240*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6241*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6242*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6243*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6244*4bdc9457SAndroid Build Coastguard Worker .m(1) 6245*4bdc9457SAndroid Build Coastguard Worker .n(n) 6246*4bdc9457SAndroid Build Coastguard Worker .k(k) 6247*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 6248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6249*4bdc9457SAndroid Build Coastguard Worker } 6250*4bdc9457SAndroid Build Coastguard Worker } 6251*4bdc9457SAndroid Build Coastguard Worker } 6252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_gt_8_subtile)6253*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_gt_8_subtile) { 6254*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6255*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 6256*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6257*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6258*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6259*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6260*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6261*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6262*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6263*4bdc9457SAndroid Build Coastguard Worker .m(m) 6264*4bdc9457SAndroid Build Coastguard Worker .n(n) 6265*4bdc9457SAndroid Build Coastguard Worker .k(k) 6266*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6267*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6268*4bdc9457SAndroid Build Coastguard Worker } 6269*4bdc9457SAndroid Build Coastguard Worker } 6270*4bdc9457SAndroid Build Coastguard Worker } 6271*4bdc9457SAndroid Build Coastguard Worker } 6272*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_div_8)6273*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_div_8) { 6274*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6275*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 6276*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6277*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6278*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6279*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6280*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6281*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6282*4bdc9457SAndroid Build Coastguard Worker .m(1) 6283*4bdc9457SAndroid Build Coastguard Worker .n(n) 6284*4bdc9457SAndroid Build Coastguard Worker .k(k) 6285*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6286*4bdc9457SAndroid Build Coastguard Worker } 6287*4bdc9457SAndroid Build Coastguard Worker } 6288*4bdc9457SAndroid Build Coastguard Worker } 6289*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_div_8_strided_cn)6290*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_div_8_strided_cn) { 6291*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6292*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 6293*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6294*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6295*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6296*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6297*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6298*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6299*4bdc9457SAndroid Build Coastguard Worker .m(1) 6300*4bdc9457SAndroid Build Coastguard Worker .n(n) 6301*4bdc9457SAndroid Build Coastguard Worker .k(k) 6302*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 6303*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6304*4bdc9457SAndroid Build Coastguard Worker } 6305*4bdc9457SAndroid Build Coastguard Worker } 6306*4bdc9457SAndroid Build Coastguard Worker } 6307*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_div_8_strided_a)6308*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_div_8_strided_a) { 6309*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6310*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 6311*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6312*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6313*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6314*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6315*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6316*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6317*4bdc9457SAndroid Build Coastguard Worker .m(1) 6318*4bdc9457SAndroid Build Coastguard Worker .n(n) 6319*4bdc9457SAndroid Build Coastguard Worker .k(k) 6320*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 6321*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6322*4bdc9457SAndroid Build Coastguard Worker } 6323*4bdc9457SAndroid Build Coastguard Worker } 6324*4bdc9457SAndroid Build Coastguard Worker } 6325*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_div_8_subtile)6326*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_div_8_subtile) { 6327*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6328*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 6329*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6330*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6331*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6332*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6333*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6334*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6335*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6336*4bdc9457SAndroid Build Coastguard Worker .m(m) 6337*4bdc9457SAndroid Build Coastguard Worker .n(n) 6338*4bdc9457SAndroid Build Coastguard Worker .k(k) 6339*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6340*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6341*4bdc9457SAndroid Build Coastguard Worker } 6342*4bdc9457SAndroid Build Coastguard Worker } 6343*4bdc9457SAndroid Build Coastguard Worker } 6344*4bdc9457SAndroid Build Coastguard Worker } 6345*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,strided_cm_subtile)6346*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, strided_cm_subtile) { 6347*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6348*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6349*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6350*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6351*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6352*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6353*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6354*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6355*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6356*4bdc9457SAndroid Build Coastguard Worker .m(m) 6357*4bdc9457SAndroid Build Coastguard Worker .n(n) 6358*4bdc9457SAndroid Build Coastguard Worker .k(k) 6359*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 6360*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6361*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6362*4bdc9457SAndroid Build Coastguard Worker } 6363*4bdc9457SAndroid Build Coastguard Worker } 6364*4bdc9457SAndroid Build Coastguard Worker } 6365*4bdc9457SAndroid Build Coastguard Worker } 6366*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,qmin)6367*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, qmin) { 6368*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6369*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6370*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6371*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6372*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6373*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6374*4bdc9457SAndroid Build Coastguard Worker .m(1) 6375*4bdc9457SAndroid Build Coastguard Worker .n(8) 6376*4bdc9457SAndroid Build Coastguard Worker .k(4) 6377*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6378*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6379*4bdc9457SAndroid Build Coastguard Worker } 6380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,qmax)6381*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, qmax) { 6382*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6383*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6384*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6385*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6386*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6387*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6388*4bdc9457SAndroid Build Coastguard Worker .m(1) 6389*4bdc9457SAndroid Build Coastguard Worker .n(8) 6390*4bdc9457SAndroid Build Coastguard Worker .k(4) 6391*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6392*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6393*4bdc9457SAndroid Build Coastguard Worker } 6394*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64,strided_cm)6395*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__NEONFP16ARITH_LD64, strided_cm) { 6396*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6397*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6398*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6399*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6400*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6401*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6402*4bdc9457SAndroid Build Coastguard Worker .m(1) 6403*4bdc9457SAndroid Build Coastguard Worker .n(8) 6404*4bdc9457SAndroid Build Coastguard Worker .k(4) 6405*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 6406*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6407*4bdc9457SAndroid Build Coastguard Worker } 6408*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 6409*4bdc9457SAndroid Build Coastguard Worker 6410*4bdc9457SAndroid Build Coastguard Worker 6411*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4)6412*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4) { 6413*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6414*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6415*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6416*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6417*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6418*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6419*4bdc9457SAndroid Build Coastguard Worker .m(1) 6420*4bdc9457SAndroid Build Coastguard Worker .n(16) 6421*4bdc9457SAndroid Build Coastguard Worker .k(4) 6422*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6423*4bdc9457SAndroid Build Coastguard Worker } 6424*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,strided_cn)6425*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, strided_cn) { 6426*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6427*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6428*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6429*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6430*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6431*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6432*4bdc9457SAndroid Build Coastguard Worker .m(1) 6433*4bdc9457SAndroid Build Coastguard Worker .n(16) 6434*4bdc9457SAndroid Build Coastguard Worker .k(4) 6435*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6436*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6437*4bdc9457SAndroid Build Coastguard Worker } 6438*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4_strided_a)6439*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4_strided_a) { 6440*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6441*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6442*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6443*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6444*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6445*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6446*4bdc9457SAndroid Build Coastguard Worker .m(1) 6447*4bdc9457SAndroid Build Coastguard Worker .n(16) 6448*4bdc9457SAndroid Build Coastguard Worker .k(4) 6449*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 6450*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6451*4bdc9457SAndroid Build Coastguard Worker } 6452*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4_subtile)6453*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4_subtile) { 6454*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6455*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6456*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6457*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6458*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6459*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6460*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6461*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6462*4bdc9457SAndroid Build Coastguard Worker .m(m) 6463*4bdc9457SAndroid Build Coastguard Worker .n(n) 6464*4bdc9457SAndroid Build Coastguard Worker .k(4) 6465*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6466*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6467*4bdc9457SAndroid Build Coastguard Worker } 6468*4bdc9457SAndroid Build Coastguard Worker } 6469*4bdc9457SAndroid Build Coastguard Worker } 6470*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4_subtile_m)6471*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 6472*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6473*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6474*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6475*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6476*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6477*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6478*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6479*4bdc9457SAndroid Build Coastguard Worker .m(m) 6480*4bdc9457SAndroid Build Coastguard Worker .n(16) 6481*4bdc9457SAndroid Build Coastguard Worker .k(4) 6482*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6483*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6484*4bdc9457SAndroid Build Coastguard Worker } 6485*4bdc9457SAndroid Build Coastguard Worker } 6486*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4_subtile_n)6487*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 6488*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6489*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6490*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6491*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6492*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6493*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6494*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6495*4bdc9457SAndroid Build Coastguard Worker .m(1) 6496*4bdc9457SAndroid Build Coastguard Worker .n(n) 6497*4bdc9457SAndroid Build Coastguard Worker .k(4) 6498*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6499*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6500*4bdc9457SAndroid Build Coastguard Worker } 6501*4bdc9457SAndroid Build Coastguard Worker } 6502*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_lt_4)6503*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_lt_4) { 6504*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6505*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6506*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6507*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6508*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6509*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6510*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6511*4bdc9457SAndroid Build Coastguard Worker .m(1) 6512*4bdc9457SAndroid Build Coastguard Worker .n(16) 6513*4bdc9457SAndroid Build Coastguard Worker .k(k) 6514*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6515*4bdc9457SAndroid Build Coastguard Worker } 6516*4bdc9457SAndroid Build Coastguard Worker } 6517*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_lt_4_strided_a)6518*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_lt_4_strided_a) { 6519*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6520*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6521*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6522*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6523*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6524*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6525*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6526*4bdc9457SAndroid Build Coastguard Worker .m(1) 6527*4bdc9457SAndroid Build Coastguard Worker .n(16) 6528*4bdc9457SAndroid Build Coastguard Worker .k(k) 6529*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 6530*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6531*4bdc9457SAndroid Build Coastguard Worker } 6532*4bdc9457SAndroid Build Coastguard Worker } 6533*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_lt_4_subtile)6534*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_lt_4_subtile) { 6535*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6536*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6537*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6538*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6539*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6540*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6541*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6542*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6543*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6544*4bdc9457SAndroid Build Coastguard Worker .m(m) 6545*4bdc9457SAndroid Build Coastguard Worker .n(n) 6546*4bdc9457SAndroid Build Coastguard Worker .k(k) 6547*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6548*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6549*4bdc9457SAndroid Build Coastguard Worker } 6550*4bdc9457SAndroid Build Coastguard Worker } 6551*4bdc9457SAndroid Build Coastguard Worker } 6552*4bdc9457SAndroid Build Coastguard Worker } 6553*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_gt_4)6554*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_gt_4) { 6555*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6556*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6557*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6558*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6559*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6560*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6561*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6562*4bdc9457SAndroid Build Coastguard Worker .m(1) 6563*4bdc9457SAndroid Build Coastguard Worker .n(16) 6564*4bdc9457SAndroid Build Coastguard Worker .k(k) 6565*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6566*4bdc9457SAndroid Build Coastguard Worker } 6567*4bdc9457SAndroid Build Coastguard Worker } 6568*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_gt_4_strided_a)6569*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_gt_4_strided_a) { 6570*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6571*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6572*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6573*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6574*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6575*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6576*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6577*4bdc9457SAndroid Build Coastguard Worker .m(1) 6578*4bdc9457SAndroid Build Coastguard Worker .n(16) 6579*4bdc9457SAndroid Build Coastguard Worker .k(k) 6580*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 6581*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6582*4bdc9457SAndroid Build Coastguard Worker } 6583*4bdc9457SAndroid Build Coastguard Worker } 6584*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_gt_4_subtile)6585*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_gt_4_subtile) { 6586*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6587*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6588*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6589*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6590*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6591*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6592*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6593*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6594*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6595*4bdc9457SAndroid Build Coastguard Worker .m(m) 6596*4bdc9457SAndroid Build Coastguard Worker .n(n) 6597*4bdc9457SAndroid Build Coastguard Worker .k(k) 6598*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6599*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6600*4bdc9457SAndroid Build Coastguard Worker } 6601*4bdc9457SAndroid Build Coastguard Worker } 6602*4bdc9457SAndroid Build Coastguard Worker } 6603*4bdc9457SAndroid Build Coastguard Worker } 6604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_div_4)6605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_div_4) { 6606*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6607*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6608*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6609*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6610*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6611*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6612*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6613*4bdc9457SAndroid Build Coastguard Worker .m(1) 6614*4bdc9457SAndroid Build Coastguard Worker .n(16) 6615*4bdc9457SAndroid Build Coastguard Worker .k(k) 6616*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6617*4bdc9457SAndroid Build Coastguard Worker } 6618*4bdc9457SAndroid Build Coastguard Worker } 6619*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_div_4_strided_a)6620*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_div_4_strided_a) { 6621*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6622*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6623*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6624*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6625*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6626*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6627*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6628*4bdc9457SAndroid Build Coastguard Worker .m(1) 6629*4bdc9457SAndroid Build Coastguard Worker .n(16) 6630*4bdc9457SAndroid Build Coastguard Worker .k(k) 6631*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 6632*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6633*4bdc9457SAndroid Build Coastguard Worker } 6634*4bdc9457SAndroid Build Coastguard Worker } 6635*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_div_4_subtile)6636*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_div_4_subtile) { 6637*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6638*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6639*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6640*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6641*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6642*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6643*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6644*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6645*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6646*4bdc9457SAndroid Build Coastguard Worker .m(m) 6647*4bdc9457SAndroid Build Coastguard Worker .n(n) 6648*4bdc9457SAndroid Build Coastguard Worker .k(k) 6649*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6650*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6651*4bdc9457SAndroid Build Coastguard Worker } 6652*4bdc9457SAndroid Build Coastguard Worker } 6653*4bdc9457SAndroid Build Coastguard Worker } 6654*4bdc9457SAndroid Build Coastguard Worker } 6655*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_gt_16)6656*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_gt_16) { 6657*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6658*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6659*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6660*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6661*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6662*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6663*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6664*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6665*4bdc9457SAndroid Build Coastguard Worker .m(1) 6666*4bdc9457SAndroid Build Coastguard Worker .n(n) 6667*4bdc9457SAndroid Build Coastguard Worker .k(k) 6668*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6669*4bdc9457SAndroid Build Coastguard Worker } 6670*4bdc9457SAndroid Build Coastguard Worker } 6671*4bdc9457SAndroid Build Coastguard Worker } 6672*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_gt_16_strided_cn)6673*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 6674*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6675*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6676*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6677*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6678*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6679*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6680*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6681*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6682*4bdc9457SAndroid Build Coastguard Worker .m(1) 6683*4bdc9457SAndroid Build Coastguard Worker .n(n) 6684*4bdc9457SAndroid Build Coastguard Worker .k(k) 6685*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6686*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6687*4bdc9457SAndroid Build Coastguard Worker } 6688*4bdc9457SAndroid Build Coastguard Worker } 6689*4bdc9457SAndroid Build Coastguard Worker } 6690*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_gt_16_strided_a)6691*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_gt_16_strided_a) { 6692*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6693*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6694*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6695*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6696*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6697*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6698*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6699*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6700*4bdc9457SAndroid Build Coastguard Worker .m(1) 6701*4bdc9457SAndroid Build Coastguard Worker .n(n) 6702*4bdc9457SAndroid Build Coastguard Worker .k(k) 6703*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 6704*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6705*4bdc9457SAndroid Build Coastguard Worker } 6706*4bdc9457SAndroid Build Coastguard Worker } 6707*4bdc9457SAndroid Build Coastguard Worker } 6708*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_gt_16_subtile)6709*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_gt_16_subtile) { 6710*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6711*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6712*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6713*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6714*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6715*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6716*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6717*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6718*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6719*4bdc9457SAndroid Build Coastguard Worker .m(m) 6720*4bdc9457SAndroid Build Coastguard Worker .n(n) 6721*4bdc9457SAndroid Build Coastguard Worker .k(k) 6722*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6723*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6724*4bdc9457SAndroid Build Coastguard Worker } 6725*4bdc9457SAndroid Build Coastguard Worker } 6726*4bdc9457SAndroid Build Coastguard Worker } 6727*4bdc9457SAndroid Build Coastguard Worker } 6728*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_div_16)6729*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_div_16) { 6730*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6731*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6732*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6733*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6734*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6735*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6736*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6737*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6738*4bdc9457SAndroid Build Coastguard Worker .m(1) 6739*4bdc9457SAndroid Build Coastguard Worker .n(n) 6740*4bdc9457SAndroid Build Coastguard Worker .k(k) 6741*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6742*4bdc9457SAndroid Build Coastguard Worker } 6743*4bdc9457SAndroid Build Coastguard Worker } 6744*4bdc9457SAndroid Build Coastguard Worker } 6745*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_div_16_strided_cn)6746*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_div_16_strided_cn) { 6747*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6748*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6749*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6750*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6751*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6752*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6753*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6754*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6755*4bdc9457SAndroid Build Coastguard Worker .m(1) 6756*4bdc9457SAndroid Build Coastguard Worker .n(n) 6757*4bdc9457SAndroid Build Coastguard Worker .k(k) 6758*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6759*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6760*4bdc9457SAndroid Build Coastguard Worker } 6761*4bdc9457SAndroid Build Coastguard Worker } 6762*4bdc9457SAndroid Build Coastguard Worker } 6763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_div_16_strided_a)6764*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_div_16_strided_a) { 6765*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6766*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6767*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6768*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6769*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6770*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6771*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6772*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6773*4bdc9457SAndroid Build Coastguard Worker .m(1) 6774*4bdc9457SAndroid Build Coastguard Worker .n(n) 6775*4bdc9457SAndroid Build Coastguard Worker .k(k) 6776*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 6777*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6778*4bdc9457SAndroid Build Coastguard Worker } 6779*4bdc9457SAndroid Build Coastguard Worker } 6780*4bdc9457SAndroid Build Coastguard Worker } 6781*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_div_16_subtile)6782*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_div_16_subtile) { 6783*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6784*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6785*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6786*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6787*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6788*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6789*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6790*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6791*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6792*4bdc9457SAndroid Build Coastguard Worker .m(m) 6793*4bdc9457SAndroid Build Coastguard Worker .n(n) 6794*4bdc9457SAndroid Build Coastguard Worker .k(k) 6795*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6796*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6797*4bdc9457SAndroid Build Coastguard Worker } 6798*4bdc9457SAndroid Build Coastguard Worker } 6799*4bdc9457SAndroid Build Coastguard Worker } 6800*4bdc9457SAndroid Build Coastguard Worker } 6801*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,strided_cm_subtile)6802*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, strided_cm_subtile) { 6803*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6804*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6805*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6806*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 6807*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6808*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6809*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6810*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6811*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6812*4bdc9457SAndroid Build Coastguard Worker .m(m) 6813*4bdc9457SAndroid Build Coastguard Worker .n(n) 6814*4bdc9457SAndroid Build Coastguard Worker .k(k) 6815*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 6816*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6817*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6818*4bdc9457SAndroid Build Coastguard Worker } 6819*4bdc9457SAndroid Build Coastguard Worker } 6820*4bdc9457SAndroid Build Coastguard Worker } 6821*4bdc9457SAndroid Build Coastguard Worker } 6822*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,qmin)6823*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, qmin) { 6824*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6825*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6826*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6827*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6828*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6829*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6830*4bdc9457SAndroid Build Coastguard Worker .m(1) 6831*4bdc9457SAndroid Build Coastguard Worker .n(16) 6832*4bdc9457SAndroid Build Coastguard Worker .k(4) 6833*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6834*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6835*4bdc9457SAndroid Build Coastguard Worker } 6836*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,qmax)6837*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, qmax) { 6838*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6839*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6840*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6841*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6842*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6843*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6844*4bdc9457SAndroid Build Coastguard Worker .m(1) 6845*4bdc9457SAndroid Build Coastguard Worker .n(16) 6846*4bdc9457SAndroid Build Coastguard Worker .k(4) 6847*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6848*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6849*4bdc9457SAndroid Build Coastguard Worker } 6850*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64,strided_cm)6851*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__NEONFP16ARITH_LD64, strided_cm) { 6852*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6853*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6854*4bdc9457SAndroid Build Coastguard Worker .mr(1) 6855*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6856*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6857*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6858*4bdc9457SAndroid Build Coastguard Worker .m(1) 6859*4bdc9457SAndroid Build Coastguard Worker .n(16) 6860*4bdc9457SAndroid Build Coastguard Worker .k(4) 6861*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 6862*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6863*4bdc9457SAndroid Build Coastguard Worker } 6864*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 6865*4bdc9457SAndroid Build Coastguard Worker 6866*4bdc9457SAndroid Build Coastguard Worker 6867*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4)6868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4) { 6869*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6870*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6871*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6872*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6873*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6874*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6875*4bdc9457SAndroid Build Coastguard Worker .m(4) 6876*4bdc9457SAndroid Build Coastguard Worker .n(8) 6877*4bdc9457SAndroid Build Coastguard Worker .k(4) 6878*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6879*4bdc9457SAndroid Build Coastguard Worker } 6880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,strided_cn)6881*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, strided_cn) { 6882*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6883*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6884*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6885*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6886*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6887*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6888*4bdc9457SAndroid Build Coastguard Worker .m(4) 6889*4bdc9457SAndroid Build Coastguard Worker .n(8) 6890*4bdc9457SAndroid Build Coastguard Worker .k(4) 6891*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 6892*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6893*4bdc9457SAndroid Build Coastguard Worker } 6894*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4_strided_a)6895*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4_strided_a) { 6896*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6897*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6898*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6899*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6900*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6901*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6902*4bdc9457SAndroid Build Coastguard Worker .m(4) 6903*4bdc9457SAndroid Build Coastguard Worker .n(8) 6904*4bdc9457SAndroid Build Coastguard Worker .k(4) 6905*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 6906*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6907*4bdc9457SAndroid Build Coastguard Worker } 6908*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4_subtile)6909*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4_subtile) { 6910*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6911*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6912*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6913*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6914*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6915*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6916*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6917*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6918*4bdc9457SAndroid Build Coastguard Worker .m(m) 6919*4bdc9457SAndroid Build Coastguard Worker .n(n) 6920*4bdc9457SAndroid Build Coastguard Worker .k(4) 6921*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6923*4bdc9457SAndroid Build Coastguard Worker } 6924*4bdc9457SAndroid Build Coastguard Worker } 6925*4bdc9457SAndroid Build Coastguard Worker } 6926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4_subtile_m)6927*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 6928*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6929*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6930*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6931*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6932*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6933*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6934*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6935*4bdc9457SAndroid Build Coastguard Worker .m(m) 6936*4bdc9457SAndroid Build Coastguard Worker .n(8) 6937*4bdc9457SAndroid Build Coastguard Worker .k(4) 6938*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6939*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6940*4bdc9457SAndroid Build Coastguard Worker } 6941*4bdc9457SAndroid Build Coastguard Worker } 6942*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4_subtile_n)6943*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 6944*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6945*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6946*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6947*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6948*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6949*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6950*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6951*4bdc9457SAndroid Build Coastguard Worker .m(4) 6952*4bdc9457SAndroid Build Coastguard Worker .n(n) 6953*4bdc9457SAndroid Build Coastguard Worker .k(4) 6954*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6955*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6956*4bdc9457SAndroid Build Coastguard Worker } 6957*4bdc9457SAndroid Build Coastguard Worker } 6958*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_lt_4)6959*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_lt_4) { 6960*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6961*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6962*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6963*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6964*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6965*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6966*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6967*4bdc9457SAndroid Build Coastguard Worker .m(4) 6968*4bdc9457SAndroid Build Coastguard Worker .n(8) 6969*4bdc9457SAndroid Build Coastguard Worker .k(k) 6970*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6971*4bdc9457SAndroid Build Coastguard Worker } 6972*4bdc9457SAndroid Build Coastguard Worker } 6973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_lt_4_strided_a)6974*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_lt_4_strided_a) { 6975*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6976*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6977*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6978*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6979*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6980*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6981*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6982*4bdc9457SAndroid Build Coastguard Worker .m(4) 6983*4bdc9457SAndroid Build Coastguard Worker .n(8) 6984*4bdc9457SAndroid Build Coastguard Worker .k(k) 6985*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 6986*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6987*4bdc9457SAndroid Build Coastguard Worker } 6988*4bdc9457SAndroid Build Coastguard Worker } 6989*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_lt_4_subtile)6990*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_lt_4_subtile) { 6991*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6992*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6993*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6994*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6995*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6996*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6997*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6998*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6999*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7000*4bdc9457SAndroid Build Coastguard Worker .m(m) 7001*4bdc9457SAndroid Build Coastguard Worker .n(n) 7002*4bdc9457SAndroid Build Coastguard Worker .k(k) 7003*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7004*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7005*4bdc9457SAndroid Build Coastguard Worker } 7006*4bdc9457SAndroid Build Coastguard Worker } 7007*4bdc9457SAndroid Build Coastguard Worker } 7008*4bdc9457SAndroid Build Coastguard Worker } 7009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_gt_4)7010*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_gt_4) { 7011*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7012*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7013*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7014*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7015*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7016*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7017*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7018*4bdc9457SAndroid Build Coastguard Worker .m(4) 7019*4bdc9457SAndroid Build Coastguard Worker .n(8) 7020*4bdc9457SAndroid Build Coastguard Worker .k(k) 7021*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7022*4bdc9457SAndroid Build Coastguard Worker } 7023*4bdc9457SAndroid Build Coastguard Worker } 7024*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_gt_4_strided_a)7025*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_gt_4_strided_a) { 7026*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7027*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7028*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7029*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7030*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7031*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7032*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7033*4bdc9457SAndroid Build Coastguard Worker .m(4) 7034*4bdc9457SAndroid Build Coastguard Worker .n(8) 7035*4bdc9457SAndroid Build Coastguard Worker .k(k) 7036*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 7037*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7038*4bdc9457SAndroid Build Coastguard Worker } 7039*4bdc9457SAndroid Build Coastguard Worker } 7040*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_gt_4_subtile)7041*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_gt_4_subtile) { 7042*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7043*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7044*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7045*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7046*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7047*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7048*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7049*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7050*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7051*4bdc9457SAndroid Build Coastguard Worker .m(m) 7052*4bdc9457SAndroid Build Coastguard Worker .n(n) 7053*4bdc9457SAndroid Build Coastguard Worker .k(k) 7054*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7055*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7056*4bdc9457SAndroid Build Coastguard Worker } 7057*4bdc9457SAndroid Build Coastguard Worker } 7058*4bdc9457SAndroid Build Coastguard Worker } 7059*4bdc9457SAndroid Build Coastguard Worker } 7060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_div_4)7061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_div_4) { 7062*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7063*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7064*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7065*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7066*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7067*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7068*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7069*4bdc9457SAndroid Build Coastguard Worker .m(4) 7070*4bdc9457SAndroid Build Coastguard Worker .n(8) 7071*4bdc9457SAndroid Build Coastguard Worker .k(k) 7072*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7073*4bdc9457SAndroid Build Coastguard Worker } 7074*4bdc9457SAndroid Build Coastguard Worker } 7075*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_div_4_strided_a)7076*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_div_4_strided_a) { 7077*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7078*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7079*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7080*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7081*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7082*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7083*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7084*4bdc9457SAndroid Build Coastguard Worker .m(4) 7085*4bdc9457SAndroid Build Coastguard Worker .n(8) 7086*4bdc9457SAndroid Build Coastguard Worker .k(k) 7087*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 7088*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7089*4bdc9457SAndroid Build Coastguard Worker } 7090*4bdc9457SAndroid Build Coastguard Worker } 7091*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_div_4_subtile)7092*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_div_4_subtile) { 7093*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7094*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7095*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7096*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7097*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7098*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7099*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7100*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7101*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7102*4bdc9457SAndroid Build Coastguard Worker .m(m) 7103*4bdc9457SAndroid Build Coastguard Worker .n(n) 7104*4bdc9457SAndroid Build Coastguard Worker .k(k) 7105*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7106*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7107*4bdc9457SAndroid Build Coastguard Worker } 7108*4bdc9457SAndroid Build Coastguard Worker } 7109*4bdc9457SAndroid Build Coastguard Worker } 7110*4bdc9457SAndroid Build Coastguard Worker } 7111*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_gt_8)7112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_gt_8) { 7113*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7114*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 7115*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7116*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7117*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7118*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7119*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7120*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7121*4bdc9457SAndroid Build Coastguard Worker .m(4) 7122*4bdc9457SAndroid Build Coastguard Worker .n(n) 7123*4bdc9457SAndroid Build Coastguard Worker .k(k) 7124*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7125*4bdc9457SAndroid Build Coastguard Worker } 7126*4bdc9457SAndroid Build Coastguard Worker } 7127*4bdc9457SAndroid Build Coastguard Worker } 7128*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_gt_8_strided_cn)7129*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 7130*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7131*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 7132*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7133*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7134*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7135*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7136*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7137*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7138*4bdc9457SAndroid Build Coastguard Worker .m(4) 7139*4bdc9457SAndroid Build Coastguard Worker .n(n) 7140*4bdc9457SAndroid Build Coastguard Worker .k(k) 7141*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 7142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7143*4bdc9457SAndroid Build Coastguard Worker } 7144*4bdc9457SAndroid Build Coastguard Worker } 7145*4bdc9457SAndroid Build Coastguard Worker } 7146*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_gt_8_strided_a)7147*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_gt_8_strided_a) { 7148*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7149*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 7150*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7151*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7152*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7153*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7154*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7155*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7156*4bdc9457SAndroid Build Coastguard Worker .m(4) 7157*4bdc9457SAndroid Build Coastguard Worker .n(n) 7158*4bdc9457SAndroid Build Coastguard Worker .k(k) 7159*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 7160*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7161*4bdc9457SAndroid Build Coastguard Worker } 7162*4bdc9457SAndroid Build Coastguard Worker } 7163*4bdc9457SAndroid Build Coastguard Worker } 7164*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_gt_8_subtile)7165*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_gt_8_subtile) { 7166*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7167*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 7168*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7169*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7170*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7171*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7172*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7173*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7174*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7175*4bdc9457SAndroid Build Coastguard Worker .m(m) 7176*4bdc9457SAndroid Build Coastguard Worker .n(n) 7177*4bdc9457SAndroid Build Coastguard Worker .k(k) 7178*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7179*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7180*4bdc9457SAndroid Build Coastguard Worker } 7181*4bdc9457SAndroid Build Coastguard Worker } 7182*4bdc9457SAndroid Build Coastguard Worker } 7183*4bdc9457SAndroid Build Coastguard Worker } 7184*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_div_8)7185*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_div_8) { 7186*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7187*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 7188*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7189*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7190*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7191*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7192*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7193*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7194*4bdc9457SAndroid Build Coastguard Worker .m(4) 7195*4bdc9457SAndroid Build Coastguard Worker .n(n) 7196*4bdc9457SAndroid Build Coastguard Worker .k(k) 7197*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7198*4bdc9457SAndroid Build Coastguard Worker } 7199*4bdc9457SAndroid Build Coastguard Worker } 7200*4bdc9457SAndroid Build Coastguard Worker } 7201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_div_8_strided_cn)7202*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_div_8_strided_cn) { 7203*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7204*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 7205*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7206*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7207*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7208*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7209*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7210*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7211*4bdc9457SAndroid Build Coastguard Worker .m(4) 7212*4bdc9457SAndroid Build Coastguard Worker .n(n) 7213*4bdc9457SAndroid Build Coastguard Worker .k(k) 7214*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 7215*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7216*4bdc9457SAndroid Build Coastguard Worker } 7217*4bdc9457SAndroid Build Coastguard Worker } 7218*4bdc9457SAndroid Build Coastguard Worker } 7219*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_div_8_strided_a)7220*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_div_8_strided_a) { 7221*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7222*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 7223*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7224*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7225*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7226*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7227*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7228*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7229*4bdc9457SAndroid Build Coastguard Worker .m(4) 7230*4bdc9457SAndroid Build Coastguard Worker .n(n) 7231*4bdc9457SAndroid Build Coastguard Worker .k(k) 7232*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 7233*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7234*4bdc9457SAndroid Build Coastguard Worker } 7235*4bdc9457SAndroid Build Coastguard Worker } 7236*4bdc9457SAndroid Build Coastguard Worker } 7237*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_div_8_subtile)7238*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_div_8_subtile) { 7239*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7240*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 7241*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7242*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7243*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7244*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7245*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7246*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7247*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7248*4bdc9457SAndroid Build Coastguard Worker .m(m) 7249*4bdc9457SAndroid Build Coastguard Worker .n(n) 7250*4bdc9457SAndroid Build Coastguard Worker .k(k) 7251*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7252*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7253*4bdc9457SAndroid Build Coastguard Worker } 7254*4bdc9457SAndroid Build Coastguard Worker } 7255*4bdc9457SAndroid Build Coastguard Worker } 7256*4bdc9457SAndroid Build Coastguard Worker } 7257*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,strided_cm_subtile)7258*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, strided_cm_subtile) { 7259*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7260*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7261*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7262*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7263*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7264*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7265*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7266*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7267*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7268*4bdc9457SAndroid Build Coastguard Worker .m(m) 7269*4bdc9457SAndroid Build Coastguard Worker .n(n) 7270*4bdc9457SAndroid Build Coastguard Worker .k(k) 7271*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 7272*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7273*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7274*4bdc9457SAndroid Build Coastguard Worker } 7275*4bdc9457SAndroid Build Coastguard Worker } 7276*4bdc9457SAndroid Build Coastguard Worker } 7277*4bdc9457SAndroid Build Coastguard Worker } 7278*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,qmin)7279*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, qmin) { 7280*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7281*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7282*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7283*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7284*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7285*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7286*4bdc9457SAndroid Build Coastguard Worker .m(4) 7287*4bdc9457SAndroid Build Coastguard Worker .n(8) 7288*4bdc9457SAndroid Build Coastguard Worker .k(4) 7289*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7290*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7291*4bdc9457SAndroid Build Coastguard Worker } 7292*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,qmax)7293*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, qmax) { 7294*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7295*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7296*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7297*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7298*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7299*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7300*4bdc9457SAndroid Build Coastguard Worker .m(4) 7301*4bdc9457SAndroid Build Coastguard Worker .n(8) 7302*4bdc9457SAndroid Build Coastguard Worker .k(4) 7303*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7304*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7305*4bdc9457SAndroid Build Coastguard Worker } 7306*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64,strided_cm)7307*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__NEONFP16ARITH_LD64, strided_cm) { 7308*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7309*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7310*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7311*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7312*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7313*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7314*4bdc9457SAndroid Build Coastguard Worker .m(4) 7315*4bdc9457SAndroid Build Coastguard Worker .n(8) 7316*4bdc9457SAndroid Build Coastguard Worker .k(4) 7317*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 7318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7319*4bdc9457SAndroid Build Coastguard Worker } 7320*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 7321*4bdc9457SAndroid Build Coastguard Worker 7322*4bdc9457SAndroid Build Coastguard Worker 7323*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4)7324*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4) { 7325*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7326*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7327*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7328*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7329*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7330*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7331*4bdc9457SAndroid Build Coastguard Worker .m(4) 7332*4bdc9457SAndroid Build Coastguard Worker .n(16) 7333*4bdc9457SAndroid Build Coastguard Worker .k(4) 7334*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7335*4bdc9457SAndroid Build Coastguard Worker } 7336*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,strided_cn)7337*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, strided_cn) { 7338*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7339*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7340*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7341*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7342*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7343*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7344*4bdc9457SAndroid Build Coastguard Worker .m(4) 7345*4bdc9457SAndroid Build Coastguard Worker .n(16) 7346*4bdc9457SAndroid Build Coastguard Worker .k(4) 7347*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7348*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7349*4bdc9457SAndroid Build Coastguard Worker } 7350*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4_strided_a)7351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4_strided_a) { 7352*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7353*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7354*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7355*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7356*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7357*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7358*4bdc9457SAndroid Build Coastguard Worker .m(4) 7359*4bdc9457SAndroid Build Coastguard Worker .n(16) 7360*4bdc9457SAndroid Build Coastguard Worker .k(4) 7361*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 7362*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7363*4bdc9457SAndroid Build Coastguard Worker } 7364*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4_subtile)7365*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4_subtile) { 7366*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7367*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7368*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7369*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7370*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7371*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7372*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7373*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7374*4bdc9457SAndroid Build Coastguard Worker .m(m) 7375*4bdc9457SAndroid Build Coastguard Worker .n(n) 7376*4bdc9457SAndroid Build Coastguard Worker .k(4) 7377*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7378*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7379*4bdc9457SAndroid Build Coastguard Worker } 7380*4bdc9457SAndroid Build Coastguard Worker } 7381*4bdc9457SAndroid Build Coastguard Worker } 7382*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4_subtile_m)7383*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 7384*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7385*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7386*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7387*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7388*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7389*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7390*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7391*4bdc9457SAndroid Build Coastguard Worker .m(m) 7392*4bdc9457SAndroid Build Coastguard Worker .n(16) 7393*4bdc9457SAndroid Build Coastguard Worker .k(4) 7394*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7395*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7396*4bdc9457SAndroid Build Coastguard Worker } 7397*4bdc9457SAndroid Build Coastguard Worker } 7398*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4_subtile_n)7399*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 7400*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7401*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7402*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7403*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7404*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7405*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7406*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7407*4bdc9457SAndroid Build Coastguard Worker .m(4) 7408*4bdc9457SAndroid Build Coastguard Worker .n(n) 7409*4bdc9457SAndroid Build Coastguard Worker .k(4) 7410*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7411*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7412*4bdc9457SAndroid Build Coastguard Worker } 7413*4bdc9457SAndroid Build Coastguard Worker } 7414*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_lt_4)7415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_lt_4) { 7416*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7417*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7418*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7419*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7420*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7421*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7422*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7423*4bdc9457SAndroid Build Coastguard Worker .m(4) 7424*4bdc9457SAndroid Build Coastguard Worker .n(16) 7425*4bdc9457SAndroid Build Coastguard Worker .k(k) 7426*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7427*4bdc9457SAndroid Build Coastguard Worker } 7428*4bdc9457SAndroid Build Coastguard Worker } 7429*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_lt_4_strided_a)7430*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_lt_4_strided_a) { 7431*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7432*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7433*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7434*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7435*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7436*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7437*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7438*4bdc9457SAndroid Build Coastguard Worker .m(4) 7439*4bdc9457SAndroid Build Coastguard Worker .n(16) 7440*4bdc9457SAndroid Build Coastguard Worker .k(k) 7441*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 7442*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7443*4bdc9457SAndroid Build Coastguard Worker } 7444*4bdc9457SAndroid Build Coastguard Worker } 7445*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_lt_4_subtile)7446*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_lt_4_subtile) { 7447*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7448*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7449*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7450*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7451*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7452*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7453*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7454*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7455*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7456*4bdc9457SAndroid Build Coastguard Worker .m(m) 7457*4bdc9457SAndroid Build Coastguard Worker .n(n) 7458*4bdc9457SAndroid Build Coastguard Worker .k(k) 7459*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7460*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7461*4bdc9457SAndroid Build Coastguard Worker } 7462*4bdc9457SAndroid Build Coastguard Worker } 7463*4bdc9457SAndroid Build Coastguard Worker } 7464*4bdc9457SAndroid Build Coastguard Worker } 7465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_gt_4)7466*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_gt_4) { 7467*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7468*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7469*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7470*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7471*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7472*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7473*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7474*4bdc9457SAndroid Build Coastguard Worker .m(4) 7475*4bdc9457SAndroid Build Coastguard Worker .n(16) 7476*4bdc9457SAndroid Build Coastguard Worker .k(k) 7477*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7478*4bdc9457SAndroid Build Coastguard Worker } 7479*4bdc9457SAndroid Build Coastguard Worker } 7480*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_gt_4_strided_a)7481*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_gt_4_strided_a) { 7482*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7483*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7484*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7485*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7486*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7487*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7488*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7489*4bdc9457SAndroid Build Coastguard Worker .m(4) 7490*4bdc9457SAndroid Build Coastguard Worker .n(16) 7491*4bdc9457SAndroid Build Coastguard Worker .k(k) 7492*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 7493*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7494*4bdc9457SAndroid Build Coastguard Worker } 7495*4bdc9457SAndroid Build Coastguard Worker } 7496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_gt_4_subtile)7497*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_gt_4_subtile) { 7498*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7499*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7500*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7501*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7502*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7503*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7504*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7505*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7506*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7507*4bdc9457SAndroid Build Coastguard Worker .m(m) 7508*4bdc9457SAndroid Build Coastguard Worker .n(n) 7509*4bdc9457SAndroid Build Coastguard Worker .k(k) 7510*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7511*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7512*4bdc9457SAndroid Build Coastguard Worker } 7513*4bdc9457SAndroid Build Coastguard Worker } 7514*4bdc9457SAndroid Build Coastguard Worker } 7515*4bdc9457SAndroid Build Coastguard Worker } 7516*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_div_4)7517*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_div_4) { 7518*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7519*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7520*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7521*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7522*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7523*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7524*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7525*4bdc9457SAndroid Build Coastguard Worker .m(4) 7526*4bdc9457SAndroid Build Coastguard Worker .n(16) 7527*4bdc9457SAndroid Build Coastguard Worker .k(k) 7528*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7529*4bdc9457SAndroid Build Coastguard Worker } 7530*4bdc9457SAndroid Build Coastguard Worker } 7531*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_div_4_strided_a)7532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_div_4_strided_a) { 7533*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7534*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7535*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7536*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7537*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7538*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7539*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7540*4bdc9457SAndroid Build Coastguard Worker .m(4) 7541*4bdc9457SAndroid Build Coastguard Worker .n(16) 7542*4bdc9457SAndroid Build Coastguard Worker .k(k) 7543*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 7544*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7545*4bdc9457SAndroid Build Coastguard Worker } 7546*4bdc9457SAndroid Build Coastguard Worker } 7547*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_div_4_subtile)7548*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_div_4_subtile) { 7549*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7550*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7551*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7552*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7553*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7554*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7555*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7556*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7557*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7558*4bdc9457SAndroid Build Coastguard Worker .m(m) 7559*4bdc9457SAndroid Build Coastguard Worker .n(n) 7560*4bdc9457SAndroid Build Coastguard Worker .k(k) 7561*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7562*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7563*4bdc9457SAndroid Build Coastguard Worker } 7564*4bdc9457SAndroid Build Coastguard Worker } 7565*4bdc9457SAndroid Build Coastguard Worker } 7566*4bdc9457SAndroid Build Coastguard Worker } 7567*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_gt_16)7568*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_gt_16) { 7569*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7570*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7571*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7572*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7573*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7574*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7575*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7576*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7577*4bdc9457SAndroid Build Coastguard Worker .m(4) 7578*4bdc9457SAndroid Build Coastguard Worker .n(n) 7579*4bdc9457SAndroid Build Coastguard Worker .k(k) 7580*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7581*4bdc9457SAndroid Build Coastguard Worker } 7582*4bdc9457SAndroid Build Coastguard Worker } 7583*4bdc9457SAndroid Build Coastguard Worker } 7584*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_gt_16_strided_cn)7585*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 7586*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7587*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7588*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7589*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7590*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7591*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7592*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7593*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7594*4bdc9457SAndroid Build Coastguard Worker .m(4) 7595*4bdc9457SAndroid Build Coastguard Worker .n(n) 7596*4bdc9457SAndroid Build Coastguard Worker .k(k) 7597*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7598*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7599*4bdc9457SAndroid Build Coastguard Worker } 7600*4bdc9457SAndroid Build Coastguard Worker } 7601*4bdc9457SAndroid Build Coastguard Worker } 7602*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_gt_16_strided_a)7603*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_gt_16_strided_a) { 7604*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7605*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7606*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7607*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7608*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7609*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7610*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7611*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7612*4bdc9457SAndroid Build Coastguard Worker .m(4) 7613*4bdc9457SAndroid Build Coastguard Worker .n(n) 7614*4bdc9457SAndroid Build Coastguard Worker .k(k) 7615*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 7616*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7617*4bdc9457SAndroid Build Coastguard Worker } 7618*4bdc9457SAndroid Build Coastguard Worker } 7619*4bdc9457SAndroid Build Coastguard Worker } 7620*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_gt_16_subtile)7621*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_gt_16_subtile) { 7622*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7623*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7624*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7625*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7626*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7627*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7628*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7629*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7630*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7631*4bdc9457SAndroid Build Coastguard Worker .m(m) 7632*4bdc9457SAndroid Build Coastguard Worker .n(n) 7633*4bdc9457SAndroid Build Coastguard Worker .k(k) 7634*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7635*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7636*4bdc9457SAndroid Build Coastguard Worker } 7637*4bdc9457SAndroid Build Coastguard Worker } 7638*4bdc9457SAndroid Build Coastguard Worker } 7639*4bdc9457SAndroid Build Coastguard Worker } 7640*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_div_16)7641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_div_16) { 7642*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7643*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7644*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7645*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7646*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7647*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7648*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7649*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7650*4bdc9457SAndroid Build Coastguard Worker .m(4) 7651*4bdc9457SAndroid Build Coastguard Worker .n(n) 7652*4bdc9457SAndroid Build Coastguard Worker .k(k) 7653*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7654*4bdc9457SAndroid Build Coastguard Worker } 7655*4bdc9457SAndroid Build Coastguard Worker } 7656*4bdc9457SAndroid Build Coastguard Worker } 7657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_div_16_strided_cn)7658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_div_16_strided_cn) { 7659*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7660*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7661*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7662*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7663*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7664*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7665*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7666*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7667*4bdc9457SAndroid Build Coastguard Worker .m(4) 7668*4bdc9457SAndroid Build Coastguard Worker .n(n) 7669*4bdc9457SAndroid Build Coastguard Worker .k(k) 7670*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7671*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7672*4bdc9457SAndroid Build Coastguard Worker } 7673*4bdc9457SAndroid Build Coastguard Worker } 7674*4bdc9457SAndroid Build Coastguard Worker } 7675*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_div_16_strided_a)7676*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_div_16_strided_a) { 7677*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7678*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7679*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7680*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7681*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7682*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7683*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7684*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7685*4bdc9457SAndroid Build Coastguard Worker .m(4) 7686*4bdc9457SAndroid Build Coastguard Worker .n(n) 7687*4bdc9457SAndroid Build Coastguard Worker .k(k) 7688*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 7689*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7690*4bdc9457SAndroid Build Coastguard Worker } 7691*4bdc9457SAndroid Build Coastguard Worker } 7692*4bdc9457SAndroid Build Coastguard Worker } 7693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_div_16_subtile)7694*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_div_16_subtile) { 7695*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7696*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7697*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7698*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7699*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7700*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7701*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7702*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7703*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7704*4bdc9457SAndroid Build Coastguard Worker .m(m) 7705*4bdc9457SAndroid Build Coastguard Worker .n(n) 7706*4bdc9457SAndroid Build Coastguard Worker .k(k) 7707*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7708*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7709*4bdc9457SAndroid Build Coastguard Worker } 7710*4bdc9457SAndroid Build Coastguard Worker } 7711*4bdc9457SAndroid Build Coastguard Worker } 7712*4bdc9457SAndroid Build Coastguard Worker } 7713*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,strided_cm_subtile)7714*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, strided_cm_subtile) { 7715*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7716*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7717*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7718*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 7719*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7720*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7721*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7722*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7723*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7724*4bdc9457SAndroid Build Coastguard Worker .m(m) 7725*4bdc9457SAndroid Build Coastguard Worker .n(n) 7726*4bdc9457SAndroid Build Coastguard Worker .k(k) 7727*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 7728*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7729*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7730*4bdc9457SAndroid Build Coastguard Worker } 7731*4bdc9457SAndroid Build Coastguard Worker } 7732*4bdc9457SAndroid Build Coastguard Worker } 7733*4bdc9457SAndroid Build Coastguard Worker } 7734*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,qmin)7735*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, qmin) { 7736*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7737*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7738*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7739*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7740*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7741*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7742*4bdc9457SAndroid Build Coastguard Worker .m(4) 7743*4bdc9457SAndroid Build Coastguard Worker .n(16) 7744*4bdc9457SAndroid Build Coastguard Worker .k(4) 7745*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7746*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7747*4bdc9457SAndroid Build Coastguard Worker } 7748*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,qmax)7749*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, qmax) { 7750*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7751*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7752*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7753*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7754*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7755*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7756*4bdc9457SAndroid Build Coastguard Worker .m(4) 7757*4bdc9457SAndroid Build Coastguard Worker .n(16) 7758*4bdc9457SAndroid Build Coastguard Worker .k(4) 7759*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7760*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7761*4bdc9457SAndroid Build Coastguard Worker } 7762*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64,strided_cm)7763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__NEONFP16ARITH_LD64, strided_cm) { 7764*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7765*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7766*4bdc9457SAndroid Build Coastguard Worker .mr(4) 7767*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7768*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7769*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7770*4bdc9457SAndroid Build Coastguard Worker .m(4) 7771*4bdc9457SAndroid Build Coastguard Worker .n(16) 7772*4bdc9457SAndroid Build Coastguard Worker .k(4) 7773*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 7774*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7775*4bdc9457SAndroid Build Coastguard Worker } 7776*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 7777*4bdc9457SAndroid Build Coastguard Worker 7778*4bdc9457SAndroid Build Coastguard Worker 7779*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4)7780*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4) { 7781*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7782*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7783*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7784*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7785*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7786*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7787*4bdc9457SAndroid Build Coastguard Worker .m(6) 7788*4bdc9457SAndroid Build Coastguard Worker .n(8) 7789*4bdc9457SAndroid Build Coastguard Worker .k(4) 7790*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7791*4bdc9457SAndroid Build Coastguard Worker } 7792*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,strided_cn)7793*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, strided_cn) { 7794*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7795*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7796*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7797*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7798*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7799*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7800*4bdc9457SAndroid Build Coastguard Worker .m(6) 7801*4bdc9457SAndroid Build Coastguard Worker .n(8) 7802*4bdc9457SAndroid Build Coastguard Worker .k(4) 7803*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 7804*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7805*4bdc9457SAndroid Build Coastguard Worker } 7806*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4_strided_a)7807*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4_strided_a) { 7808*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7809*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7810*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7811*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7812*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7813*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7814*4bdc9457SAndroid Build Coastguard Worker .m(6) 7815*4bdc9457SAndroid Build Coastguard Worker .n(8) 7816*4bdc9457SAndroid Build Coastguard Worker .k(4) 7817*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 7818*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7819*4bdc9457SAndroid Build Coastguard Worker } 7820*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4_subtile)7821*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4_subtile) { 7822*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7823*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7824*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 7825*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7826*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7827*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7828*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7829*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7830*4bdc9457SAndroid Build Coastguard Worker .m(m) 7831*4bdc9457SAndroid Build Coastguard Worker .n(n) 7832*4bdc9457SAndroid Build Coastguard Worker .k(4) 7833*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7834*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7835*4bdc9457SAndroid Build Coastguard Worker } 7836*4bdc9457SAndroid Build Coastguard Worker } 7837*4bdc9457SAndroid Build Coastguard Worker } 7838*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4_subtile_m)7839*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 7840*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7841*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 7842*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7843*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7844*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7845*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7846*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7847*4bdc9457SAndroid Build Coastguard Worker .m(m) 7848*4bdc9457SAndroid Build Coastguard Worker .n(8) 7849*4bdc9457SAndroid Build Coastguard Worker .k(4) 7850*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7851*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7852*4bdc9457SAndroid Build Coastguard Worker } 7853*4bdc9457SAndroid Build Coastguard Worker } 7854*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4_subtile_n)7855*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 7856*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7857*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7858*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7859*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7860*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7861*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7862*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7863*4bdc9457SAndroid Build Coastguard Worker .m(6) 7864*4bdc9457SAndroid Build Coastguard Worker .n(n) 7865*4bdc9457SAndroid Build Coastguard Worker .k(4) 7866*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7867*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7868*4bdc9457SAndroid Build Coastguard Worker } 7869*4bdc9457SAndroid Build Coastguard Worker } 7870*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_lt_4)7871*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_lt_4) { 7872*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7873*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7874*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7875*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7876*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7877*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7878*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7879*4bdc9457SAndroid Build Coastguard Worker .m(6) 7880*4bdc9457SAndroid Build Coastguard Worker .n(8) 7881*4bdc9457SAndroid Build Coastguard Worker .k(k) 7882*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7883*4bdc9457SAndroid Build Coastguard Worker } 7884*4bdc9457SAndroid Build Coastguard Worker } 7885*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_lt_4_strided_a)7886*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_lt_4_strided_a) { 7887*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7888*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7889*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7890*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7891*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7892*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7893*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7894*4bdc9457SAndroid Build Coastguard Worker .m(6) 7895*4bdc9457SAndroid Build Coastguard Worker .n(8) 7896*4bdc9457SAndroid Build Coastguard Worker .k(k) 7897*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 7898*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7899*4bdc9457SAndroid Build Coastguard Worker } 7900*4bdc9457SAndroid Build Coastguard Worker } 7901*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_lt_4_subtile)7902*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_lt_4_subtile) { 7903*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7904*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7905*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7906*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 7907*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7908*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7909*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7910*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7911*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7912*4bdc9457SAndroid Build Coastguard Worker .m(m) 7913*4bdc9457SAndroid Build Coastguard Worker .n(n) 7914*4bdc9457SAndroid Build Coastguard Worker .k(k) 7915*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7916*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7917*4bdc9457SAndroid Build Coastguard Worker } 7918*4bdc9457SAndroid Build Coastguard Worker } 7919*4bdc9457SAndroid Build Coastguard Worker } 7920*4bdc9457SAndroid Build Coastguard Worker } 7921*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_gt_4)7922*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_gt_4) { 7923*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7924*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7925*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7926*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7927*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7928*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7929*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7930*4bdc9457SAndroid Build Coastguard Worker .m(6) 7931*4bdc9457SAndroid Build Coastguard Worker .n(8) 7932*4bdc9457SAndroid Build Coastguard Worker .k(k) 7933*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7934*4bdc9457SAndroid Build Coastguard Worker } 7935*4bdc9457SAndroid Build Coastguard Worker } 7936*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_gt_4_strided_a)7937*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_gt_4_strided_a) { 7938*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7939*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7940*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7941*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7942*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7943*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7944*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7945*4bdc9457SAndroid Build Coastguard Worker .m(6) 7946*4bdc9457SAndroid Build Coastguard Worker .n(8) 7947*4bdc9457SAndroid Build Coastguard Worker .k(k) 7948*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 7949*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7950*4bdc9457SAndroid Build Coastguard Worker } 7951*4bdc9457SAndroid Build Coastguard Worker } 7952*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_gt_4_subtile)7953*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_gt_4_subtile) { 7954*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7955*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7956*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7957*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 7958*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7959*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7960*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7961*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7962*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7963*4bdc9457SAndroid Build Coastguard Worker .m(m) 7964*4bdc9457SAndroid Build Coastguard Worker .n(n) 7965*4bdc9457SAndroid Build Coastguard Worker .k(k) 7966*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7967*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7968*4bdc9457SAndroid Build Coastguard Worker } 7969*4bdc9457SAndroid Build Coastguard Worker } 7970*4bdc9457SAndroid Build Coastguard Worker } 7971*4bdc9457SAndroid Build Coastguard Worker } 7972*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_div_4)7973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_div_4) { 7974*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7975*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7976*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7977*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7978*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7979*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7980*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7981*4bdc9457SAndroid Build Coastguard Worker .m(6) 7982*4bdc9457SAndroid Build Coastguard Worker .n(8) 7983*4bdc9457SAndroid Build Coastguard Worker .k(k) 7984*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7985*4bdc9457SAndroid Build Coastguard Worker } 7986*4bdc9457SAndroid Build Coastguard Worker } 7987*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_div_4_strided_a)7988*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_div_4_strided_a) { 7989*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7990*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7991*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7992*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7993*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7994*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7995*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7996*4bdc9457SAndroid Build Coastguard Worker .m(6) 7997*4bdc9457SAndroid Build Coastguard Worker .n(8) 7998*4bdc9457SAndroid Build Coastguard Worker .k(k) 7999*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 8000*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8001*4bdc9457SAndroid Build Coastguard Worker } 8002*4bdc9457SAndroid Build Coastguard Worker } 8003*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_div_4_subtile)8004*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_div_4_subtile) { 8005*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8006*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 8007*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8008*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8009*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8010*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8011*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8012*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8013*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8014*4bdc9457SAndroid Build Coastguard Worker .m(m) 8015*4bdc9457SAndroid Build Coastguard Worker .n(n) 8016*4bdc9457SAndroid Build Coastguard Worker .k(k) 8017*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8018*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8019*4bdc9457SAndroid Build Coastguard Worker } 8020*4bdc9457SAndroid Build Coastguard Worker } 8021*4bdc9457SAndroid Build Coastguard Worker } 8022*4bdc9457SAndroid Build Coastguard Worker } 8023*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_gt_8)8024*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_gt_8) { 8025*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8026*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8027*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8028*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8029*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8030*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8031*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8032*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8033*4bdc9457SAndroid Build Coastguard Worker .m(6) 8034*4bdc9457SAndroid Build Coastguard Worker .n(n) 8035*4bdc9457SAndroid Build Coastguard Worker .k(k) 8036*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8037*4bdc9457SAndroid Build Coastguard Worker } 8038*4bdc9457SAndroid Build Coastguard Worker } 8039*4bdc9457SAndroid Build Coastguard Worker } 8040*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_gt_8_strided_cn)8041*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 8042*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8043*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8044*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8045*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8046*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8047*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8048*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8049*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8050*4bdc9457SAndroid Build Coastguard Worker .m(6) 8051*4bdc9457SAndroid Build Coastguard Worker .n(n) 8052*4bdc9457SAndroid Build Coastguard Worker .k(k) 8053*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8054*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8055*4bdc9457SAndroid Build Coastguard Worker } 8056*4bdc9457SAndroid Build Coastguard Worker } 8057*4bdc9457SAndroid Build Coastguard Worker } 8058*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_gt_8_strided_a)8059*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_gt_8_strided_a) { 8060*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8061*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8062*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8063*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8064*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8065*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8066*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8067*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8068*4bdc9457SAndroid Build Coastguard Worker .m(6) 8069*4bdc9457SAndroid Build Coastguard Worker .n(n) 8070*4bdc9457SAndroid Build Coastguard Worker .k(k) 8071*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 8072*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8073*4bdc9457SAndroid Build Coastguard Worker } 8074*4bdc9457SAndroid Build Coastguard Worker } 8075*4bdc9457SAndroid Build Coastguard Worker } 8076*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_gt_8_subtile)8077*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_gt_8_subtile) { 8078*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8079*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8080*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8081*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8082*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8083*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8084*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8085*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8086*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8087*4bdc9457SAndroid Build Coastguard Worker .m(m) 8088*4bdc9457SAndroid Build Coastguard Worker .n(n) 8089*4bdc9457SAndroid Build Coastguard Worker .k(k) 8090*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8091*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8092*4bdc9457SAndroid Build Coastguard Worker } 8093*4bdc9457SAndroid Build Coastguard Worker } 8094*4bdc9457SAndroid Build Coastguard Worker } 8095*4bdc9457SAndroid Build Coastguard Worker } 8096*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_div_8)8097*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_div_8) { 8098*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8099*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8100*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8101*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8102*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8103*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8104*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8105*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8106*4bdc9457SAndroid Build Coastguard Worker .m(6) 8107*4bdc9457SAndroid Build Coastguard Worker .n(n) 8108*4bdc9457SAndroid Build Coastguard Worker .k(k) 8109*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8110*4bdc9457SAndroid Build Coastguard Worker } 8111*4bdc9457SAndroid Build Coastguard Worker } 8112*4bdc9457SAndroid Build Coastguard Worker } 8113*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_div_8_strided_cn)8114*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_div_8_strided_cn) { 8115*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8116*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8117*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8118*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8119*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8120*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8121*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8122*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8123*4bdc9457SAndroid Build Coastguard Worker .m(6) 8124*4bdc9457SAndroid Build Coastguard Worker .n(n) 8125*4bdc9457SAndroid Build Coastguard Worker .k(k) 8126*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8127*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8128*4bdc9457SAndroid Build Coastguard Worker } 8129*4bdc9457SAndroid Build Coastguard Worker } 8130*4bdc9457SAndroid Build Coastguard Worker } 8131*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_div_8_strided_a)8132*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_div_8_strided_a) { 8133*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8134*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8135*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8136*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8137*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8138*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8139*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8140*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8141*4bdc9457SAndroid Build Coastguard Worker .m(6) 8142*4bdc9457SAndroid Build Coastguard Worker .n(n) 8143*4bdc9457SAndroid Build Coastguard Worker .k(k) 8144*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 8145*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8146*4bdc9457SAndroid Build Coastguard Worker } 8147*4bdc9457SAndroid Build Coastguard Worker } 8148*4bdc9457SAndroid Build Coastguard Worker } 8149*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_div_8_subtile)8150*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_div_8_subtile) { 8151*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8152*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8153*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8154*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8155*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8156*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8157*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8158*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8159*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8160*4bdc9457SAndroid Build Coastguard Worker .m(m) 8161*4bdc9457SAndroid Build Coastguard Worker .n(n) 8162*4bdc9457SAndroid Build Coastguard Worker .k(k) 8163*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8164*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8165*4bdc9457SAndroid Build Coastguard Worker } 8166*4bdc9457SAndroid Build Coastguard Worker } 8167*4bdc9457SAndroid Build Coastguard Worker } 8168*4bdc9457SAndroid Build Coastguard Worker } 8169*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,strided_cm_subtile)8170*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, strided_cm_subtile) { 8171*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8172*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8173*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8174*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8175*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8176*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8177*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8178*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8179*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8180*4bdc9457SAndroid Build Coastguard Worker .m(m) 8181*4bdc9457SAndroid Build Coastguard Worker .n(n) 8182*4bdc9457SAndroid Build Coastguard Worker .k(k) 8183*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 8184*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8185*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8186*4bdc9457SAndroid Build Coastguard Worker } 8187*4bdc9457SAndroid Build Coastguard Worker } 8188*4bdc9457SAndroid Build Coastguard Worker } 8189*4bdc9457SAndroid Build Coastguard Worker } 8190*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,qmin)8191*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, qmin) { 8192*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8193*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8194*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8195*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8196*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8197*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8198*4bdc9457SAndroid Build Coastguard Worker .m(6) 8199*4bdc9457SAndroid Build Coastguard Worker .n(8) 8200*4bdc9457SAndroid Build Coastguard Worker .k(4) 8201*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8203*4bdc9457SAndroid Build Coastguard Worker } 8204*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,qmax)8205*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, qmax) { 8206*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8207*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8208*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8209*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8210*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8211*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8212*4bdc9457SAndroid Build Coastguard Worker .m(6) 8213*4bdc9457SAndroid Build Coastguard Worker .n(8) 8214*4bdc9457SAndroid Build Coastguard Worker .k(4) 8215*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8216*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8217*4bdc9457SAndroid Build Coastguard Worker } 8218*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64,strided_cm)8219*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__NEONFP16ARITH_LD64, strided_cm) { 8220*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8221*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8222*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8223*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8224*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8225*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8226*4bdc9457SAndroid Build Coastguard Worker .m(6) 8227*4bdc9457SAndroid Build Coastguard Worker .n(8) 8228*4bdc9457SAndroid Build Coastguard Worker .k(4) 8229*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 8230*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8231*4bdc9457SAndroid Build Coastguard Worker } 8232*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 8233*4bdc9457SAndroid Build Coastguard Worker 8234*4bdc9457SAndroid Build Coastguard Worker 8235*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4)8236*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4) { 8237*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8238*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8239*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8240*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8241*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8242*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8243*4bdc9457SAndroid Build Coastguard Worker .m(6) 8244*4bdc9457SAndroid Build Coastguard Worker .n(16) 8245*4bdc9457SAndroid Build Coastguard Worker .k(4) 8246*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8247*4bdc9457SAndroid Build Coastguard Worker } 8248*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,strided_cn)8249*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, strided_cn) { 8250*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8251*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8252*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8253*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8254*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8255*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8256*4bdc9457SAndroid Build Coastguard Worker .m(6) 8257*4bdc9457SAndroid Build Coastguard Worker .n(16) 8258*4bdc9457SAndroid Build Coastguard Worker .k(4) 8259*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8260*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8261*4bdc9457SAndroid Build Coastguard Worker } 8262*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4_strided_a)8263*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4_strided_a) { 8264*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8265*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8266*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8267*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8268*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8269*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8270*4bdc9457SAndroid Build Coastguard Worker .m(6) 8271*4bdc9457SAndroid Build Coastguard Worker .n(16) 8272*4bdc9457SAndroid Build Coastguard Worker .k(4) 8273*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 8274*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8275*4bdc9457SAndroid Build Coastguard Worker } 8276*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4_subtile)8277*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4_subtile) { 8278*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8279*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8280*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8281*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8282*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8283*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8284*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8285*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8286*4bdc9457SAndroid Build Coastguard Worker .m(m) 8287*4bdc9457SAndroid Build Coastguard Worker .n(n) 8288*4bdc9457SAndroid Build Coastguard Worker .k(4) 8289*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8290*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8291*4bdc9457SAndroid Build Coastguard Worker } 8292*4bdc9457SAndroid Build Coastguard Worker } 8293*4bdc9457SAndroid Build Coastguard Worker } 8294*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4_subtile_m)8295*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 8296*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8297*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8298*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8299*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8300*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8301*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8302*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8303*4bdc9457SAndroid Build Coastguard Worker .m(m) 8304*4bdc9457SAndroid Build Coastguard Worker .n(16) 8305*4bdc9457SAndroid Build Coastguard Worker .k(4) 8306*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8307*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8308*4bdc9457SAndroid Build Coastguard Worker } 8309*4bdc9457SAndroid Build Coastguard Worker } 8310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4_subtile_n)8311*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 8312*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8313*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8314*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8315*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8316*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8317*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8318*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8319*4bdc9457SAndroid Build Coastguard Worker .m(6) 8320*4bdc9457SAndroid Build Coastguard Worker .n(n) 8321*4bdc9457SAndroid Build Coastguard Worker .k(4) 8322*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8323*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8324*4bdc9457SAndroid Build Coastguard Worker } 8325*4bdc9457SAndroid Build Coastguard Worker } 8326*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_lt_4)8327*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_lt_4) { 8328*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8329*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 8330*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8331*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8332*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8333*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8334*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8335*4bdc9457SAndroid Build Coastguard Worker .m(6) 8336*4bdc9457SAndroid Build Coastguard Worker .n(16) 8337*4bdc9457SAndroid Build Coastguard Worker .k(k) 8338*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8339*4bdc9457SAndroid Build Coastguard Worker } 8340*4bdc9457SAndroid Build Coastguard Worker } 8341*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_lt_4_strided_a)8342*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_lt_4_strided_a) { 8343*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8344*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 8345*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8346*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8347*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8348*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8349*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8350*4bdc9457SAndroid Build Coastguard Worker .m(6) 8351*4bdc9457SAndroid Build Coastguard Worker .n(16) 8352*4bdc9457SAndroid Build Coastguard Worker .k(k) 8353*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 8354*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8355*4bdc9457SAndroid Build Coastguard Worker } 8356*4bdc9457SAndroid Build Coastguard Worker } 8357*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_lt_4_subtile)8358*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_lt_4_subtile) { 8359*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8360*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 8361*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8362*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8363*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8364*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8365*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8366*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8367*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8368*4bdc9457SAndroid Build Coastguard Worker .m(m) 8369*4bdc9457SAndroid Build Coastguard Worker .n(n) 8370*4bdc9457SAndroid Build Coastguard Worker .k(k) 8371*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8372*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8373*4bdc9457SAndroid Build Coastguard Worker } 8374*4bdc9457SAndroid Build Coastguard Worker } 8375*4bdc9457SAndroid Build Coastguard Worker } 8376*4bdc9457SAndroid Build Coastguard Worker } 8377*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_gt_4)8378*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_gt_4) { 8379*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8380*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 8381*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8382*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8383*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8384*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8385*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8386*4bdc9457SAndroid Build Coastguard Worker .m(6) 8387*4bdc9457SAndroid Build Coastguard Worker .n(16) 8388*4bdc9457SAndroid Build Coastguard Worker .k(k) 8389*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8390*4bdc9457SAndroid Build Coastguard Worker } 8391*4bdc9457SAndroid Build Coastguard Worker } 8392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_gt_4_strided_a)8393*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_gt_4_strided_a) { 8394*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8395*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 8396*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8397*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8398*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8399*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8400*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8401*4bdc9457SAndroid Build Coastguard Worker .m(6) 8402*4bdc9457SAndroid Build Coastguard Worker .n(16) 8403*4bdc9457SAndroid Build Coastguard Worker .k(k) 8404*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 8405*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8406*4bdc9457SAndroid Build Coastguard Worker } 8407*4bdc9457SAndroid Build Coastguard Worker } 8408*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_gt_4_subtile)8409*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_gt_4_subtile) { 8410*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8411*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 8412*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8413*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8414*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8415*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8416*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8417*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8418*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8419*4bdc9457SAndroid Build Coastguard Worker .m(m) 8420*4bdc9457SAndroid Build Coastguard Worker .n(n) 8421*4bdc9457SAndroid Build Coastguard Worker .k(k) 8422*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8423*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8424*4bdc9457SAndroid Build Coastguard Worker } 8425*4bdc9457SAndroid Build Coastguard Worker } 8426*4bdc9457SAndroid Build Coastguard Worker } 8427*4bdc9457SAndroid Build Coastguard Worker } 8428*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_div_4)8429*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_div_4) { 8430*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8431*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 8432*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8433*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8434*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8435*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8436*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8437*4bdc9457SAndroid Build Coastguard Worker .m(6) 8438*4bdc9457SAndroid Build Coastguard Worker .n(16) 8439*4bdc9457SAndroid Build Coastguard Worker .k(k) 8440*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8441*4bdc9457SAndroid Build Coastguard Worker } 8442*4bdc9457SAndroid Build Coastguard Worker } 8443*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_div_4_strided_a)8444*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_div_4_strided_a) { 8445*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8446*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 8447*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8448*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8449*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8450*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8451*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8452*4bdc9457SAndroid Build Coastguard Worker .m(6) 8453*4bdc9457SAndroid Build Coastguard Worker .n(16) 8454*4bdc9457SAndroid Build Coastguard Worker .k(k) 8455*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 8456*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8457*4bdc9457SAndroid Build Coastguard Worker } 8458*4bdc9457SAndroid Build Coastguard Worker } 8459*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_div_4_subtile)8460*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_div_4_subtile) { 8461*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8462*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 8463*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8464*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8465*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8466*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8467*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8468*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8469*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8470*4bdc9457SAndroid Build Coastguard Worker .m(m) 8471*4bdc9457SAndroid Build Coastguard Worker .n(n) 8472*4bdc9457SAndroid Build Coastguard Worker .k(k) 8473*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8474*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8475*4bdc9457SAndroid Build Coastguard Worker } 8476*4bdc9457SAndroid Build Coastguard Worker } 8477*4bdc9457SAndroid Build Coastguard Worker } 8478*4bdc9457SAndroid Build Coastguard Worker } 8479*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_gt_16)8480*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_gt_16) { 8481*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8482*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8483*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8484*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8485*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8486*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8487*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8488*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8489*4bdc9457SAndroid Build Coastguard Worker .m(6) 8490*4bdc9457SAndroid Build Coastguard Worker .n(n) 8491*4bdc9457SAndroid Build Coastguard Worker .k(k) 8492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8493*4bdc9457SAndroid Build Coastguard Worker } 8494*4bdc9457SAndroid Build Coastguard Worker } 8495*4bdc9457SAndroid Build Coastguard Worker } 8496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_gt_16_strided_cn)8497*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 8498*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8499*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8500*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8501*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8502*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8503*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8504*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8505*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8506*4bdc9457SAndroid Build Coastguard Worker .m(6) 8507*4bdc9457SAndroid Build Coastguard Worker .n(n) 8508*4bdc9457SAndroid Build Coastguard Worker .k(k) 8509*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8510*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8511*4bdc9457SAndroid Build Coastguard Worker } 8512*4bdc9457SAndroid Build Coastguard Worker } 8513*4bdc9457SAndroid Build Coastguard Worker } 8514*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_gt_16_strided_a)8515*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_gt_16_strided_a) { 8516*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8517*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8518*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8519*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8520*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8521*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8522*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8523*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8524*4bdc9457SAndroid Build Coastguard Worker .m(6) 8525*4bdc9457SAndroid Build Coastguard Worker .n(n) 8526*4bdc9457SAndroid Build Coastguard Worker .k(k) 8527*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 8528*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8529*4bdc9457SAndroid Build Coastguard Worker } 8530*4bdc9457SAndroid Build Coastguard Worker } 8531*4bdc9457SAndroid Build Coastguard Worker } 8532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_gt_16_subtile)8533*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_gt_16_subtile) { 8534*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8535*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8536*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8537*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8538*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8539*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8540*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8541*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8542*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8543*4bdc9457SAndroid Build Coastguard Worker .m(m) 8544*4bdc9457SAndroid Build Coastguard Worker .n(n) 8545*4bdc9457SAndroid Build Coastguard Worker .k(k) 8546*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8547*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8548*4bdc9457SAndroid Build Coastguard Worker } 8549*4bdc9457SAndroid Build Coastguard Worker } 8550*4bdc9457SAndroid Build Coastguard Worker } 8551*4bdc9457SAndroid Build Coastguard Worker } 8552*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_div_16)8553*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_div_16) { 8554*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8555*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8556*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8557*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8558*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8559*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8560*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8561*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8562*4bdc9457SAndroid Build Coastguard Worker .m(6) 8563*4bdc9457SAndroid Build Coastguard Worker .n(n) 8564*4bdc9457SAndroid Build Coastguard Worker .k(k) 8565*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8566*4bdc9457SAndroid Build Coastguard Worker } 8567*4bdc9457SAndroid Build Coastguard Worker } 8568*4bdc9457SAndroid Build Coastguard Worker } 8569*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_div_16_strided_cn)8570*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_div_16_strided_cn) { 8571*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8572*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8573*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8574*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8575*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8576*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8577*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8578*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8579*4bdc9457SAndroid Build Coastguard Worker .m(6) 8580*4bdc9457SAndroid Build Coastguard Worker .n(n) 8581*4bdc9457SAndroid Build Coastguard Worker .k(k) 8582*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8583*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8584*4bdc9457SAndroid Build Coastguard Worker } 8585*4bdc9457SAndroid Build Coastguard Worker } 8586*4bdc9457SAndroid Build Coastguard Worker } 8587*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_div_16_strided_a)8588*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_div_16_strided_a) { 8589*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8590*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8591*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8592*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8593*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8594*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8595*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8596*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8597*4bdc9457SAndroid Build Coastguard Worker .m(6) 8598*4bdc9457SAndroid Build Coastguard Worker .n(n) 8599*4bdc9457SAndroid Build Coastguard Worker .k(k) 8600*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 8601*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8602*4bdc9457SAndroid Build Coastguard Worker } 8603*4bdc9457SAndroid Build Coastguard Worker } 8604*4bdc9457SAndroid Build Coastguard Worker } 8605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_div_16_subtile)8606*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_div_16_subtile) { 8607*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8608*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8609*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8610*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8611*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8612*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8613*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8614*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8615*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8616*4bdc9457SAndroid Build Coastguard Worker .m(m) 8617*4bdc9457SAndroid Build Coastguard Worker .n(n) 8618*4bdc9457SAndroid Build Coastguard Worker .k(k) 8619*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8621*4bdc9457SAndroid Build Coastguard Worker } 8622*4bdc9457SAndroid Build Coastguard Worker } 8623*4bdc9457SAndroid Build Coastguard Worker } 8624*4bdc9457SAndroid Build Coastguard Worker } 8625*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,strided_cm_subtile)8626*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, strided_cm_subtile) { 8627*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8628*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8629*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8630*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 8631*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8632*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8633*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8634*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8635*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8636*4bdc9457SAndroid Build Coastguard Worker .m(m) 8637*4bdc9457SAndroid Build Coastguard Worker .n(n) 8638*4bdc9457SAndroid Build Coastguard Worker .k(k) 8639*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 8640*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8641*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8642*4bdc9457SAndroid Build Coastguard Worker } 8643*4bdc9457SAndroid Build Coastguard Worker } 8644*4bdc9457SAndroid Build Coastguard Worker } 8645*4bdc9457SAndroid Build Coastguard Worker } 8646*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,qmin)8647*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, qmin) { 8648*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8649*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8650*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8651*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8652*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8653*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8654*4bdc9457SAndroid Build Coastguard Worker .m(6) 8655*4bdc9457SAndroid Build Coastguard Worker .n(16) 8656*4bdc9457SAndroid Build Coastguard Worker .k(4) 8657*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8658*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8659*4bdc9457SAndroid Build Coastguard Worker } 8660*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,qmax)8661*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, qmax) { 8662*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8663*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8664*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8665*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8666*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8667*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8668*4bdc9457SAndroid Build Coastguard Worker .m(6) 8669*4bdc9457SAndroid Build Coastguard Worker .n(16) 8670*4bdc9457SAndroid Build Coastguard Worker .k(4) 8671*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8672*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8673*4bdc9457SAndroid Build Coastguard Worker } 8674*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64,strided_cm)8675*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X16__NEONFP16ARITH_LD64, strided_cm) { 8676*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8677*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8678*4bdc9457SAndroid Build Coastguard Worker .mr(6) 8679*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8680*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8681*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8682*4bdc9457SAndroid Build Coastguard Worker .m(6) 8683*4bdc9457SAndroid Build Coastguard Worker .n(16) 8684*4bdc9457SAndroid Build Coastguard Worker .k(4) 8685*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 8686*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8687*4bdc9457SAndroid Build Coastguard Worker } 8688*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 8689*4bdc9457SAndroid Build Coastguard Worker 8690*4bdc9457SAndroid Build Coastguard Worker 8691*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4)8692*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4) { 8693*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8694*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8695*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8696*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8697*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8698*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8699*4bdc9457SAndroid Build Coastguard Worker .m(8) 8700*4bdc9457SAndroid Build Coastguard Worker .n(8) 8701*4bdc9457SAndroid Build Coastguard Worker .k(4) 8702*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8703*4bdc9457SAndroid Build Coastguard Worker } 8704*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,strided_cn)8705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, strided_cn) { 8706*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8707*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8708*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8709*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8710*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8711*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8712*4bdc9457SAndroid Build Coastguard Worker .m(8) 8713*4bdc9457SAndroid Build Coastguard Worker .n(8) 8714*4bdc9457SAndroid Build Coastguard Worker .k(4) 8715*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8716*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8717*4bdc9457SAndroid Build Coastguard Worker } 8718*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4_strided_a)8719*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4_strided_a) { 8720*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8721*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8722*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8723*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8724*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8725*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8726*4bdc9457SAndroid Build Coastguard Worker .m(8) 8727*4bdc9457SAndroid Build Coastguard Worker .n(8) 8728*4bdc9457SAndroid Build Coastguard Worker .k(4) 8729*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 8730*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8731*4bdc9457SAndroid Build Coastguard Worker } 8732*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4_subtile)8733*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4_subtile) { 8734*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8735*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8736*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 8737*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8738*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8739*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8740*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8741*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8742*4bdc9457SAndroid Build Coastguard Worker .m(m) 8743*4bdc9457SAndroid Build Coastguard Worker .n(n) 8744*4bdc9457SAndroid Build Coastguard Worker .k(4) 8745*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8746*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8747*4bdc9457SAndroid Build Coastguard Worker } 8748*4bdc9457SAndroid Build Coastguard Worker } 8749*4bdc9457SAndroid Build Coastguard Worker } 8750*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4_subtile_m)8751*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 8752*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8753*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 8754*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8755*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8756*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8757*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8758*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8759*4bdc9457SAndroid Build Coastguard Worker .m(m) 8760*4bdc9457SAndroid Build Coastguard Worker .n(8) 8761*4bdc9457SAndroid Build Coastguard Worker .k(4) 8762*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8763*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8764*4bdc9457SAndroid Build Coastguard Worker } 8765*4bdc9457SAndroid Build Coastguard Worker } 8766*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4_subtile_n)8767*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 8768*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8769*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8770*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8771*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8772*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8773*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8774*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8775*4bdc9457SAndroid Build Coastguard Worker .m(8) 8776*4bdc9457SAndroid Build Coastguard Worker .n(n) 8777*4bdc9457SAndroid Build Coastguard Worker .k(4) 8778*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8779*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8780*4bdc9457SAndroid Build Coastguard Worker } 8781*4bdc9457SAndroid Build Coastguard Worker } 8782*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_lt_4)8783*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_lt_4) { 8784*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8785*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 8786*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8787*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8788*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8789*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8790*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8791*4bdc9457SAndroid Build Coastguard Worker .m(8) 8792*4bdc9457SAndroid Build Coastguard Worker .n(8) 8793*4bdc9457SAndroid Build Coastguard Worker .k(k) 8794*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8795*4bdc9457SAndroid Build Coastguard Worker } 8796*4bdc9457SAndroid Build Coastguard Worker } 8797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_lt_4_strided_a)8798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_lt_4_strided_a) { 8799*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8800*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 8801*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8802*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8803*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8804*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8805*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8806*4bdc9457SAndroid Build Coastguard Worker .m(8) 8807*4bdc9457SAndroid Build Coastguard Worker .n(8) 8808*4bdc9457SAndroid Build Coastguard Worker .k(k) 8809*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 8810*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8811*4bdc9457SAndroid Build Coastguard Worker } 8812*4bdc9457SAndroid Build Coastguard Worker } 8813*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_lt_4_subtile)8814*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_lt_4_subtile) { 8815*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8816*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 8817*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8818*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 8819*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8820*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8821*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8822*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8823*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8824*4bdc9457SAndroid Build Coastguard Worker .m(m) 8825*4bdc9457SAndroid Build Coastguard Worker .n(n) 8826*4bdc9457SAndroid Build Coastguard Worker .k(k) 8827*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8828*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8829*4bdc9457SAndroid Build Coastguard Worker } 8830*4bdc9457SAndroid Build Coastguard Worker } 8831*4bdc9457SAndroid Build Coastguard Worker } 8832*4bdc9457SAndroid Build Coastguard Worker } 8833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_gt_4)8834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_gt_4) { 8835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8836*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 8837*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8838*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8839*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8840*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8841*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8842*4bdc9457SAndroid Build Coastguard Worker .m(8) 8843*4bdc9457SAndroid Build Coastguard Worker .n(8) 8844*4bdc9457SAndroid Build Coastguard Worker .k(k) 8845*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8846*4bdc9457SAndroid Build Coastguard Worker } 8847*4bdc9457SAndroid Build Coastguard Worker } 8848*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_gt_4_strided_a)8849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_gt_4_strided_a) { 8850*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8851*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 8852*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8853*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8854*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8855*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8856*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8857*4bdc9457SAndroid Build Coastguard Worker .m(8) 8858*4bdc9457SAndroid Build Coastguard Worker .n(8) 8859*4bdc9457SAndroid Build Coastguard Worker .k(k) 8860*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 8861*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8862*4bdc9457SAndroid Build Coastguard Worker } 8863*4bdc9457SAndroid Build Coastguard Worker } 8864*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_gt_4_subtile)8865*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_gt_4_subtile) { 8866*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8867*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 8868*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8869*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 8870*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8871*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8872*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8873*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8874*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8875*4bdc9457SAndroid Build Coastguard Worker .m(m) 8876*4bdc9457SAndroid Build Coastguard Worker .n(n) 8877*4bdc9457SAndroid Build Coastguard Worker .k(k) 8878*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8879*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8880*4bdc9457SAndroid Build Coastguard Worker } 8881*4bdc9457SAndroid Build Coastguard Worker } 8882*4bdc9457SAndroid Build Coastguard Worker } 8883*4bdc9457SAndroid Build Coastguard Worker } 8884*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_div_4)8885*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_div_4) { 8886*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8887*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 8888*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8889*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8890*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8891*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8892*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8893*4bdc9457SAndroid Build Coastguard Worker .m(8) 8894*4bdc9457SAndroid Build Coastguard Worker .n(8) 8895*4bdc9457SAndroid Build Coastguard Worker .k(k) 8896*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8897*4bdc9457SAndroid Build Coastguard Worker } 8898*4bdc9457SAndroid Build Coastguard Worker } 8899*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_div_4_strided_a)8900*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_div_4_strided_a) { 8901*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8902*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 8903*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8904*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8905*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8906*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8907*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8908*4bdc9457SAndroid Build Coastguard Worker .m(8) 8909*4bdc9457SAndroid Build Coastguard Worker .n(8) 8910*4bdc9457SAndroid Build Coastguard Worker .k(k) 8911*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 8912*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8913*4bdc9457SAndroid Build Coastguard Worker } 8914*4bdc9457SAndroid Build Coastguard Worker } 8915*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_div_4_subtile)8916*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_div_4_subtile) { 8917*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8918*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 8919*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8920*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 8921*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8922*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8923*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8924*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8925*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8926*4bdc9457SAndroid Build Coastguard Worker .m(m) 8927*4bdc9457SAndroid Build Coastguard Worker .n(n) 8928*4bdc9457SAndroid Build Coastguard Worker .k(k) 8929*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8930*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8931*4bdc9457SAndroid Build Coastguard Worker } 8932*4bdc9457SAndroid Build Coastguard Worker } 8933*4bdc9457SAndroid Build Coastguard Worker } 8934*4bdc9457SAndroid Build Coastguard Worker } 8935*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_gt_8)8936*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_gt_8) { 8937*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8938*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8939*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8940*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8941*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8942*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8943*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8944*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8945*4bdc9457SAndroid Build Coastguard Worker .m(8) 8946*4bdc9457SAndroid Build Coastguard Worker .n(n) 8947*4bdc9457SAndroid Build Coastguard Worker .k(k) 8948*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8949*4bdc9457SAndroid Build Coastguard Worker } 8950*4bdc9457SAndroid Build Coastguard Worker } 8951*4bdc9457SAndroid Build Coastguard Worker } 8952*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_gt_8_strided_cn)8953*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 8954*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8955*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8956*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8957*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8958*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8959*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8960*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8961*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8962*4bdc9457SAndroid Build Coastguard Worker .m(8) 8963*4bdc9457SAndroid Build Coastguard Worker .n(n) 8964*4bdc9457SAndroid Build Coastguard Worker .k(k) 8965*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8966*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8967*4bdc9457SAndroid Build Coastguard Worker } 8968*4bdc9457SAndroid Build Coastguard Worker } 8969*4bdc9457SAndroid Build Coastguard Worker } 8970*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_gt_8_strided_a)8971*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_gt_8_strided_a) { 8972*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8973*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8974*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8975*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8976*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8977*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8978*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8979*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8980*4bdc9457SAndroid Build Coastguard Worker .m(8) 8981*4bdc9457SAndroid Build Coastguard Worker .n(n) 8982*4bdc9457SAndroid Build Coastguard Worker .k(k) 8983*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 8984*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 8985*4bdc9457SAndroid Build Coastguard Worker } 8986*4bdc9457SAndroid Build Coastguard Worker } 8987*4bdc9457SAndroid Build Coastguard Worker } 8988*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_gt_8_subtile)8989*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_gt_8_subtile) { 8990*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 8991*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8992*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 8993*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 8994*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8995*4bdc9457SAndroid Build Coastguard Worker .mr(8) 8996*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8997*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8998*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8999*4bdc9457SAndroid Build Coastguard Worker .m(m) 9000*4bdc9457SAndroid Build Coastguard Worker .n(n) 9001*4bdc9457SAndroid Build Coastguard Worker .k(k) 9002*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9003*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9004*4bdc9457SAndroid Build Coastguard Worker } 9005*4bdc9457SAndroid Build Coastguard Worker } 9006*4bdc9457SAndroid Build Coastguard Worker } 9007*4bdc9457SAndroid Build Coastguard Worker } 9008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_div_8)9009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_div_8) { 9010*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9011*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9012*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9013*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9014*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9015*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9016*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9017*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9018*4bdc9457SAndroid Build Coastguard Worker .m(8) 9019*4bdc9457SAndroid Build Coastguard Worker .n(n) 9020*4bdc9457SAndroid Build Coastguard Worker .k(k) 9021*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9022*4bdc9457SAndroid Build Coastguard Worker } 9023*4bdc9457SAndroid Build Coastguard Worker } 9024*4bdc9457SAndroid Build Coastguard Worker } 9025*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_div_8_strided_cn)9026*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_div_8_strided_cn) { 9027*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9028*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9029*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9030*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9031*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9032*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9033*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9034*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9035*4bdc9457SAndroid Build Coastguard Worker .m(8) 9036*4bdc9457SAndroid Build Coastguard Worker .n(n) 9037*4bdc9457SAndroid Build Coastguard Worker .k(k) 9038*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9039*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9040*4bdc9457SAndroid Build Coastguard Worker } 9041*4bdc9457SAndroid Build Coastguard Worker } 9042*4bdc9457SAndroid Build Coastguard Worker } 9043*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_div_8_strided_a)9044*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_div_8_strided_a) { 9045*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9046*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9047*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9048*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9049*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9050*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9051*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9052*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9053*4bdc9457SAndroid Build Coastguard Worker .m(8) 9054*4bdc9457SAndroid Build Coastguard Worker .n(n) 9055*4bdc9457SAndroid Build Coastguard Worker .k(k) 9056*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 9057*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9058*4bdc9457SAndroid Build Coastguard Worker } 9059*4bdc9457SAndroid Build Coastguard Worker } 9060*4bdc9457SAndroid Build Coastguard Worker } 9061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_div_8_subtile)9062*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_div_8_subtile) { 9063*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9064*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9065*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9066*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9067*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9068*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9069*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9070*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9071*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9072*4bdc9457SAndroid Build Coastguard Worker .m(m) 9073*4bdc9457SAndroid Build Coastguard Worker .n(n) 9074*4bdc9457SAndroid Build Coastguard Worker .k(k) 9075*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9076*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9077*4bdc9457SAndroid Build Coastguard Worker } 9078*4bdc9457SAndroid Build Coastguard Worker } 9079*4bdc9457SAndroid Build Coastguard Worker } 9080*4bdc9457SAndroid Build Coastguard Worker } 9081*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,strided_cm_subtile)9082*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, strided_cm_subtile) { 9083*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9084*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9085*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9086*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9087*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9088*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9089*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9090*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9091*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9092*4bdc9457SAndroid Build Coastguard Worker .m(m) 9093*4bdc9457SAndroid Build Coastguard Worker .n(n) 9094*4bdc9457SAndroid Build Coastguard Worker .k(k) 9095*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9096*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9097*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9098*4bdc9457SAndroid Build Coastguard Worker } 9099*4bdc9457SAndroid Build Coastguard Worker } 9100*4bdc9457SAndroid Build Coastguard Worker } 9101*4bdc9457SAndroid Build Coastguard Worker } 9102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,qmin)9103*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, qmin) { 9104*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9105*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9106*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9107*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9108*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9109*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9110*4bdc9457SAndroid Build Coastguard Worker .m(8) 9111*4bdc9457SAndroid Build Coastguard Worker .n(8) 9112*4bdc9457SAndroid Build Coastguard Worker .k(4) 9113*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 9114*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9115*4bdc9457SAndroid Build Coastguard Worker } 9116*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,qmax)9117*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, qmax) { 9118*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9119*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9120*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9121*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9122*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9123*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9124*4bdc9457SAndroid Build Coastguard Worker .m(8) 9125*4bdc9457SAndroid Build Coastguard Worker .n(8) 9126*4bdc9457SAndroid Build Coastguard Worker .k(4) 9127*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 9128*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9129*4bdc9457SAndroid Build Coastguard Worker } 9130*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64,strided_cm)9131*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X8__NEONFP16ARITH_LD64, strided_cm) { 9132*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9133*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9134*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9135*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9136*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9137*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9138*4bdc9457SAndroid Build Coastguard Worker .m(8) 9139*4bdc9457SAndroid Build Coastguard Worker .n(8) 9140*4bdc9457SAndroid Build Coastguard Worker .k(4) 9141*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9143*4bdc9457SAndroid Build Coastguard Worker } 9144*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 9145*4bdc9457SAndroid Build Coastguard Worker 9146*4bdc9457SAndroid Build Coastguard Worker 9147*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4)9148*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4) { 9149*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9150*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9151*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9152*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9153*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9154*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9155*4bdc9457SAndroid Build Coastguard Worker .m(8) 9156*4bdc9457SAndroid Build Coastguard Worker .n(16) 9157*4bdc9457SAndroid Build Coastguard Worker .k(4) 9158*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9159*4bdc9457SAndroid Build Coastguard Worker } 9160*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,strided_cn)9161*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, strided_cn) { 9162*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9163*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9164*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9165*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9166*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9167*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9168*4bdc9457SAndroid Build Coastguard Worker .m(8) 9169*4bdc9457SAndroid Build Coastguard Worker .n(16) 9170*4bdc9457SAndroid Build Coastguard Worker .k(4) 9171*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 9172*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9173*4bdc9457SAndroid Build Coastguard Worker } 9174*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4_strided_a)9175*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4_strided_a) { 9176*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9177*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9178*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9179*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9180*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9181*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9182*4bdc9457SAndroid Build Coastguard Worker .m(8) 9183*4bdc9457SAndroid Build Coastguard Worker .n(16) 9184*4bdc9457SAndroid Build Coastguard Worker .k(4) 9185*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 9186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9187*4bdc9457SAndroid Build Coastguard Worker } 9188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4_subtile)9189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4_subtile) { 9190*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9191*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9192*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9193*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9194*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9195*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9196*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9197*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9198*4bdc9457SAndroid Build Coastguard Worker .m(m) 9199*4bdc9457SAndroid Build Coastguard Worker .n(n) 9200*4bdc9457SAndroid Build Coastguard Worker .k(4) 9201*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9203*4bdc9457SAndroid Build Coastguard Worker } 9204*4bdc9457SAndroid Build Coastguard Worker } 9205*4bdc9457SAndroid Build Coastguard Worker } 9206*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4_subtile_m)9207*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 9208*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9209*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9210*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9211*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9212*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9213*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9214*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9215*4bdc9457SAndroid Build Coastguard Worker .m(m) 9216*4bdc9457SAndroid Build Coastguard Worker .n(16) 9217*4bdc9457SAndroid Build Coastguard Worker .k(4) 9218*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9219*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9220*4bdc9457SAndroid Build Coastguard Worker } 9221*4bdc9457SAndroid Build Coastguard Worker } 9222*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4_subtile_n)9223*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 9224*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9225*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9226*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9227*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9228*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9229*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9230*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9231*4bdc9457SAndroid Build Coastguard Worker .m(8) 9232*4bdc9457SAndroid Build Coastguard Worker .n(n) 9233*4bdc9457SAndroid Build Coastguard Worker .k(4) 9234*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9235*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9236*4bdc9457SAndroid Build Coastguard Worker } 9237*4bdc9457SAndroid Build Coastguard Worker } 9238*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_lt_4)9239*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_lt_4) { 9240*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9241*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 9242*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9243*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9244*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9245*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9246*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9247*4bdc9457SAndroid Build Coastguard Worker .m(8) 9248*4bdc9457SAndroid Build Coastguard Worker .n(16) 9249*4bdc9457SAndroid Build Coastguard Worker .k(k) 9250*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9251*4bdc9457SAndroid Build Coastguard Worker } 9252*4bdc9457SAndroid Build Coastguard Worker } 9253*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_lt_4_strided_a)9254*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_lt_4_strided_a) { 9255*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9256*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 9257*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9258*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9259*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9260*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9261*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9262*4bdc9457SAndroid Build Coastguard Worker .m(8) 9263*4bdc9457SAndroid Build Coastguard Worker .n(16) 9264*4bdc9457SAndroid Build Coastguard Worker .k(k) 9265*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 9266*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9267*4bdc9457SAndroid Build Coastguard Worker } 9268*4bdc9457SAndroid Build Coastguard Worker } 9269*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_lt_4_subtile)9270*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_lt_4_subtile) { 9271*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9272*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 9273*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9274*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9275*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9276*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9277*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9278*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9279*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9280*4bdc9457SAndroid Build Coastguard Worker .m(m) 9281*4bdc9457SAndroid Build Coastguard Worker .n(n) 9282*4bdc9457SAndroid Build Coastguard Worker .k(k) 9283*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9285*4bdc9457SAndroid Build Coastguard Worker } 9286*4bdc9457SAndroid Build Coastguard Worker } 9287*4bdc9457SAndroid Build Coastguard Worker } 9288*4bdc9457SAndroid Build Coastguard Worker } 9289*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_gt_4)9290*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_gt_4) { 9291*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9292*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 9293*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9294*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9295*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9296*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9297*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9298*4bdc9457SAndroid Build Coastguard Worker .m(8) 9299*4bdc9457SAndroid Build Coastguard Worker .n(16) 9300*4bdc9457SAndroid Build Coastguard Worker .k(k) 9301*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9302*4bdc9457SAndroid Build Coastguard Worker } 9303*4bdc9457SAndroid Build Coastguard Worker } 9304*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_gt_4_strided_a)9305*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_gt_4_strided_a) { 9306*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9307*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 9308*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9309*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9310*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9311*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9312*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9313*4bdc9457SAndroid Build Coastguard Worker .m(8) 9314*4bdc9457SAndroid Build Coastguard Worker .n(16) 9315*4bdc9457SAndroid Build Coastguard Worker .k(k) 9316*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 9317*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9318*4bdc9457SAndroid Build Coastguard Worker } 9319*4bdc9457SAndroid Build Coastguard Worker } 9320*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_gt_4_subtile)9321*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_gt_4_subtile) { 9322*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9323*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 9324*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9325*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9326*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9327*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9328*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9329*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9330*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9331*4bdc9457SAndroid Build Coastguard Worker .m(m) 9332*4bdc9457SAndroid Build Coastguard Worker .n(n) 9333*4bdc9457SAndroid Build Coastguard Worker .k(k) 9334*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9335*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9336*4bdc9457SAndroid Build Coastguard Worker } 9337*4bdc9457SAndroid Build Coastguard Worker } 9338*4bdc9457SAndroid Build Coastguard Worker } 9339*4bdc9457SAndroid Build Coastguard Worker } 9340*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_div_4)9341*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_div_4) { 9342*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9343*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 9344*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9345*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9346*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9347*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9348*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9349*4bdc9457SAndroid Build Coastguard Worker .m(8) 9350*4bdc9457SAndroid Build Coastguard Worker .n(16) 9351*4bdc9457SAndroid Build Coastguard Worker .k(k) 9352*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9353*4bdc9457SAndroid Build Coastguard Worker } 9354*4bdc9457SAndroid Build Coastguard Worker } 9355*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_div_4_strided_a)9356*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_div_4_strided_a) { 9357*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9358*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 9359*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9360*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9361*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9362*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9363*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9364*4bdc9457SAndroid Build Coastguard Worker .m(8) 9365*4bdc9457SAndroid Build Coastguard Worker .n(16) 9366*4bdc9457SAndroid Build Coastguard Worker .k(k) 9367*4bdc9457SAndroid Build Coastguard Worker .a_stride(43) 9368*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9369*4bdc9457SAndroid Build Coastguard Worker } 9370*4bdc9457SAndroid Build Coastguard Worker } 9371*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_div_4_subtile)9372*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_div_4_subtile) { 9373*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9374*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 9375*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9376*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9377*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9378*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9379*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9380*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9381*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9382*4bdc9457SAndroid Build Coastguard Worker .m(m) 9383*4bdc9457SAndroid Build Coastguard Worker .n(n) 9384*4bdc9457SAndroid Build Coastguard Worker .k(k) 9385*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9386*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9387*4bdc9457SAndroid Build Coastguard Worker } 9388*4bdc9457SAndroid Build Coastguard Worker } 9389*4bdc9457SAndroid Build Coastguard Worker } 9390*4bdc9457SAndroid Build Coastguard Worker } 9391*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_gt_16)9392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_gt_16) { 9393*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9394*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9395*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9396*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9397*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9398*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9399*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9400*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9401*4bdc9457SAndroid Build Coastguard Worker .m(8) 9402*4bdc9457SAndroid Build Coastguard Worker .n(n) 9403*4bdc9457SAndroid Build Coastguard Worker .k(k) 9404*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9405*4bdc9457SAndroid Build Coastguard Worker } 9406*4bdc9457SAndroid Build Coastguard Worker } 9407*4bdc9457SAndroid Build Coastguard Worker } 9408*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_gt_16_strided_cn)9409*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 9410*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9411*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9412*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9413*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9414*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9415*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9416*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9417*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9418*4bdc9457SAndroid Build Coastguard Worker .m(8) 9419*4bdc9457SAndroid Build Coastguard Worker .n(n) 9420*4bdc9457SAndroid Build Coastguard Worker .k(k) 9421*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 9422*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9423*4bdc9457SAndroid Build Coastguard Worker } 9424*4bdc9457SAndroid Build Coastguard Worker } 9425*4bdc9457SAndroid Build Coastguard Worker } 9426*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_gt_16_strided_a)9427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_gt_16_strided_a) { 9428*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9429*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9430*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9431*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9432*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9433*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9434*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9435*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9436*4bdc9457SAndroid Build Coastguard Worker .m(8) 9437*4bdc9457SAndroid Build Coastguard Worker .n(n) 9438*4bdc9457SAndroid Build Coastguard Worker .k(k) 9439*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 9440*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9441*4bdc9457SAndroid Build Coastguard Worker } 9442*4bdc9457SAndroid Build Coastguard Worker } 9443*4bdc9457SAndroid Build Coastguard Worker } 9444*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_gt_16_subtile)9445*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_gt_16_subtile) { 9446*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9447*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9448*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9449*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9450*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9451*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9452*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9453*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9454*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9455*4bdc9457SAndroid Build Coastguard Worker .m(m) 9456*4bdc9457SAndroid Build Coastguard Worker .n(n) 9457*4bdc9457SAndroid Build Coastguard Worker .k(k) 9458*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9459*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9460*4bdc9457SAndroid Build Coastguard Worker } 9461*4bdc9457SAndroid Build Coastguard Worker } 9462*4bdc9457SAndroid Build Coastguard Worker } 9463*4bdc9457SAndroid Build Coastguard Worker } 9464*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_div_16)9465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_div_16) { 9466*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9467*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9468*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9469*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9470*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9471*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9472*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9473*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9474*4bdc9457SAndroid Build Coastguard Worker .m(8) 9475*4bdc9457SAndroid Build Coastguard Worker .n(n) 9476*4bdc9457SAndroid Build Coastguard Worker .k(k) 9477*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9478*4bdc9457SAndroid Build Coastguard Worker } 9479*4bdc9457SAndroid Build Coastguard Worker } 9480*4bdc9457SAndroid Build Coastguard Worker } 9481*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_div_16_strided_cn)9482*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_div_16_strided_cn) { 9483*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9484*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9485*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9486*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9487*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9488*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9489*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9490*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9491*4bdc9457SAndroid Build Coastguard Worker .m(8) 9492*4bdc9457SAndroid Build Coastguard Worker .n(n) 9493*4bdc9457SAndroid Build Coastguard Worker .k(k) 9494*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 9495*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9496*4bdc9457SAndroid Build Coastguard Worker } 9497*4bdc9457SAndroid Build Coastguard Worker } 9498*4bdc9457SAndroid Build Coastguard Worker } 9499*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_div_16_strided_a)9500*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_div_16_strided_a) { 9501*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9502*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9503*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9504*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9505*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9506*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9507*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9508*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9509*4bdc9457SAndroid Build Coastguard Worker .m(8) 9510*4bdc9457SAndroid Build Coastguard Worker .n(n) 9511*4bdc9457SAndroid Build Coastguard Worker .k(k) 9512*4bdc9457SAndroid Build Coastguard Worker .a_stride(23) 9513*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9514*4bdc9457SAndroid Build Coastguard Worker } 9515*4bdc9457SAndroid Build Coastguard Worker } 9516*4bdc9457SAndroid Build Coastguard Worker } 9517*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_div_16_subtile)9518*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_div_16_subtile) { 9519*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9520*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9521*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9522*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9523*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9524*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9525*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9526*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9527*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9528*4bdc9457SAndroid Build Coastguard Worker .m(m) 9529*4bdc9457SAndroid Build Coastguard Worker .n(n) 9530*4bdc9457SAndroid Build Coastguard Worker .k(k) 9531*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9532*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9533*4bdc9457SAndroid Build Coastguard Worker } 9534*4bdc9457SAndroid Build Coastguard Worker } 9535*4bdc9457SAndroid Build Coastguard Worker } 9536*4bdc9457SAndroid Build Coastguard Worker } 9537*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,strided_cm_subtile)9538*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, strided_cm_subtile) { 9539*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9540*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 9541*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9542*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 9543*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9544*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9545*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9546*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9547*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9548*4bdc9457SAndroid Build Coastguard Worker .m(m) 9549*4bdc9457SAndroid Build Coastguard Worker .n(n) 9550*4bdc9457SAndroid Build Coastguard Worker .k(k) 9551*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 9552*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9553*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9554*4bdc9457SAndroid Build Coastguard Worker } 9555*4bdc9457SAndroid Build Coastguard Worker } 9556*4bdc9457SAndroid Build Coastguard Worker } 9557*4bdc9457SAndroid Build Coastguard Worker } 9558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,qmin)9559*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, qmin) { 9560*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9561*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9562*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9563*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9564*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9565*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9566*4bdc9457SAndroid Build Coastguard Worker .m(8) 9567*4bdc9457SAndroid Build Coastguard Worker .n(16) 9568*4bdc9457SAndroid Build Coastguard Worker .k(4) 9569*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 9570*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9571*4bdc9457SAndroid Build Coastguard Worker } 9572*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,qmax)9573*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, qmax) { 9574*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9575*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9576*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9577*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9578*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9579*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9580*4bdc9457SAndroid Build Coastguard Worker .m(8) 9581*4bdc9457SAndroid Build Coastguard Worker .n(16) 9582*4bdc9457SAndroid Build Coastguard Worker .k(4) 9583*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 9584*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9585*4bdc9457SAndroid Build Coastguard Worker } 9586*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64,strided_cm)9587*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_8X16__NEONFP16ARITH_LD64, strided_cm) { 9588*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 9589*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9590*4bdc9457SAndroid Build Coastguard Worker .mr(8) 9591*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9592*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9593*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9594*4bdc9457SAndroid Build Coastguard Worker .m(8) 9595*4bdc9457SAndroid Build Coastguard Worker .n(16) 9596*4bdc9457SAndroid Build Coastguard Worker .k(4) 9597*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 9598*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 9599*4bdc9457SAndroid Build Coastguard Worker } 9600*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 9601*4bdc9457SAndroid Build Coastguard Worker 9602*4bdc9457SAndroid Build Coastguard Worker 9603*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1)9604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1) { 9605*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9606*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9607*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9608*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9609*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9610*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9611*4bdc9457SAndroid Build Coastguard Worker .m(1) 9612*4bdc9457SAndroid Build Coastguard Worker .n(8) 9613*4bdc9457SAndroid Build Coastguard Worker .k(1) 9614*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9615*4bdc9457SAndroid Build Coastguard Worker } 9616*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,strided_cn)9617*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, strided_cn) { 9618*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9619*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9620*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9621*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9622*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9623*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9624*4bdc9457SAndroid Build Coastguard Worker .m(1) 9625*4bdc9457SAndroid Build Coastguard Worker .n(8) 9626*4bdc9457SAndroid Build Coastguard Worker .k(1) 9627*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9628*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9629*4bdc9457SAndroid Build Coastguard Worker } 9630*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1_strided_a)9631*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1_strided_a) { 9632*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9633*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9634*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9635*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9636*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9637*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9638*4bdc9457SAndroid Build Coastguard Worker .m(1) 9639*4bdc9457SAndroid Build Coastguard Worker .n(8) 9640*4bdc9457SAndroid Build Coastguard Worker .k(1) 9641*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 9642*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9643*4bdc9457SAndroid Build Coastguard Worker } 9644*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1_subtile)9645*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1_subtile) { 9646*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9647*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9648*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 9649*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9650*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9651*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9652*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9653*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9654*4bdc9457SAndroid Build Coastguard Worker .m(m) 9655*4bdc9457SAndroid Build Coastguard Worker .n(n) 9656*4bdc9457SAndroid Build Coastguard Worker .k(1) 9657*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9658*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9659*4bdc9457SAndroid Build Coastguard Worker } 9660*4bdc9457SAndroid Build Coastguard Worker } 9661*4bdc9457SAndroid Build Coastguard Worker } 9662*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1_subtile_m)9663*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 9664*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9665*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 9666*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9667*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9668*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9669*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9670*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9671*4bdc9457SAndroid Build Coastguard Worker .m(m) 9672*4bdc9457SAndroid Build Coastguard Worker .n(8) 9673*4bdc9457SAndroid Build Coastguard Worker .k(1) 9674*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9675*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9676*4bdc9457SAndroid Build Coastguard Worker } 9677*4bdc9457SAndroid Build Coastguard Worker } 9678*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1_subtile_n)9679*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 9680*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9681*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9682*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9683*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9684*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9685*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9686*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9687*4bdc9457SAndroid Build Coastguard Worker .m(1) 9688*4bdc9457SAndroid Build Coastguard Worker .n(n) 9689*4bdc9457SAndroid Build Coastguard Worker .k(1) 9690*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9691*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9692*4bdc9457SAndroid Build Coastguard Worker } 9693*4bdc9457SAndroid Build Coastguard Worker } 9694*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,k_gt_1)9695*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, k_gt_1) { 9696*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9697*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 9698*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9699*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9700*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9701*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9702*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9703*4bdc9457SAndroid Build Coastguard Worker .m(1) 9704*4bdc9457SAndroid Build Coastguard Worker .n(8) 9705*4bdc9457SAndroid Build Coastguard Worker .k(k) 9706*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9707*4bdc9457SAndroid Build Coastguard Worker } 9708*4bdc9457SAndroid Build Coastguard Worker } 9709*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,k_gt_1_strided_a)9710*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, k_gt_1_strided_a) { 9711*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9712*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 9713*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9714*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9715*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9716*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9717*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9718*4bdc9457SAndroid Build Coastguard Worker .m(1) 9719*4bdc9457SAndroid Build Coastguard Worker .n(8) 9720*4bdc9457SAndroid Build Coastguard Worker .k(k) 9721*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 9722*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9723*4bdc9457SAndroid Build Coastguard Worker } 9724*4bdc9457SAndroid Build Coastguard Worker } 9725*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,k_gt_1_subtile)9726*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, k_gt_1_subtile) { 9727*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9728*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 9729*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9730*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 9731*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9732*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9733*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9734*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9735*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9736*4bdc9457SAndroid Build Coastguard Worker .m(m) 9737*4bdc9457SAndroid Build Coastguard Worker .n(n) 9738*4bdc9457SAndroid Build Coastguard Worker .k(k) 9739*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9740*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9741*4bdc9457SAndroid Build Coastguard Worker } 9742*4bdc9457SAndroid Build Coastguard Worker } 9743*4bdc9457SAndroid Build Coastguard Worker } 9744*4bdc9457SAndroid Build Coastguard Worker } 9745*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,n_gt_8)9746*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, n_gt_8) { 9747*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9748*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9749*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9750*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9751*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9752*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9753*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9754*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9755*4bdc9457SAndroid Build Coastguard Worker .m(1) 9756*4bdc9457SAndroid Build Coastguard Worker .n(n) 9757*4bdc9457SAndroid Build Coastguard Worker .k(k) 9758*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9759*4bdc9457SAndroid Build Coastguard Worker } 9760*4bdc9457SAndroid Build Coastguard Worker } 9761*4bdc9457SAndroid Build Coastguard Worker } 9762*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,n_gt_8_strided_cn)9763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 9764*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9765*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9766*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9767*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9768*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9769*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9770*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9771*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9772*4bdc9457SAndroid Build Coastguard Worker .m(1) 9773*4bdc9457SAndroid Build Coastguard Worker .n(n) 9774*4bdc9457SAndroid Build Coastguard Worker .k(k) 9775*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9776*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9777*4bdc9457SAndroid Build Coastguard Worker } 9778*4bdc9457SAndroid Build Coastguard Worker } 9779*4bdc9457SAndroid Build Coastguard Worker } 9780*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,n_gt_8_strided_a)9781*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, n_gt_8_strided_a) { 9782*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9783*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9784*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9785*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9786*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9787*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9788*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9789*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9790*4bdc9457SAndroid Build Coastguard Worker .m(1) 9791*4bdc9457SAndroid Build Coastguard Worker .n(n) 9792*4bdc9457SAndroid Build Coastguard Worker .k(k) 9793*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 9794*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9795*4bdc9457SAndroid Build Coastguard Worker } 9796*4bdc9457SAndroid Build Coastguard Worker } 9797*4bdc9457SAndroid Build Coastguard Worker } 9798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,n_gt_8_subtile)9799*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, n_gt_8_subtile) { 9800*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9801*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9802*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9803*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 9804*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9805*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9806*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9807*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9808*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9809*4bdc9457SAndroid Build Coastguard Worker .m(m) 9810*4bdc9457SAndroid Build Coastguard Worker .n(n) 9811*4bdc9457SAndroid Build Coastguard Worker .k(k) 9812*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9813*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9814*4bdc9457SAndroid Build Coastguard Worker } 9815*4bdc9457SAndroid Build Coastguard Worker } 9816*4bdc9457SAndroid Build Coastguard Worker } 9817*4bdc9457SAndroid Build Coastguard Worker } 9818*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,n_div_8)9819*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, n_div_8) { 9820*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9821*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9822*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9823*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9824*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9825*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9826*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9827*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9828*4bdc9457SAndroid Build Coastguard Worker .m(1) 9829*4bdc9457SAndroid Build Coastguard Worker .n(n) 9830*4bdc9457SAndroid Build Coastguard Worker .k(k) 9831*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9832*4bdc9457SAndroid Build Coastguard Worker } 9833*4bdc9457SAndroid Build Coastguard Worker } 9834*4bdc9457SAndroid Build Coastguard Worker } 9835*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,n_div_8_strided_cn)9836*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, n_div_8_strided_cn) { 9837*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9838*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9839*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9840*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9841*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9842*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9843*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9844*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9845*4bdc9457SAndroid Build Coastguard Worker .m(1) 9846*4bdc9457SAndroid Build Coastguard Worker .n(n) 9847*4bdc9457SAndroid Build Coastguard Worker .k(k) 9848*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9849*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9850*4bdc9457SAndroid Build Coastguard Worker } 9851*4bdc9457SAndroid Build Coastguard Worker } 9852*4bdc9457SAndroid Build Coastguard Worker } 9853*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,n_div_8_strided_a)9854*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, n_div_8_strided_a) { 9855*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9856*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9857*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9858*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9859*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9860*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9861*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9862*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9863*4bdc9457SAndroid Build Coastguard Worker .m(1) 9864*4bdc9457SAndroid Build Coastguard Worker .n(n) 9865*4bdc9457SAndroid Build Coastguard Worker .k(k) 9866*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 9867*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9868*4bdc9457SAndroid Build Coastguard Worker } 9869*4bdc9457SAndroid Build Coastguard Worker } 9870*4bdc9457SAndroid Build Coastguard Worker } 9871*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,n_div_8_subtile)9872*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, n_div_8_subtile) { 9873*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9874*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9875*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9876*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 9877*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9878*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9879*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9880*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9881*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9882*4bdc9457SAndroid Build Coastguard Worker .m(m) 9883*4bdc9457SAndroid Build Coastguard Worker .n(n) 9884*4bdc9457SAndroid Build Coastguard Worker .k(k) 9885*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9886*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9887*4bdc9457SAndroid Build Coastguard Worker } 9888*4bdc9457SAndroid Build Coastguard Worker } 9889*4bdc9457SAndroid Build Coastguard Worker } 9890*4bdc9457SAndroid Build Coastguard Worker } 9891*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,strided_cm_subtile)9892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, strided_cm_subtile) { 9893*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9894*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9895*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9896*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 9897*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9898*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9899*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9900*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9901*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9902*4bdc9457SAndroid Build Coastguard Worker .m(m) 9903*4bdc9457SAndroid Build Coastguard Worker .n(n) 9904*4bdc9457SAndroid Build Coastguard Worker .k(k) 9905*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9906*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9907*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9908*4bdc9457SAndroid Build Coastguard Worker } 9909*4bdc9457SAndroid Build Coastguard Worker } 9910*4bdc9457SAndroid Build Coastguard Worker } 9911*4bdc9457SAndroid Build Coastguard Worker } 9912*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,qmin)9913*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, qmin) { 9914*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9915*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9916*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9917*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9918*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9919*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9920*4bdc9457SAndroid Build Coastguard Worker .m(1) 9921*4bdc9457SAndroid Build Coastguard Worker .n(8) 9922*4bdc9457SAndroid Build Coastguard Worker .k(1) 9923*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 9924*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9925*4bdc9457SAndroid Build Coastguard Worker } 9926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,qmax)9927*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, qmax) { 9928*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9929*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9930*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9931*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9932*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9933*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9934*4bdc9457SAndroid Build Coastguard Worker .m(1) 9935*4bdc9457SAndroid Build Coastguard Worker .n(8) 9936*4bdc9457SAndroid Build Coastguard Worker .k(1) 9937*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 9938*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9939*4bdc9457SAndroid Build Coastguard Worker } 9940*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST,strided_cm)9941*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X8__AVX2_BROADCAST, strided_cm) { 9942*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9943*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9944*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9945*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9946*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9947*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9948*4bdc9457SAndroid Build Coastguard Worker .m(1) 9949*4bdc9457SAndroid Build Coastguard Worker .n(8) 9950*4bdc9457SAndroid Build Coastguard Worker .k(1) 9951*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9952*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9953*4bdc9457SAndroid Build Coastguard Worker } 9954*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 9955*4bdc9457SAndroid Build Coastguard Worker 9956*4bdc9457SAndroid Build Coastguard Worker 9957*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1)9958*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1) { 9959*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9960*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9961*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9962*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9963*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9964*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9965*4bdc9457SAndroid Build Coastguard Worker .m(1) 9966*4bdc9457SAndroid Build Coastguard Worker .n(16) 9967*4bdc9457SAndroid Build Coastguard Worker .k(1) 9968*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9969*4bdc9457SAndroid Build Coastguard Worker } 9970*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,strided_cn)9971*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, strided_cn) { 9972*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9973*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9974*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9975*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9976*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9977*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9978*4bdc9457SAndroid Build Coastguard Worker .m(1) 9979*4bdc9457SAndroid Build Coastguard Worker .n(16) 9980*4bdc9457SAndroid Build Coastguard Worker .k(1) 9981*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 9982*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9983*4bdc9457SAndroid Build Coastguard Worker } 9984*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1_strided_a)9985*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1_strided_a) { 9986*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9987*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9988*4bdc9457SAndroid Build Coastguard Worker .mr(1) 9989*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9990*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9991*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9992*4bdc9457SAndroid Build Coastguard Worker .m(1) 9993*4bdc9457SAndroid Build Coastguard Worker .n(16) 9994*4bdc9457SAndroid Build Coastguard Worker .k(1) 9995*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 9996*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9997*4bdc9457SAndroid Build Coastguard Worker } 9998*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1_subtile)9999*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1_subtile) { 10000*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10001*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10002*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 10003*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10004*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10005*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10006*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10007*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10008*4bdc9457SAndroid Build Coastguard Worker .m(m) 10009*4bdc9457SAndroid Build Coastguard Worker .n(n) 10010*4bdc9457SAndroid Build Coastguard Worker .k(1) 10011*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10012*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10013*4bdc9457SAndroid Build Coastguard Worker } 10014*4bdc9457SAndroid Build Coastguard Worker } 10015*4bdc9457SAndroid Build Coastguard Worker } 10016*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1_subtile_m)10017*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1_subtile_m) { 10018*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10019*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 10020*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10021*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10022*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10023*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10024*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10025*4bdc9457SAndroid Build Coastguard Worker .m(m) 10026*4bdc9457SAndroid Build Coastguard Worker .n(16) 10027*4bdc9457SAndroid Build Coastguard Worker .k(1) 10028*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10029*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10030*4bdc9457SAndroid Build Coastguard Worker } 10031*4bdc9457SAndroid Build Coastguard Worker } 10032*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1_subtile_n)10033*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1_subtile_n) { 10034*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10035*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10036*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10037*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10038*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10039*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10040*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10041*4bdc9457SAndroid Build Coastguard Worker .m(1) 10042*4bdc9457SAndroid Build Coastguard Worker .n(n) 10043*4bdc9457SAndroid Build Coastguard Worker .k(1) 10044*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10045*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10046*4bdc9457SAndroid Build Coastguard Worker } 10047*4bdc9457SAndroid Build Coastguard Worker } 10048*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,k_gt_1)10049*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, k_gt_1) { 10050*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10051*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10052*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10053*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10054*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10055*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10056*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10057*4bdc9457SAndroid Build Coastguard Worker .m(1) 10058*4bdc9457SAndroid Build Coastguard Worker .n(16) 10059*4bdc9457SAndroid Build Coastguard Worker .k(k) 10060*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10061*4bdc9457SAndroid Build Coastguard Worker } 10062*4bdc9457SAndroid Build Coastguard Worker } 10063*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,k_gt_1_strided_a)10064*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, k_gt_1_strided_a) { 10065*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10066*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10067*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10068*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10069*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10070*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10071*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10072*4bdc9457SAndroid Build Coastguard Worker .m(1) 10073*4bdc9457SAndroid Build Coastguard Worker .n(16) 10074*4bdc9457SAndroid Build Coastguard Worker .k(k) 10075*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 10076*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10077*4bdc9457SAndroid Build Coastguard Worker } 10078*4bdc9457SAndroid Build Coastguard Worker } 10079*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,k_gt_1_subtile)10080*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, k_gt_1_subtile) { 10081*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10082*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10083*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10084*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 10085*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10086*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10087*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10088*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10089*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10090*4bdc9457SAndroid Build Coastguard Worker .m(m) 10091*4bdc9457SAndroid Build Coastguard Worker .n(n) 10092*4bdc9457SAndroid Build Coastguard Worker .k(k) 10093*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10094*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10095*4bdc9457SAndroid Build Coastguard Worker } 10096*4bdc9457SAndroid Build Coastguard Worker } 10097*4bdc9457SAndroid Build Coastguard Worker } 10098*4bdc9457SAndroid Build Coastguard Worker } 10099*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,n_gt_16)10100*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, n_gt_16) { 10101*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10102*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10103*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10104*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10105*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10106*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10107*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10108*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10109*4bdc9457SAndroid Build Coastguard Worker .m(1) 10110*4bdc9457SAndroid Build Coastguard Worker .n(n) 10111*4bdc9457SAndroid Build Coastguard Worker .k(k) 10112*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10113*4bdc9457SAndroid Build Coastguard Worker } 10114*4bdc9457SAndroid Build Coastguard Worker } 10115*4bdc9457SAndroid Build Coastguard Worker } 10116*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,n_gt_16_strided_cn)10117*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, n_gt_16_strided_cn) { 10118*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10119*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10120*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10121*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10122*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10123*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10124*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10125*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10126*4bdc9457SAndroid Build Coastguard Worker .m(1) 10127*4bdc9457SAndroid Build Coastguard Worker .n(n) 10128*4bdc9457SAndroid Build Coastguard Worker .k(k) 10129*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10130*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10131*4bdc9457SAndroid Build Coastguard Worker } 10132*4bdc9457SAndroid Build Coastguard Worker } 10133*4bdc9457SAndroid Build Coastguard Worker } 10134*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,n_gt_16_strided_a)10135*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, n_gt_16_strided_a) { 10136*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10137*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10138*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10139*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10140*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10141*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10142*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10143*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10144*4bdc9457SAndroid Build Coastguard Worker .m(1) 10145*4bdc9457SAndroid Build Coastguard Worker .n(n) 10146*4bdc9457SAndroid Build Coastguard Worker .k(k) 10147*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 10148*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10149*4bdc9457SAndroid Build Coastguard Worker } 10150*4bdc9457SAndroid Build Coastguard Worker } 10151*4bdc9457SAndroid Build Coastguard Worker } 10152*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,n_gt_16_subtile)10153*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, n_gt_16_subtile) { 10154*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10155*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10156*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10157*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 10158*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10159*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10160*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10161*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10162*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10163*4bdc9457SAndroid Build Coastguard Worker .m(m) 10164*4bdc9457SAndroid Build Coastguard Worker .n(n) 10165*4bdc9457SAndroid Build Coastguard Worker .k(k) 10166*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10167*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10168*4bdc9457SAndroid Build Coastguard Worker } 10169*4bdc9457SAndroid Build Coastguard Worker } 10170*4bdc9457SAndroid Build Coastguard Worker } 10171*4bdc9457SAndroid Build Coastguard Worker } 10172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,n_div_16)10173*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, n_div_16) { 10174*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10175*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10176*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10177*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10178*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10179*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10180*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10181*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10182*4bdc9457SAndroid Build Coastguard Worker .m(1) 10183*4bdc9457SAndroid Build Coastguard Worker .n(n) 10184*4bdc9457SAndroid Build Coastguard Worker .k(k) 10185*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10186*4bdc9457SAndroid Build Coastguard Worker } 10187*4bdc9457SAndroid Build Coastguard Worker } 10188*4bdc9457SAndroid Build Coastguard Worker } 10189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,n_div_16_strided_cn)10190*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, n_div_16_strided_cn) { 10191*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10192*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10193*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10194*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10195*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10196*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10197*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10198*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10199*4bdc9457SAndroid Build Coastguard Worker .m(1) 10200*4bdc9457SAndroid Build Coastguard Worker .n(n) 10201*4bdc9457SAndroid Build Coastguard Worker .k(k) 10202*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10203*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10204*4bdc9457SAndroid Build Coastguard Worker } 10205*4bdc9457SAndroid Build Coastguard Worker } 10206*4bdc9457SAndroid Build Coastguard Worker } 10207*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,n_div_16_strided_a)10208*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, n_div_16_strided_a) { 10209*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10210*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10211*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10212*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10213*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10214*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10215*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10216*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10217*4bdc9457SAndroid Build Coastguard Worker .m(1) 10218*4bdc9457SAndroid Build Coastguard Worker .n(n) 10219*4bdc9457SAndroid Build Coastguard Worker .k(k) 10220*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 10221*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10222*4bdc9457SAndroid Build Coastguard Worker } 10223*4bdc9457SAndroid Build Coastguard Worker } 10224*4bdc9457SAndroid Build Coastguard Worker } 10225*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,n_div_16_subtile)10226*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, n_div_16_subtile) { 10227*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10228*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10229*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10230*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 10231*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10232*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10233*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10234*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10235*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10236*4bdc9457SAndroid Build Coastguard Worker .m(m) 10237*4bdc9457SAndroid Build Coastguard Worker .n(n) 10238*4bdc9457SAndroid Build Coastguard Worker .k(k) 10239*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10240*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10241*4bdc9457SAndroid Build Coastguard Worker } 10242*4bdc9457SAndroid Build Coastguard Worker } 10243*4bdc9457SAndroid Build Coastguard Worker } 10244*4bdc9457SAndroid Build Coastguard Worker } 10245*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,strided_cm_subtile)10246*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, strided_cm_subtile) { 10247*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10248*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10249*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10250*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 10251*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10252*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10253*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10254*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10255*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10256*4bdc9457SAndroid Build Coastguard Worker .m(m) 10257*4bdc9457SAndroid Build Coastguard Worker .n(n) 10258*4bdc9457SAndroid Build Coastguard Worker .k(k) 10259*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 10260*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10261*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10262*4bdc9457SAndroid Build Coastguard Worker } 10263*4bdc9457SAndroid Build Coastguard Worker } 10264*4bdc9457SAndroid Build Coastguard Worker } 10265*4bdc9457SAndroid Build Coastguard Worker } 10266*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,qmin)10267*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, qmin) { 10268*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10269*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10270*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10271*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10272*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10273*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10274*4bdc9457SAndroid Build Coastguard Worker .m(1) 10275*4bdc9457SAndroid Build Coastguard Worker .n(16) 10276*4bdc9457SAndroid Build Coastguard Worker .k(1) 10277*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 10278*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10279*4bdc9457SAndroid Build Coastguard Worker } 10280*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,qmax)10281*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, qmax) { 10282*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10283*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10284*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10285*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10286*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10287*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10288*4bdc9457SAndroid Build Coastguard Worker .m(1) 10289*4bdc9457SAndroid Build Coastguard Worker .n(16) 10290*4bdc9457SAndroid Build Coastguard Worker .k(1) 10291*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 10292*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10293*4bdc9457SAndroid Build Coastguard Worker } 10294*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST,strided_cm)10295*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_1X16__AVX2_BROADCAST, strided_cm) { 10296*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10297*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10298*4bdc9457SAndroid Build Coastguard Worker .mr(1) 10299*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10300*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10301*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10302*4bdc9457SAndroid Build Coastguard Worker .m(1) 10303*4bdc9457SAndroid Build Coastguard Worker .n(16) 10304*4bdc9457SAndroid Build Coastguard Worker .k(1) 10305*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 10306*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10307*4bdc9457SAndroid Build Coastguard Worker } 10308*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 10309*4bdc9457SAndroid Build Coastguard Worker 10310*4bdc9457SAndroid Build Coastguard Worker 10311*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1)10312*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1) { 10313*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10314*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10315*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10316*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10317*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10318*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10319*4bdc9457SAndroid Build Coastguard Worker .m(3) 10320*4bdc9457SAndroid Build Coastguard Worker .n(16) 10321*4bdc9457SAndroid Build Coastguard Worker .k(1) 10322*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10323*4bdc9457SAndroid Build Coastguard Worker } 10324*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,strided_cn)10325*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, strided_cn) { 10326*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10327*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10328*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10329*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10330*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10331*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10332*4bdc9457SAndroid Build Coastguard Worker .m(3) 10333*4bdc9457SAndroid Build Coastguard Worker .n(16) 10334*4bdc9457SAndroid Build Coastguard Worker .k(1) 10335*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10336*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10337*4bdc9457SAndroid Build Coastguard Worker } 10338*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1_strided_a)10339*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1_strided_a) { 10340*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10341*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10342*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10343*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10344*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10345*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10346*4bdc9457SAndroid Build Coastguard Worker .m(3) 10347*4bdc9457SAndroid Build Coastguard Worker .n(16) 10348*4bdc9457SAndroid Build Coastguard Worker .k(1) 10349*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 10350*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10351*4bdc9457SAndroid Build Coastguard Worker } 10352*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1_subtile)10353*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1_subtile) { 10354*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10355*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10356*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 10357*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10358*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10359*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10360*4bdc9457SAndroid Build Coastguard Worker .kr(1) 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(1) 10365*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10366*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10367*4bdc9457SAndroid Build Coastguard Worker } 10368*4bdc9457SAndroid Build Coastguard Worker } 10369*4bdc9457SAndroid Build Coastguard Worker } 10370*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1_subtile_m)10371*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1_subtile_m) { 10372*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10373*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 10374*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10375*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10376*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10377*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10378*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10379*4bdc9457SAndroid Build Coastguard Worker .m(m) 10380*4bdc9457SAndroid Build Coastguard Worker .n(16) 10381*4bdc9457SAndroid Build Coastguard Worker .k(1) 10382*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10383*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10384*4bdc9457SAndroid Build Coastguard Worker } 10385*4bdc9457SAndroid Build Coastguard Worker } 10386*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1_subtile_n)10387*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1_subtile_n) { 10388*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10389*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10390*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10391*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10392*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10393*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10394*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10395*4bdc9457SAndroid Build Coastguard Worker .m(3) 10396*4bdc9457SAndroid Build Coastguard Worker .n(n) 10397*4bdc9457SAndroid Build Coastguard Worker .k(1) 10398*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10399*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10400*4bdc9457SAndroid Build Coastguard Worker } 10401*4bdc9457SAndroid Build Coastguard Worker } 10402*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,k_gt_1)10403*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, k_gt_1) { 10404*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10405*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10406*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10407*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10408*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10409*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10410*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10411*4bdc9457SAndroid Build Coastguard Worker .m(3) 10412*4bdc9457SAndroid Build Coastguard Worker .n(16) 10413*4bdc9457SAndroid Build Coastguard Worker .k(k) 10414*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10415*4bdc9457SAndroid Build Coastguard Worker } 10416*4bdc9457SAndroid Build Coastguard Worker } 10417*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,k_gt_1_strided_a)10418*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, k_gt_1_strided_a) { 10419*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10420*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10421*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10422*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10423*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10424*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10425*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10426*4bdc9457SAndroid Build Coastguard Worker .m(3) 10427*4bdc9457SAndroid Build Coastguard Worker .n(16) 10428*4bdc9457SAndroid Build Coastguard Worker .k(k) 10429*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 10430*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10431*4bdc9457SAndroid Build Coastguard Worker } 10432*4bdc9457SAndroid Build Coastguard Worker } 10433*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,k_gt_1_subtile)10434*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, k_gt_1_subtile) { 10435*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10436*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10437*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10438*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 10439*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10440*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10441*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10442*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10443*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10444*4bdc9457SAndroid Build Coastguard Worker .m(m) 10445*4bdc9457SAndroid Build Coastguard Worker .n(n) 10446*4bdc9457SAndroid Build Coastguard Worker .k(k) 10447*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10448*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10449*4bdc9457SAndroid Build Coastguard Worker } 10450*4bdc9457SAndroid Build Coastguard Worker } 10451*4bdc9457SAndroid Build Coastguard Worker } 10452*4bdc9457SAndroid Build Coastguard Worker } 10453*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,n_gt_16)10454*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, n_gt_16) { 10455*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10456*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10457*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10458*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10459*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10460*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10461*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10462*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10463*4bdc9457SAndroid Build Coastguard Worker .m(3) 10464*4bdc9457SAndroid Build Coastguard Worker .n(n) 10465*4bdc9457SAndroid Build Coastguard Worker .k(k) 10466*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10467*4bdc9457SAndroid Build Coastguard Worker } 10468*4bdc9457SAndroid Build Coastguard Worker } 10469*4bdc9457SAndroid Build Coastguard Worker } 10470*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,n_gt_16_strided_cn)10471*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, n_gt_16_strided_cn) { 10472*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10473*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10474*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10475*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10476*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10477*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10478*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10479*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10480*4bdc9457SAndroid Build Coastguard Worker .m(3) 10481*4bdc9457SAndroid Build Coastguard Worker .n(n) 10482*4bdc9457SAndroid Build Coastguard Worker .k(k) 10483*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10484*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10485*4bdc9457SAndroid Build Coastguard Worker } 10486*4bdc9457SAndroid Build Coastguard Worker } 10487*4bdc9457SAndroid Build Coastguard Worker } 10488*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,n_gt_16_strided_a)10489*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, n_gt_16_strided_a) { 10490*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10491*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10492*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10493*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10494*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10495*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10496*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10497*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10498*4bdc9457SAndroid Build Coastguard Worker .m(3) 10499*4bdc9457SAndroid Build Coastguard Worker .n(n) 10500*4bdc9457SAndroid Build Coastguard Worker .k(k) 10501*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 10502*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10503*4bdc9457SAndroid Build Coastguard Worker } 10504*4bdc9457SAndroid Build Coastguard Worker } 10505*4bdc9457SAndroid Build Coastguard Worker } 10506*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,n_gt_16_subtile)10507*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, n_gt_16_subtile) { 10508*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10509*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10510*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10511*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 10512*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10513*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10514*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10515*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10516*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10517*4bdc9457SAndroid Build Coastguard Worker .m(m) 10518*4bdc9457SAndroid Build Coastguard Worker .n(n) 10519*4bdc9457SAndroid Build Coastguard Worker .k(k) 10520*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10521*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10522*4bdc9457SAndroid Build Coastguard Worker } 10523*4bdc9457SAndroid Build Coastguard Worker } 10524*4bdc9457SAndroid Build Coastguard Worker } 10525*4bdc9457SAndroid Build Coastguard Worker } 10526*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,n_div_16)10527*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, n_div_16) { 10528*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10529*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10530*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10531*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10532*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10533*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10534*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10535*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10536*4bdc9457SAndroid Build Coastguard Worker .m(3) 10537*4bdc9457SAndroid Build Coastguard Worker .n(n) 10538*4bdc9457SAndroid Build Coastguard Worker .k(k) 10539*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10540*4bdc9457SAndroid Build Coastguard Worker } 10541*4bdc9457SAndroid Build Coastguard Worker } 10542*4bdc9457SAndroid Build Coastguard Worker } 10543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,n_div_16_strided_cn)10544*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, n_div_16_strided_cn) { 10545*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10546*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10547*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10548*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10549*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10550*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10551*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10552*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10553*4bdc9457SAndroid Build Coastguard Worker .m(3) 10554*4bdc9457SAndroid Build Coastguard Worker .n(n) 10555*4bdc9457SAndroid Build Coastguard Worker .k(k) 10556*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10557*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10558*4bdc9457SAndroid Build Coastguard Worker } 10559*4bdc9457SAndroid Build Coastguard Worker } 10560*4bdc9457SAndroid Build Coastguard Worker } 10561*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,n_div_16_strided_a)10562*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, n_div_16_strided_a) { 10563*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10564*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10565*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10566*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10567*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10568*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10569*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10570*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10571*4bdc9457SAndroid Build Coastguard Worker .m(3) 10572*4bdc9457SAndroid Build Coastguard Worker .n(n) 10573*4bdc9457SAndroid Build Coastguard Worker .k(k) 10574*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 10575*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10576*4bdc9457SAndroid Build Coastguard Worker } 10577*4bdc9457SAndroid Build Coastguard Worker } 10578*4bdc9457SAndroid Build Coastguard Worker } 10579*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,n_div_16_subtile)10580*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, n_div_16_subtile) { 10581*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10582*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10583*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10584*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 10585*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10586*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10587*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10588*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10589*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10590*4bdc9457SAndroid Build Coastguard Worker .m(m) 10591*4bdc9457SAndroid Build Coastguard Worker .n(n) 10592*4bdc9457SAndroid Build Coastguard Worker .k(k) 10593*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10594*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10595*4bdc9457SAndroid Build Coastguard Worker } 10596*4bdc9457SAndroid Build Coastguard Worker } 10597*4bdc9457SAndroid Build Coastguard Worker } 10598*4bdc9457SAndroid Build Coastguard Worker } 10599*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,strided_cm_subtile)10600*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, strided_cm_subtile) { 10601*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10602*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10603*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10604*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 10605*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10606*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10607*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10608*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10609*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10610*4bdc9457SAndroid Build Coastguard Worker .m(m) 10611*4bdc9457SAndroid Build Coastguard Worker .n(n) 10612*4bdc9457SAndroid Build Coastguard Worker .k(k) 10613*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 10614*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10615*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10616*4bdc9457SAndroid Build Coastguard Worker } 10617*4bdc9457SAndroid Build Coastguard Worker } 10618*4bdc9457SAndroid Build Coastguard Worker } 10619*4bdc9457SAndroid Build Coastguard Worker } 10620*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,qmin)10621*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, qmin) { 10622*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10623*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10624*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10625*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10626*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10627*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10628*4bdc9457SAndroid Build Coastguard Worker .m(3) 10629*4bdc9457SAndroid Build Coastguard Worker .n(16) 10630*4bdc9457SAndroid Build Coastguard Worker .k(1) 10631*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 10632*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10633*4bdc9457SAndroid Build Coastguard Worker } 10634*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,qmax)10635*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, qmax) { 10636*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10637*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10638*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10639*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10640*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10641*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10642*4bdc9457SAndroid Build Coastguard Worker .m(3) 10643*4bdc9457SAndroid Build Coastguard Worker .n(16) 10644*4bdc9457SAndroid Build Coastguard Worker .k(1) 10645*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 10646*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10647*4bdc9457SAndroid Build Coastguard Worker } 10648*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST,strided_cm)10649*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_3X16__AVX2_BROADCAST, strided_cm) { 10650*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10651*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10652*4bdc9457SAndroid Build Coastguard Worker .mr(3) 10653*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10654*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10655*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10656*4bdc9457SAndroid Build Coastguard Worker .m(3) 10657*4bdc9457SAndroid Build Coastguard Worker .n(16) 10658*4bdc9457SAndroid Build Coastguard Worker .k(1) 10659*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 10660*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10661*4bdc9457SAndroid Build Coastguard Worker } 10662*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 10663*4bdc9457SAndroid Build Coastguard Worker 10664*4bdc9457SAndroid Build Coastguard Worker 10665*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1)10666*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1) { 10667*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10668*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10669*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10670*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10671*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10672*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10673*4bdc9457SAndroid Build Coastguard Worker .m(4) 10674*4bdc9457SAndroid Build Coastguard Worker .n(8) 10675*4bdc9457SAndroid Build Coastguard Worker .k(1) 10676*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10677*4bdc9457SAndroid Build Coastguard Worker } 10678*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,strided_cn)10679*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, strided_cn) { 10680*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10681*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10682*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10683*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10684*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10685*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10686*4bdc9457SAndroid Build Coastguard Worker .m(4) 10687*4bdc9457SAndroid Build Coastguard Worker .n(8) 10688*4bdc9457SAndroid Build Coastguard Worker .k(1) 10689*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 10690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10691*4bdc9457SAndroid Build Coastguard Worker } 10692*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1_strided_a)10693*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1_strided_a) { 10694*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10695*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10696*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10697*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10698*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10699*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10700*4bdc9457SAndroid Build Coastguard Worker .m(4) 10701*4bdc9457SAndroid Build Coastguard Worker .n(8) 10702*4bdc9457SAndroid Build Coastguard Worker .k(1) 10703*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 10704*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10705*4bdc9457SAndroid Build Coastguard Worker } 10706*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1_subtile)10707*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1_subtile) { 10708*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10709*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10710*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10711*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10712*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10713*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10714*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10715*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10716*4bdc9457SAndroid Build Coastguard Worker .m(m) 10717*4bdc9457SAndroid Build Coastguard Worker .n(n) 10718*4bdc9457SAndroid Build Coastguard Worker .k(1) 10719*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10720*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10721*4bdc9457SAndroid Build Coastguard Worker } 10722*4bdc9457SAndroid Build Coastguard Worker } 10723*4bdc9457SAndroid Build Coastguard Worker } 10724*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1_subtile_m)10725*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 10726*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10727*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10728*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10729*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10730*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10731*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10732*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10733*4bdc9457SAndroid Build Coastguard Worker .m(m) 10734*4bdc9457SAndroid Build Coastguard Worker .n(8) 10735*4bdc9457SAndroid Build Coastguard Worker .k(1) 10736*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10737*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10738*4bdc9457SAndroid Build Coastguard Worker } 10739*4bdc9457SAndroid Build Coastguard Worker } 10740*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1_subtile_n)10741*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 10742*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10743*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10744*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10745*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10746*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10747*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10748*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10749*4bdc9457SAndroid Build Coastguard Worker .m(4) 10750*4bdc9457SAndroid Build Coastguard Worker .n(n) 10751*4bdc9457SAndroid Build Coastguard Worker .k(1) 10752*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10753*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10754*4bdc9457SAndroid Build Coastguard Worker } 10755*4bdc9457SAndroid Build Coastguard Worker } 10756*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,k_gt_1)10757*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, k_gt_1) { 10758*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10759*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10760*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10761*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10762*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10763*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10764*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10765*4bdc9457SAndroid Build Coastguard Worker .m(4) 10766*4bdc9457SAndroid Build Coastguard Worker .n(8) 10767*4bdc9457SAndroid Build Coastguard Worker .k(k) 10768*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10769*4bdc9457SAndroid Build Coastguard Worker } 10770*4bdc9457SAndroid Build Coastguard Worker } 10771*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,k_gt_1_strided_a)10772*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, k_gt_1_strided_a) { 10773*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10774*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10775*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10776*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10777*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10778*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10779*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10780*4bdc9457SAndroid Build Coastguard Worker .m(4) 10781*4bdc9457SAndroid Build Coastguard Worker .n(8) 10782*4bdc9457SAndroid Build Coastguard Worker .k(k) 10783*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 10784*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10785*4bdc9457SAndroid Build Coastguard Worker } 10786*4bdc9457SAndroid Build Coastguard Worker } 10787*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,k_gt_1_subtile)10788*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, k_gt_1_subtile) { 10789*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10790*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10791*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10792*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10793*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10794*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10795*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10796*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10797*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10798*4bdc9457SAndroid Build Coastguard Worker .m(m) 10799*4bdc9457SAndroid Build Coastguard Worker .n(n) 10800*4bdc9457SAndroid Build Coastguard Worker .k(k) 10801*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10802*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10803*4bdc9457SAndroid Build Coastguard Worker } 10804*4bdc9457SAndroid Build Coastguard Worker } 10805*4bdc9457SAndroid Build Coastguard Worker } 10806*4bdc9457SAndroid Build Coastguard Worker } 10807*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,n_gt_8)10808*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, n_gt_8) { 10809*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10810*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10811*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10812*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10813*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10814*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10815*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10816*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10817*4bdc9457SAndroid Build Coastguard Worker .m(4) 10818*4bdc9457SAndroid Build Coastguard Worker .n(n) 10819*4bdc9457SAndroid Build Coastguard Worker .k(k) 10820*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10821*4bdc9457SAndroid Build Coastguard Worker } 10822*4bdc9457SAndroid Build Coastguard Worker } 10823*4bdc9457SAndroid Build Coastguard Worker } 10824*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,n_gt_8_strided_cn)10825*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 10826*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10827*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10828*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10829*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10830*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10831*4bdc9457SAndroid Build Coastguard Worker .nr(8) 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(n) 10836*4bdc9457SAndroid Build Coastguard Worker .k(k) 10837*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 10838*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10839*4bdc9457SAndroid Build Coastguard Worker } 10840*4bdc9457SAndroid Build Coastguard Worker } 10841*4bdc9457SAndroid Build Coastguard Worker } 10842*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,n_gt_8_strided_a)10843*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, n_gt_8_strided_a) { 10844*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10845*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10846*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10847*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10848*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10849*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10850*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10851*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10852*4bdc9457SAndroid Build Coastguard Worker .m(4) 10853*4bdc9457SAndroid Build Coastguard Worker .n(n) 10854*4bdc9457SAndroid Build Coastguard Worker .k(k) 10855*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 10856*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10857*4bdc9457SAndroid Build Coastguard Worker } 10858*4bdc9457SAndroid Build Coastguard Worker } 10859*4bdc9457SAndroid Build Coastguard Worker } 10860*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,n_gt_8_subtile)10861*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, n_gt_8_subtile) { 10862*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10863*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10864*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10865*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10866*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10867*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10868*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10869*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10870*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10871*4bdc9457SAndroid Build Coastguard Worker .m(m) 10872*4bdc9457SAndroid Build Coastguard Worker .n(n) 10873*4bdc9457SAndroid Build Coastguard Worker .k(k) 10874*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10875*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10876*4bdc9457SAndroid Build Coastguard Worker } 10877*4bdc9457SAndroid Build Coastguard Worker } 10878*4bdc9457SAndroid Build Coastguard Worker } 10879*4bdc9457SAndroid Build Coastguard Worker } 10880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,n_div_8)10881*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, n_div_8) { 10882*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10883*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10884*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10885*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10886*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10887*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10888*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10889*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10890*4bdc9457SAndroid Build Coastguard Worker .m(4) 10891*4bdc9457SAndroid Build Coastguard Worker .n(n) 10892*4bdc9457SAndroid Build Coastguard Worker .k(k) 10893*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10894*4bdc9457SAndroid Build Coastguard Worker } 10895*4bdc9457SAndroid Build Coastguard Worker } 10896*4bdc9457SAndroid Build Coastguard Worker } 10897*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,n_div_8_strided_cn)10898*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, n_div_8_strided_cn) { 10899*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10900*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10901*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10902*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10903*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10904*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10905*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10906*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10907*4bdc9457SAndroid Build Coastguard Worker .m(4) 10908*4bdc9457SAndroid Build Coastguard Worker .n(n) 10909*4bdc9457SAndroid Build Coastguard Worker .k(k) 10910*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 10911*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10912*4bdc9457SAndroid Build Coastguard Worker } 10913*4bdc9457SAndroid Build Coastguard Worker } 10914*4bdc9457SAndroid Build Coastguard Worker } 10915*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,n_div_8_strided_a)10916*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, n_div_8_strided_a) { 10917*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10918*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10919*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10920*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10921*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10922*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10923*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10924*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10925*4bdc9457SAndroid Build Coastguard Worker .m(4) 10926*4bdc9457SAndroid Build Coastguard Worker .n(n) 10927*4bdc9457SAndroid Build Coastguard Worker .k(k) 10928*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 10929*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10930*4bdc9457SAndroid Build Coastguard Worker } 10931*4bdc9457SAndroid Build Coastguard Worker } 10932*4bdc9457SAndroid Build Coastguard Worker } 10933*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,n_div_8_subtile)10934*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, n_div_8_subtile) { 10935*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10936*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10937*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10938*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10939*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10940*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10941*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10942*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10943*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10944*4bdc9457SAndroid Build Coastguard Worker .m(m) 10945*4bdc9457SAndroid Build Coastguard Worker .n(n) 10946*4bdc9457SAndroid Build Coastguard Worker .k(k) 10947*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10948*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10949*4bdc9457SAndroid Build Coastguard Worker } 10950*4bdc9457SAndroid Build Coastguard Worker } 10951*4bdc9457SAndroid Build Coastguard Worker } 10952*4bdc9457SAndroid Build Coastguard Worker } 10953*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,strided_cm_subtile)10954*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, strided_cm_subtile) { 10955*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10956*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10957*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10958*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 10959*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10960*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10961*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10962*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10963*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10964*4bdc9457SAndroid Build Coastguard Worker .m(m) 10965*4bdc9457SAndroid Build Coastguard Worker .n(n) 10966*4bdc9457SAndroid Build Coastguard Worker .k(k) 10967*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 10968*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10969*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10970*4bdc9457SAndroid Build Coastguard Worker } 10971*4bdc9457SAndroid Build Coastguard Worker } 10972*4bdc9457SAndroid Build Coastguard Worker } 10973*4bdc9457SAndroid Build Coastguard Worker } 10974*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,qmin)10975*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, qmin) { 10976*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10977*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10978*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10979*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10980*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10981*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10982*4bdc9457SAndroid Build Coastguard Worker .m(4) 10983*4bdc9457SAndroid Build Coastguard Worker .n(8) 10984*4bdc9457SAndroid Build Coastguard Worker .k(1) 10985*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 10986*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10987*4bdc9457SAndroid Build Coastguard Worker } 10988*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,qmax)10989*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, qmax) { 10990*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10991*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10992*4bdc9457SAndroid Build Coastguard Worker .mr(4) 10993*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10994*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10995*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10996*4bdc9457SAndroid Build Coastguard Worker .m(4) 10997*4bdc9457SAndroid Build Coastguard Worker .n(8) 10998*4bdc9457SAndroid Build Coastguard Worker .k(1) 10999*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 11000*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11001*4bdc9457SAndroid Build Coastguard Worker } 11002*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST,strided_cm)11003*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X8__AVX2_BROADCAST, strided_cm) { 11004*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11005*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11006*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11007*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11008*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11009*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11010*4bdc9457SAndroid Build Coastguard Worker .m(4) 11011*4bdc9457SAndroid Build Coastguard Worker .n(8) 11012*4bdc9457SAndroid Build Coastguard Worker .k(1) 11013*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 11014*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11015*4bdc9457SAndroid Build Coastguard Worker } 11016*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 11017*4bdc9457SAndroid Build Coastguard Worker 11018*4bdc9457SAndroid Build Coastguard Worker 11019*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1)11020*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1) { 11021*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11022*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11023*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11024*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11025*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11026*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11027*4bdc9457SAndroid Build Coastguard Worker .m(4) 11028*4bdc9457SAndroid Build Coastguard Worker .n(16) 11029*4bdc9457SAndroid Build Coastguard Worker .k(1) 11030*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11031*4bdc9457SAndroid Build Coastguard Worker } 11032*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,strided_cn)11033*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, strided_cn) { 11034*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11035*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11036*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11037*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11038*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11039*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11040*4bdc9457SAndroid Build Coastguard Worker .m(4) 11041*4bdc9457SAndroid Build Coastguard Worker .n(16) 11042*4bdc9457SAndroid Build Coastguard Worker .k(1) 11043*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11044*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11045*4bdc9457SAndroid Build Coastguard Worker } 11046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1_strided_a)11047*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1_strided_a) { 11048*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11049*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11050*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11051*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11052*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11053*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11054*4bdc9457SAndroid Build Coastguard Worker .m(4) 11055*4bdc9457SAndroid Build Coastguard Worker .n(16) 11056*4bdc9457SAndroid Build Coastguard Worker .k(1) 11057*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 11058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11059*4bdc9457SAndroid Build Coastguard Worker } 11060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1_subtile)11061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1_subtile) { 11062*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11063*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11064*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11065*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11066*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11067*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11068*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11069*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11070*4bdc9457SAndroid Build Coastguard Worker .m(m) 11071*4bdc9457SAndroid Build Coastguard Worker .n(n) 11072*4bdc9457SAndroid Build Coastguard Worker .k(1) 11073*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11074*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11075*4bdc9457SAndroid Build Coastguard Worker } 11076*4bdc9457SAndroid Build Coastguard Worker } 11077*4bdc9457SAndroid Build Coastguard Worker } 11078*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1_subtile_m)11079*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1_subtile_m) { 11080*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11081*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11082*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11083*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11084*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11085*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11086*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11087*4bdc9457SAndroid Build Coastguard Worker .m(m) 11088*4bdc9457SAndroid Build Coastguard Worker .n(16) 11089*4bdc9457SAndroid Build Coastguard Worker .k(1) 11090*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11091*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11092*4bdc9457SAndroid Build Coastguard Worker } 11093*4bdc9457SAndroid Build Coastguard Worker } 11094*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1_subtile_n)11095*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1_subtile_n) { 11096*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11097*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11098*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11099*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11100*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11101*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11102*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11103*4bdc9457SAndroid Build Coastguard Worker .m(4) 11104*4bdc9457SAndroid Build Coastguard Worker .n(n) 11105*4bdc9457SAndroid Build Coastguard Worker .k(1) 11106*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11107*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11108*4bdc9457SAndroid Build Coastguard Worker } 11109*4bdc9457SAndroid Build Coastguard Worker } 11110*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,k_gt_1)11111*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, k_gt_1) { 11112*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11113*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11114*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11115*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11116*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11117*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11118*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11119*4bdc9457SAndroid Build Coastguard Worker .m(4) 11120*4bdc9457SAndroid Build Coastguard Worker .n(16) 11121*4bdc9457SAndroid Build Coastguard Worker .k(k) 11122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11123*4bdc9457SAndroid Build Coastguard Worker } 11124*4bdc9457SAndroid Build Coastguard Worker } 11125*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,k_gt_1_strided_a)11126*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, k_gt_1_strided_a) { 11127*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11128*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11129*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11130*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11131*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11132*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11133*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11134*4bdc9457SAndroid Build Coastguard Worker .m(4) 11135*4bdc9457SAndroid Build Coastguard Worker .n(16) 11136*4bdc9457SAndroid Build Coastguard Worker .k(k) 11137*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 11138*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11139*4bdc9457SAndroid Build Coastguard Worker } 11140*4bdc9457SAndroid Build Coastguard Worker } 11141*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,k_gt_1_subtile)11142*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, k_gt_1_subtile) { 11143*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11144*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11145*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11146*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11147*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11148*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11149*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11150*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11151*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11152*4bdc9457SAndroid Build Coastguard Worker .m(m) 11153*4bdc9457SAndroid Build Coastguard Worker .n(n) 11154*4bdc9457SAndroid Build Coastguard Worker .k(k) 11155*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11157*4bdc9457SAndroid Build Coastguard Worker } 11158*4bdc9457SAndroid Build Coastguard Worker } 11159*4bdc9457SAndroid Build Coastguard Worker } 11160*4bdc9457SAndroid Build Coastguard Worker } 11161*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,n_gt_16)11162*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, n_gt_16) { 11163*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11164*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11165*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11166*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11167*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11168*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11169*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11170*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11171*4bdc9457SAndroid Build Coastguard Worker .m(4) 11172*4bdc9457SAndroid Build Coastguard Worker .n(n) 11173*4bdc9457SAndroid Build Coastguard Worker .k(k) 11174*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11175*4bdc9457SAndroid Build Coastguard Worker } 11176*4bdc9457SAndroid Build Coastguard Worker } 11177*4bdc9457SAndroid Build Coastguard Worker } 11178*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,n_gt_16_strided_cn)11179*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, n_gt_16_strided_cn) { 11180*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11181*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11182*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 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(4) 11189*4bdc9457SAndroid Build Coastguard Worker .n(n) 11190*4bdc9457SAndroid Build Coastguard Worker .k(k) 11191*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11192*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11193*4bdc9457SAndroid Build Coastguard Worker } 11194*4bdc9457SAndroid Build Coastguard Worker } 11195*4bdc9457SAndroid Build Coastguard Worker } 11196*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,n_gt_16_strided_a)11197*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, n_gt_16_strided_a) { 11198*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11199*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11200*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11201*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11202*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11203*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11204*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11205*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11206*4bdc9457SAndroid Build Coastguard Worker .m(4) 11207*4bdc9457SAndroid Build Coastguard Worker .n(n) 11208*4bdc9457SAndroid Build Coastguard Worker .k(k) 11209*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 11210*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11211*4bdc9457SAndroid Build Coastguard Worker } 11212*4bdc9457SAndroid Build Coastguard Worker } 11213*4bdc9457SAndroid Build Coastguard Worker } 11214*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,n_gt_16_subtile)11215*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, n_gt_16_subtile) { 11216*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11217*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11218*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11219*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11220*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11221*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11222*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11223*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11224*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11225*4bdc9457SAndroid Build Coastguard Worker .m(m) 11226*4bdc9457SAndroid Build Coastguard Worker .n(n) 11227*4bdc9457SAndroid Build Coastguard Worker .k(k) 11228*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11229*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11230*4bdc9457SAndroid Build Coastguard Worker } 11231*4bdc9457SAndroid Build Coastguard Worker } 11232*4bdc9457SAndroid Build Coastguard Worker } 11233*4bdc9457SAndroid Build Coastguard Worker } 11234*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,n_div_16)11235*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, n_div_16) { 11236*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11237*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11238*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11239*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11240*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11241*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11242*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11243*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11244*4bdc9457SAndroid Build Coastguard Worker .m(4) 11245*4bdc9457SAndroid Build Coastguard Worker .n(n) 11246*4bdc9457SAndroid Build Coastguard Worker .k(k) 11247*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11248*4bdc9457SAndroid Build Coastguard Worker } 11249*4bdc9457SAndroid Build Coastguard Worker } 11250*4bdc9457SAndroid Build Coastguard Worker } 11251*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,n_div_16_strided_cn)11252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, n_div_16_strided_cn) { 11253*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11254*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11255*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11256*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11257*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11258*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11259*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11260*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11261*4bdc9457SAndroid Build Coastguard Worker .m(4) 11262*4bdc9457SAndroid Build Coastguard Worker .n(n) 11263*4bdc9457SAndroid Build Coastguard Worker .k(k) 11264*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11265*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11266*4bdc9457SAndroid Build Coastguard Worker } 11267*4bdc9457SAndroid Build Coastguard Worker } 11268*4bdc9457SAndroid Build Coastguard Worker } 11269*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,n_div_16_strided_a)11270*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, n_div_16_strided_a) { 11271*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11272*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11273*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11274*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11275*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11276*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11277*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11278*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11279*4bdc9457SAndroid Build Coastguard Worker .m(4) 11280*4bdc9457SAndroid Build Coastguard Worker .n(n) 11281*4bdc9457SAndroid Build Coastguard Worker .k(k) 11282*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 11283*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11284*4bdc9457SAndroid Build Coastguard Worker } 11285*4bdc9457SAndroid Build Coastguard Worker } 11286*4bdc9457SAndroid Build Coastguard Worker } 11287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,n_div_16_subtile)11288*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, n_div_16_subtile) { 11289*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11290*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11291*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11292*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11293*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11294*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11295*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11296*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11297*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11298*4bdc9457SAndroid Build Coastguard Worker .m(m) 11299*4bdc9457SAndroid Build Coastguard Worker .n(n) 11300*4bdc9457SAndroid Build Coastguard Worker .k(k) 11301*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11302*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11303*4bdc9457SAndroid Build Coastguard Worker } 11304*4bdc9457SAndroid Build Coastguard Worker } 11305*4bdc9457SAndroid Build Coastguard Worker } 11306*4bdc9457SAndroid Build Coastguard Worker } 11307*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,strided_cm_subtile)11308*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, strided_cm_subtile) { 11309*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11310*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11311*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11312*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 11313*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11314*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11315*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11316*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11317*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11318*4bdc9457SAndroid Build Coastguard Worker .m(m) 11319*4bdc9457SAndroid Build Coastguard Worker .n(n) 11320*4bdc9457SAndroid Build Coastguard Worker .k(k) 11321*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 11322*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11323*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11324*4bdc9457SAndroid Build Coastguard Worker } 11325*4bdc9457SAndroid Build Coastguard Worker } 11326*4bdc9457SAndroid Build Coastguard Worker } 11327*4bdc9457SAndroid Build Coastguard Worker } 11328*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,qmin)11329*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, qmin) { 11330*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11331*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11332*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11333*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11334*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11335*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11336*4bdc9457SAndroid Build Coastguard Worker .m(4) 11337*4bdc9457SAndroid Build Coastguard Worker .n(16) 11338*4bdc9457SAndroid Build Coastguard Worker .k(1) 11339*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 11340*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11341*4bdc9457SAndroid Build Coastguard Worker } 11342*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,qmax)11343*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, qmax) { 11344*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11345*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11346*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11347*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11348*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11349*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11350*4bdc9457SAndroid Build Coastguard Worker .m(4) 11351*4bdc9457SAndroid Build Coastguard Worker .n(16) 11352*4bdc9457SAndroid Build Coastguard Worker .k(1) 11353*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 11354*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11355*4bdc9457SAndroid Build Coastguard Worker } 11356*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST,strided_cm)11357*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_4X16__AVX2_BROADCAST, strided_cm) { 11358*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11359*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11360*4bdc9457SAndroid Build Coastguard Worker .mr(4) 11361*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11362*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11363*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11364*4bdc9457SAndroid Build Coastguard Worker .m(4) 11365*4bdc9457SAndroid Build Coastguard Worker .n(16) 11366*4bdc9457SAndroid Build Coastguard Worker .k(1) 11367*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 11368*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11369*4bdc9457SAndroid Build Coastguard Worker } 11370*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 11371*4bdc9457SAndroid Build Coastguard Worker 11372*4bdc9457SAndroid Build Coastguard Worker 11373*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1)11374*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1) { 11375*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11376*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11377*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11378*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11379*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11380*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11381*4bdc9457SAndroid Build Coastguard Worker .m(5) 11382*4bdc9457SAndroid Build Coastguard Worker .n(8) 11383*4bdc9457SAndroid Build Coastguard Worker .k(1) 11384*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11385*4bdc9457SAndroid Build Coastguard Worker } 11386*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,strided_cn)11387*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, strided_cn) { 11388*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11389*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11390*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11391*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11392*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11393*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11394*4bdc9457SAndroid Build Coastguard Worker .m(5) 11395*4bdc9457SAndroid Build Coastguard Worker .n(8) 11396*4bdc9457SAndroid Build Coastguard Worker .k(1) 11397*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 11398*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11399*4bdc9457SAndroid Build Coastguard Worker } 11400*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1_strided_a)11401*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1_strided_a) { 11402*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11403*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11404*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11405*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11406*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11407*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11408*4bdc9457SAndroid Build Coastguard Worker .m(5) 11409*4bdc9457SAndroid Build Coastguard Worker .n(8) 11410*4bdc9457SAndroid Build Coastguard Worker .k(1) 11411*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 11412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11413*4bdc9457SAndroid Build Coastguard Worker } 11414*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1_subtile)11415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1_subtile) { 11416*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11417*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11418*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11419*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11420*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11421*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11422*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11423*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11424*4bdc9457SAndroid Build Coastguard Worker .m(m) 11425*4bdc9457SAndroid Build Coastguard Worker .n(n) 11426*4bdc9457SAndroid Build Coastguard Worker .k(1) 11427*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11428*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11429*4bdc9457SAndroid Build Coastguard Worker } 11430*4bdc9457SAndroid Build Coastguard Worker } 11431*4bdc9457SAndroid Build Coastguard Worker } 11432*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1_subtile_m)11433*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 11434*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11435*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11436*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11437*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11438*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11439*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11440*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11441*4bdc9457SAndroid Build Coastguard Worker .m(m) 11442*4bdc9457SAndroid Build Coastguard Worker .n(8) 11443*4bdc9457SAndroid Build Coastguard Worker .k(1) 11444*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11445*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11446*4bdc9457SAndroid Build Coastguard Worker } 11447*4bdc9457SAndroid Build Coastguard Worker } 11448*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1_subtile_n)11449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 11450*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11451*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11452*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11453*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11454*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11455*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11456*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11457*4bdc9457SAndroid Build Coastguard Worker .m(5) 11458*4bdc9457SAndroid Build Coastguard Worker .n(n) 11459*4bdc9457SAndroid Build Coastguard Worker .k(1) 11460*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11461*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11462*4bdc9457SAndroid Build Coastguard Worker } 11463*4bdc9457SAndroid Build Coastguard Worker } 11464*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,k_gt_1)11465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, k_gt_1) { 11466*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11467*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11468*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11469*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11470*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11471*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11472*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11473*4bdc9457SAndroid Build Coastguard Worker .m(5) 11474*4bdc9457SAndroid Build Coastguard Worker .n(8) 11475*4bdc9457SAndroid Build Coastguard Worker .k(k) 11476*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11477*4bdc9457SAndroid Build Coastguard Worker } 11478*4bdc9457SAndroid Build Coastguard Worker } 11479*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,k_gt_1_strided_a)11480*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, k_gt_1_strided_a) { 11481*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11482*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11483*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11484*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11485*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11486*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11487*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11488*4bdc9457SAndroid Build Coastguard Worker .m(5) 11489*4bdc9457SAndroid Build Coastguard Worker .n(8) 11490*4bdc9457SAndroid Build Coastguard Worker .k(k) 11491*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 11492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11493*4bdc9457SAndroid Build Coastguard Worker } 11494*4bdc9457SAndroid Build Coastguard Worker } 11495*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,k_gt_1_subtile)11496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, k_gt_1_subtile) { 11497*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11498*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11499*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11500*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11501*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11502*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11503*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11504*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11505*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11506*4bdc9457SAndroid Build Coastguard Worker .m(m) 11507*4bdc9457SAndroid Build Coastguard Worker .n(n) 11508*4bdc9457SAndroid Build Coastguard Worker .k(k) 11509*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11510*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11511*4bdc9457SAndroid Build Coastguard Worker } 11512*4bdc9457SAndroid Build Coastguard Worker } 11513*4bdc9457SAndroid Build Coastguard Worker } 11514*4bdc9457SAndroid Build Coastguard Worker } 11515*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,n_gt_8)11516*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, n_gt_8) { 11517*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11518*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11519*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11520*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11521*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11522*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11523*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11524*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11525*4bdc9457SAndroid Build Coastguard Worker .m(5) 11526*4bdc9457SAndroid Build Coastguard Worker .n(n) 11527*4bdc9457SAndroid Build Coastguard Worker .k(k) 11528*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11529*4bdc9457SAndroid Build Coastguard Worker } 11530*4bdc9457SAndroid Build Coastguard Worker } 11531*4bdc9457SAndroid Build Coastguard Worker } 11532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,n_gt_8_strided_cn)11533*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 11534*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11535*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11536*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11537*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11538*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11539*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11540*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11541*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11542*4bdc9457SAndroid Build Coastguard Worker .m(5) 11543*4bdc9457SAndroid Build Coastguard Worker .n(n) 11544*4bdc9457SAndroid Build Coastguard Worker .k(k) 11545*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 11546*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11547*4bdc9457SAndroid Build Coastguard Worker } 11548*4bdc9457SAndroid Build Coastguard Worker } 11549*4bdc9457SAndroid Build Coastguard Worker } 11550*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,n_gt_8_strided_a)11551*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, n_gt_8_strided_a) { 11552*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11553*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11554*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11555*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11556*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11557*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11558*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11559*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11560*4bdc9457SAndroid Build Coastguard Worker .m(5) 11561*4bdc9457SAndroid Build Coastguard Worker .n(n) 11562*4bdc9457SAndroid Build Coastguard Worker .k(k) 11563*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 11564*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11565*4bdc9457SAndroid Build Coastguard Worker } 11566*4bdc9457SAndroid Build Coastguard Worker } 11567*4bdc9457SAndroid Build Coastguard Worker } 11568*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,n_gt_8_subtile)11569*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, n_gt_8_subtile) { 11570*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11571*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11572*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11573*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11574*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11575*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11576*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11577*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11578*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11579*4bdc9457SAndroid Build Coastguard Worker .m(m) 11580*4bdc9457SAndroid Build Coastguard Worker .n(n) 11581*4bdc9457SAndroid Build Coastguard Worker .k(k) 11582*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11583*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11584*4bdc9457SAndroid Build Coastguard Worker } 11585*4bdc9457SAndroid Build Coastguard Worker } 11586*4bdc9457SAndroid Build Coastguard Worker } 11587*4bdc9457SAndroid Build Coastguard Worker } 11588*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,n_div_8)11589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, n_div_8) { 11590*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11591*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11592*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11593*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11594*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11595*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11596*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11597*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11598*4bdc9457SAndroid Build Coastguard Worker .m(5) 11599*4bdc9457SAndroid Build Coastguard Worker .n(n) 11600*4bdc9457SAndroid Build Coastguard Worker .k(k) 11601*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11602*4bdc9457SAndroid Build Coastguard Worker } 11603*4bdc9457SAndroid Build Coastguard Worker } 11604*4bdc9457SAndroid Build Coastguard Worker } 11605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,n_div_8_strided_cn)11606*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, n_div_8_strided_cn) { 11607*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11608*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11609*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11610*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11611*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11612*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11613*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11614*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11615*4bdc9457SAndroid Build Coastguard Worker .m(5) 11616*4bdc9457SAndroid Build Coastguard Worker .n(n) 11617*4bdc9457SAndroid Build Coastguard Worker .k(k) 11618*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 11619*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11620*4bdc9457SAndroid Build Coastguard Worker } 11621*4bdc9457SAndroid Build Coastguard Worker } 11622*4bdc9457SAndroid Build Coastguard Worker } 11623*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,n_div_8_strided_a)11624*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, n_div_8_strided_a) { 11625*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11626*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11627*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11628*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11629*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11630*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11631*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11632*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11633*4bdc9457SAndroid Build Coastguard Worker .m(5) 11634*4bdc9457SAndroid Build Coastguard Worker .n(n) 11635*4bdc9457SAndroid Build Coastguard Worker .k(k) 11636*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 11637*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11638*4bdc9457SAndroid Build Coastguard Worker } 11639*4bdc9457SAndroid Build Coastguard Worker } 11640*4bdc9457SAndroid Build Coastguard Worker } 11641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,n_div_8_subtile)11642*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, n_div_8_subtile) { 11643*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11644*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11645*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11646*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11647*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11648*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11649*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11650*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11651*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11652*4bdc9457SAndroid Build Coastguard Worker .m(m) 11653*4bdc9457SAndroid Build Coastguard Worker .n(n) 11654*4bdc9457SAndroid Build Coastguard Worker .k(k) 11655*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11656*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11657*4bdc9457SAndroid Build Coastguard Worker } 11658*4bdc9457SAndroid Build Coastguard Worker } 11659*4bdc9457SAndroid Build Coastguard Worker } 11660*4bdc9457SAndroid Build Coastguard Worker } 11661*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,strided_cm_subtile)11662*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, strided_cm_subtile) { 11663*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11664*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11665*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11666*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11667*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11668*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11669*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11670*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11671*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11672*4bdc9457SAndroid Build Coastguard Worker .m(m) 11673*4bdc9457SAndroid Build Coastguard Worker .n(n) 11674*4bdc9457SAndroid Build Coastguard Worker .k(k) 11675*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 11676*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11677*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11678*4bdc9457SAndroid Build Coastguard Worker } 11679*4bdc9457SAndroid Build Coastguard Worker } 11680*4bdc9457SAndroid Build Coastguard Worker } 11681*4bdc9457SAndroid Build Coastguard Worker } 11682*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,qmin)11683*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, qmin) { 11684*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11685*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11686*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11687*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11688*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11689*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11690*4bdc9457SAndroid Build Coastguard Worker .m(5) 11691*4bdc9457SAndroid Build Coastguard Worker .n(8) 11692*4bdc9457SAndroid Build Coastguard Worker .k(1) 11693*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 11694*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11695*4bdc9457SAndroid Build Coastguard Worker } 11696*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,qmax)11697*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, qmax) { 11698*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11699*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11700*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11701*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11702*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11703*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11704*4bdc9457SAndroid Build Coastguard Worker .m(5) 11705*4bdc9457SAndroid Build Coastguard Worker .n(8) 11706*4bdc9457SAndroid Build Coastguard Worker .k(1) 11707*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 11708*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11709*4bdc9457SAndroid Build Coastguard Worker } 11710*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST,strided_cm)11711*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X8__AVX2_BROADCAST, strided_cm) { 11712*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11713*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11714*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11715*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11716*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11717*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11718*4bdc9457SAndroid Build Coastguard Worker .m(5) 11719*4bdc9457SAndroid Build Coastguard Worker .n(8) 11720*4bdc9457SAndroid Build Coastguard Worker .k(1) 11721*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 11722*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11723*4bdc9457SAndroid Build Coastguard Worker } 11724*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 11725*4bdc9457SAndroid Build Coastguard Worker 11726*4bdc9457SAndroid Build Coastguard Worker 11727*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1)11728*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1) { 11729*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11730*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11731*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11732*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11733*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11734*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11735*4bdc9457SAndroid Build Coastguard Worker .m(5) 11736*4bdc9457SAndroid Build Coastguard Worker .n(16) 11737*4bdc9457SAndroid Build Coastguard Worker .k(1) 11738*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11739*4bdc9457SAndroid Build Coastguard Worker } 11740*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,strided_cn)11741*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, strided_cn) { 11742*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11743*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11744*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11745*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11746*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11747*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11748*4bdc9457SAndroid Build Coastguard Worker .m(5) 11749*4bdc9457SAndroid Build Coastguard Worker .n(16) 11750*4bdc9457SAndroid Build Coastguard Worker .k(1) 11751*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11752*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11753*4bdc9457SAndroid Build Coastguard Worker } 11754*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1_strided_a)11755*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1_strided_a) { 11756*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11757*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11758*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11759*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11760*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11761*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11762*4bdc9457SAndroid Build Coastguard Worker .m(5) 11763*4bdc9457SAndroid Build Coastguard Worker .n(16) 11764*4bdc9457SAndroid Build Coastguard Worker .k(1) 11765*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 11766*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11767*4bdc9457SAndroid Build Coastguard Worker } 11768*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1_subtile)11769*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1_subtile) { 11770*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11771*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11772*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11773*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11774*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11775*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11776*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11777*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11778*4bdc9457SAndroid Build Coastguard Worker .m(m) 11779*4bdc9457SAndroid Build Coastguard Worker .n(n) 11780*4bdc9457SAndroid Build Coastguard Worker .k(1) 11781*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11782*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11783*4bdc9457SAndroid Build Coastguard Worker } 11784*4bdc9457SAndroid Build Coastguard Worker } 11785*4bdc9457SAndroid Build Coastguard Worker } 11786*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1_subtile_m)11787*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1_subtile_m) { 11788*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11789*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11790*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11791*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11792*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11793*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11794*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11795*4bdc9457SAndroid Build Coastguard Worker .m(m) 11796*4bdc9457SAndroid Build Coastguard Worker .n(16) 11797*4bdc9457SAndroid Build Coastguard Worker .k(1) 11798*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11799*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11800*4bdc9457SAndroid Build Coastguard Worker } 11801*4bdc9457SAndroid Build Coastguard Worker } 11802*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1_subtile_n)11803*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1_subtile_n) { 11804*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11805*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11806*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11807*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11808*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11809*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11810*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11811*4bdc9457SAndroid Build Coastguard Worker .m(5) 11812*4bdc9457SAndroid Build Coastguard Worker .n(n) 11813*4bdc9457SAndroid Build Coastguard Worker .k(1) 11814*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11815*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11816*4bdc9457SAndroid Build Coastguard Worker } 11817*4bdc9457SAndroid Build Coastguard Worker } 11818*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,k_gt_1)11819*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, k_gt_1) { 11820*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11821*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11822*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11823*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11824*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11825*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11826*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11827*4bdc9457SAndroid Build Coastguard Worker .m(5) 11828*4bdc9457SAndroid Build Coastguard Worker .n(16) 11829*4bdc9457SAndroid Build Coastguard Worker .k(k) 11830*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11831*4bdc9457SAndroid Build Coastguard Worker } 11832*4bdc9457SAndroid Build Coastguard Worker } 11833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,k_gt_1_strided_a)11834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, k_gt_1_strided_a) { 11835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11836*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11837*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11838*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11839*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11840*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11841*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11842*4bdc9457SAndroid Build Coastguard Worker .m(5) 11843*4bdc9457SAndroid Build Coastguard Worker .n(16) 11844*4bdc9457SAndroid Build Coastguard Worker .k(k) 11845*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 11846*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11847*4bdc9457SAndroid Build Coastguard Worker } 11848*4bdc9457SAndroid Build Coastguard Worker } 11849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,k_gt_1_subtile)11850*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, k_gt_1_subtile) { 11851*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11852*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11853*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 11854*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11855*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11856*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11857*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11858*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11859*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11860*4bdc9457SAndroid Build Coastguard Worker .m(m) 11861*4bdc9457SAndroid Build Coastguard Worker .n(n) 11862*4bdc9457SAndroid Build Coastguard Worker .k(k) 11863*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11864*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11865*4bdc9457SAndroid Build Coastguard Worker } 11866*4bdc9457SAndroid Build Coastguard Worker } 11867*4bdc9457SAndroid Build Coastguard Worker } 11868*4bdc9457SAndroid Build Coastguard Worker } 11869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,n_gt_16)11870*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, n_gt_16) { 11871*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11872*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11873*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11874*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11875*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11876*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11877*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11878*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11879*4bdc9457SAndroid Build Coastguard Worker .m(5) 11880*4bdc9457SAndroid Build Coastguard Worker .n(n) 11881*4bdc9457SAndroid Build Coastguard Worker .k(k) 11882*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11883*4bdc9457SAndroid Build Coastguard Worker } 11884*4bdc9457SAndroid Build Coastguard Worker } 11885*4bdc9457SAndroid Build Coastguard Worker } 11886*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,n_gt_16_strided_cn)11887*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, n_gt_16_strided_cn) { 11888*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11889*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11890*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11891*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11892*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11893*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11894*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11895*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11896*4bdc9457SAndroid Build Coastguard Worker .m(5) 11897*4bdc9457SAndroid Build Coastguard Worker .n(n) 11898*4bdc9457SAndroid Build Coastguard Worker .k(k) 11899*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11900*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11901*4bdc9457SAndroid Build Coastguard Worker } 11902*4bdc9457SAndroid Build Coastguard Worker } 11903*4bdc9457SAndroid Build Coastguard Worker } 11904*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,n_gt_16_strided_a)11905*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, n_gt_16_strided_a) { 11906*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11907*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11908*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11909*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11910*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11911*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11912*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11913*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11914*4bdc9457SAndroid Build Coastguard Worker .m(5) 11915*4bdc9457SAndroid Build Coastguard Worker .n(n) 11916*4bdc9457SAndroid Build Coastguard Worker .k(k) 11917*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 11918*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11919*4bdc9457SAndroid Build Coastguard Worker } 11920*4bdc9457SAndroid Build Coastguard Worker } 11921*4bdc9457SAndroid Build Coastguard Worker } 11922*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,n_gt_16_subtile)11923*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, n_gt_16_subtile) { 11924*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11925*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 11926*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11927*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 11928*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11929*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11930*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11931*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11932*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11933*4bdc9457SAndroid Build Coastguard Worker .m(m) 11934*4bdc9457SAndroid Build Coastguard Worker .n(n) 11935*4bdc9457SAndroid Build Coastguard Worker .k(k) 11936*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11937*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11938*4bdc9457SAndroid Build Coastguard Worker } 11939*4bdc9457SAndroid Build Coastguard Worker } 11940*4bdc9457SAndroid Build Coastguard Worker } 11941*4bdc9457SAndroid Build Coastguard Worker } 11942*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,n_div_16)11943*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, n_div_16) { 11944*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11945*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11946*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11947*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11948*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11949*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11950*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11951*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11952*4bdc9457SAndroid Build Coastguard Worker .m(5) 11953*4bdc9457SAndroid Build Coastguard Worker .n(n) 11954*4bdc9457SAndroid Build Coastguard Worker .k(k) 11955*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11956*4bdc9457SAndroid Build Coastguard Worker } 11957*4bdc9457SAndroid Build Coastguard Worker } 11958*4bdc9457SAndroid Build Coastguard Worker } 11959*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,n_div_16_strided_cn)11960*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, n_div_16_strided_cn) { 11961*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11962*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11963*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11964*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11965*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11966*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11967*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11968*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11969*4bdc9457SAndroid Build Coastguard Worker .m(5) 11970*4bdc9457SAndroid Build Coastguard Worker .n(n) 11971*4bdc9457SAndroid Build Coastguard Worker .k(k) 11972*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 11973*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11974*4bdc9457SAndroid Build Coastguard Worker } 11975*4bdc9457SAndroid Build Coastguard Worker } 11976*4bdc9457SAndroid Build Coastguard Worker } 11977*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,n_div_16_strided_a)11978*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, n_div_16_strided_a) { 11979*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11980*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11981*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11982*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11983*4bdc9457SAndroid Build Coastguard Worker .mr(5) 11984*4bdc9457SAndroid Build Coastguard Worker .nr(16) 11985*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11986*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11987*4bdc9457SAndroid Build Coastguard Worker .m(5) 11988*4bdc9457SAndroid Build Coastguard Worker .n(n) 11989*4bdc9457SAndroid Build Coastguard Worker .k(k) 11990*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 11991*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11992*4bdc9457SAndroid Build Coastguard Worker } 11993*4bdc9457SAndroid Build Coastguard Worker } 11994*4bdc9457SAndroid Build Coastguard Worker } 11995*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,n_div_16_subtile)11996*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, n_div_16_subtile) { 11997*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11998*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 11999*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12000*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 12001*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12002*4bdc9457SAndroid Build Coastguard Worker .mr(5) 12003*4bdc9457SAndroid Build Coastguard Worker .nr(16) 12004*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12005*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12006*4bdc9457SAndroid Build Coastguard Worker .m(m) 12007*4bdc9457SAndroid Build Coastguard Worker .n(n) 12008*4bdc9457SAndroid Build Coastguard Worker .k(k) 12009*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12010*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12011*4bdc9457SAndroid Build Coastguard Worker } 12012*4bdc9457SAndroid Build Coastguard Worker } 12013*4bdc9457SAndroid Build Coastguard Worker } 12014*4bdc9457SAndroid Build Coastguard Worker } 12015*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,strided_cm_subtile)12016*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, strided_cm_subtile) { 12017*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12018*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12019*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 12020*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 12021*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12022*4bdc9457SAndroid Build Coastguard Worker .mr(5) 12023*4bdc9457SAndroid Build Coastguard Worker .nr(16) 12024*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12025*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12026*4bdc9457SAndroid Build Coastguard Worker .m(m) 12027*4bdc9457SAndroid Build Coastguard Worker .n(n) 12028*4bdc9457SAndroid Build Coastguard Worker .k(k) 12029*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 12030*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12031*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12032*4bdc9457SAndroid Build Coastguard Worker } 12033*4bdc9457SAndroid Build Coastguard Worker } 12034*4bdc9457SAndroid Build Coastguard Worker } 12035*4bdc9457SAndroid Build Coastguard Worker } 12036*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,qmin)12037*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, qmin) { 12038*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12039*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12040*4bdc9457SAndroid Build Coastguard Worker .mr(5) 12041*4bdc9457SAndroid Build Coastguard Worker .nr(16) 12042*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12043*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12044*4bdc9457SAndroid Build Coastguard Worker .m(5) 12045*4bdc9457SAndroid Build Coastguard Worker .n(16) 12046*4bdc9457SAndroid Build Coastguard Worker .k(1) 12047*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 12048*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12049*4bdc9457SAndroid Build Coastguard Worker } 12050*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,qmax)12051*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, qmax) { 12052*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12053*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12054*4bdc9457SAndroid Build Coastguard Worker .mr(5) 12055*4bdc9457SAndroid Build Coastguard Worker .nr(16) 12056*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12057*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12058*4bdc9457SAndroid Build Coastguard Worker .m(5) 12059*4bdc9457SAndroid Build Coastguard Worker .n(16) 12060*4bdc9457SAndroid Build Coastguard Worker .k(1) 12061*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 12062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12063*4bdc9457SAndroid Build Coastguard Worker } 12064*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST,strided_cm)12065*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_5X16__AVX2_BROADCAST, strided_cm) { 12066*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12067*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12068*4bdc9457SAndroid Build Coastguard Worker .mr(5) 12069*4bdc9457SAndroid Build Coastguard Worker .nr(16) 12070*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12071*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12072*4bdc9457SAndroid Build Coastguard Worker .m(5) 12073*4bdc9457SAndroid Build Coastguard Worker .n(16) 12074*4bdc9457SAndroid Build Coastguard Worker .k(1) 12075*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 12076*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12077*4bdc9457SAndroid Build Coastguard Worker } 12078*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 12079*4bdc9457SAndroid Build Coastguard Worker 12080*4bdc9457SAndroid Build Coastguard Worker 12081*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1)12082*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1) { 12083*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12084*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12085*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12086*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12087*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12088*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12089*4bdc9457SAndroid Build Coastguard Worker .m(6) 12090*4bdc9457SAndroid Build Coastguard Worker .n(8) 12091*4bdc9457SAndroid Build Coastguard Worker .k(1) 12092*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12093*4bdc9457SAndroid Build Coastguard Worker } 12094*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,strided_cn)12095*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, strided_cn) { 12096*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12097*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12098*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12099*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12100*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12101*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12102*4bdc9457SAndroid Build Coastguard Worker .m(6) 12103*4bdc9457SAndroid Build Coastguard Worker .n(8) 12104*4bdc9457SAndroid Build Coastguard Worker .k(1) 12105*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 12106*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12107*4bdc9457SAndroid Build Coastguard Worker } 12108*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1_strided_a)12109*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1_strided_a) { 12110*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12111*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12112*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12113*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12114*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12115*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12116*4bdc9457SAndroid Build Coastguard Worker .m(6) 12117*4bdc9457SAndroid Build Coastguard Worker .n(8) 12118*4bdc9457SAndroid Build Coastguard Worker .k(1) 12119*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 12120*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12121*4bdc9457SAndroid Build Coastguard Worker } 12122*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1_subtile)12123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1_subtile) { 12124*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12125*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 12126*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 12127*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12128*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12129*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12130*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12131*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12132*4bdc9457SAndroid Build Coastguard Worker .m(m) 12133*4bdc9457SAndroid Build Coastguard Worker .n(n) 12134*4bdc9457SAndroid Build Coastguard Worker .k(1) 12135*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12136*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12137*4bdc9457SAndroid Build Coastguard Worker } 12138*4bdc9457SAndroid Build Coastguard Worker } 12139*4bdc9457SAndroid Build Coastguard Worker } 12140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1_subtile_m)12141*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 12142*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12143*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 12144*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12145*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12146*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12147*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12148*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12149*4bdc9457SAndroid Build Coastguard Worker .m(m) 12150*4bdc9457SAndroid Build Coastguard Worker .n(8) 12151*4bdc9457SAndroid Build Coastguard Worker .k(1) 12152*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12153*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12154*4bdc9457SAndroid Build Coastguard Worker } 12155*4bdc9457SAndroid Build Coastguard Worker } 12156*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1_subtile_n)12157*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 12158*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12159*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 12160*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12161*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12162*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12163*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12164*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12165*4bdc9457SAndroid Build Coastguard Worker .m(6) 12166*4bdc9457SAndroid Build Coastguard Worker .n(n) 12167*4bdc9457SAndroid Build Coastguard Worker .k(1) 12168*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12169*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12170*4bdc9457SAndroid Build Coastguard Worker } 12171*4bdc9457SAndroid Build Coastguard Worker } 12172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,k_gt_1)12173*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, k_gt_1) { 12174*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12175*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 12176*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12177*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12178*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12179*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12180*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12181*4bdc9457SAndroid Build Coastguard Worker .m(6) 12182*4bdc9457SAndroid Build Coastguard Worker .n(8) 12183*4bdc9457SAndroid Build Coastguard Worker .k(k) 12184*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12185*4bdc9457SAndroid Build Coastguard Worker } 12186*4bdc9457SAndroid Build Coastguard Worker } 12187*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,k_gt_1_strided_a)12188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, k_gt_1_strided_a) { 12189*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12190*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 12191*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12192*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12193*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12194*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12195*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12196*4bdc9457SAndroid Build Coastguard Worker .m(6) 12197*4bdc9457SAndroid Build Coastguard Worker .n(8) 12198*4bdc9457SAndroid Build Coastguard Worker .k(k) 12199*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 12200*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12201*4bdc9457SAndroid Build Coastguard Worker } 12202*4bdc9457SAndroid Build Coastguard Worker } 12203*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,k_gt_1_subtile)12204*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, k_gt_1_subtile) { 12205*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12206*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 12207*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 12208*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 12209*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12210*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12211*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12212*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12213*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12214*4bdc9457SAndroid Build Coastguard Worker .m(m) 12215*4bdc9457SAndroid Build Coastguard Worker .n(n) 12216*4bdc9457SAndroid Build Coastguard Worker .k(k) 12217*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12218*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12219*4bdc9457SAndroid Build Coastguard Worker } 12220*4bdc9457SAndroid Build Coastguard Worker } 12221*4bdc9457SAndroid Build Coastguard Worker } 12222*4bdc9457SAndroid Build Coastguard Worker } 12223*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,n_gt_8)12224*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, n_gt_8) { 12225*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12226*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 12227*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12228*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12229*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12230*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12231*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12232*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12233*4bdc9457SAndroid Build Coastguard Worker .m(6) 12234*4bdc9457SAndroid Build Coastguard Worker .n(n) 12235*4bdc9457SAndroid Build Coastguard Worker .k(k) 12236*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12237*4bdc9457SAndroid Build Coastguard Worker } 12238*4bdc9457SAndroid Build Coastguard Worker } 12239*4bdc9457SAndroid Build Coastguard Worker } 12240*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,n_gt_8_strided_cn)12241*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 12242*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12243*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 12244*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12245*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12246*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12247*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12248*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12249*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12250*4bdc9457SAndroid Build Coastguard Worker .m(6) 12251*4bdc9457SAndroid Build Coastguard Worker .n(n) 12252*4bdc9457SAndroid Build Coastguard Worker .k(k) 12253*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 12254*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12255*4bdc9457SAndroid Build Coastguard Worker } 12256*4bdc9457SAndroid Build Coastguard Worker } 12257*4bdc9457SAndroid Build Coastguard Worker } 12258*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,n_gt_8_strided_a)12259*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, n_gt_8_strided_a) { 12260*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12261*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 12262*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12263*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12264*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12265*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12266*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12267*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12268*4bdc9457SAndroid Build Coastguard Worker .m(6) 12269*4bdc9457SAndroid Build Coastguard Worker .n(n) 12270*4bdc9457SAndroid Build Coastguard Worker .k(k) 12271*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 12272*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12273*4bdc9457SAndroid Build Coastguard Worker } 12274*4bdc9457SAndroid Build Coastguard Worker } 12275*4bdc9457SAndroid Build Coastguard Worker } 12276*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,n_gt_8_subtile)12277*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, n_gt_8_subtile) { 12278*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12279*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 12280*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12281*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 12282*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12283*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12284*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12285*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12286*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12287*4bdc9457SAndroid Build Coastguard Worker .m(m) 12288*4bdc9457SAndroid Build Coastguard Worker .n(n) 12289*4bdc9457SAndroid Build Coastguard Worker .k(k) 12290*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12291*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12292*4bdc9457SAndroid Build Coastguard Worker } 12293*4bdc9457SAndroid Build Coastguard Worker } 12294*4bdc9457SAndroid Build Coastguard Worker } 12295*4bdc9457SAndroid Build Coastguard Worker } 12296*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,n_div_8)12297*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, n_div_8) { 12298*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12299*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 12300*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12301*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12302*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12303*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12304*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12305*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12306*4bdc9457SAndroid Build Coastguard Worker .m(6) 12307*4bdc9457SAndroid Build Coastguard Worker .n(n) 12308*4bdc9457SAndroid Build Coastguard Worker .k(k) 12309*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12310*4bdc9457SAndroid Build Coastguard Worker } 12311*4bdc9457SAndroid Build Coastguard Worker } 12312*4bdc9457SAndroid Build Coastguard Worker } 12313*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,n_div_8_strided_cn)12314*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, n_div_8_strided_cn) { 12315*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12316*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 12317*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12318*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12319*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12320*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12321*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12322*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12323*4bdc9457SAndroid Build Coastguard Worker .m(6) 12324*4bdc9457SAndroid Build Coastguard Worker .n(n) 12325*4bdc9457SAndroid Build Coastguard Worker .k(k) 12326*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 12327*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12328*4bdc9457SAndroid Build Coastguard Worker } 12329*4bdc9457SAndroid Build Coastguard Worker } 12330*4bdc9457SAndroid Build Coastguard Worker } 12331*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,n_div_8_strided_a)12332*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, n_div_8_strided_a) { 12333*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12334*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 12335*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12336*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12337*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12338*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12339*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12340*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12341*4bdc9457SAndroid Build Coastguard Worker .m(6) 12342*4bdc9457SAndroid Build Coastguard Worker .n(n) 12343*4bdc9457SAndroid Build Coastguard Worker .k(k) 12344*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 12345*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12346*4bdc9457SAndroid Build Coastguard Worker } 12347*4bdc9457SAndroid Build Coastguard Worker } 12348*4bdc9457SAndroid Build Coastguard Worker } 12349*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,n_div_8_subtile)12350*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, n_div_8_subtile) { 12351*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12352*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 12353*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12354*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 12355*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12356*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12357*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12358*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12359*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12360*4bdc9457SAndroid Build Coastguard Worker .m(m) 12361*4bdc9457SAndroid Build Coastguard Worker .n(n) 12362*4bdc9457SAndroid Build Coastguard Worker .k(k) 12363*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12364*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12365*4bdc9457SAndroid Build Coastguard Worker } 12366*4bdc9457SAndroid Build Coastguard Worker } 12367*4bdc9457SAndroid Build Coastguard Worker } 12368*4bdc9457SAndroid Build Coastguard Worker } 12369*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,strided_cm_subtile)12370*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, strided_cm_subtile) { 12371*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12372*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12373*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 12374*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 12375*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12376*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12377*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12378*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12379*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12380*4bdc9457SAndroid Build Coastguard Worker .m(m) 12381*4bdc9457SAndroid Build Coastguard Worker .n(n) 12382*4bdc9457SAndroid Build Coastguard Worker .k(k) 12383*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 12384*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12385*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12386*4bdc9457SAndroid Build Coastguard Worker } 12387*4bdc9457SAndroid Build Coastguard Worker } 12388*4bdc9457SAndroid Build Coastguard Worker } 12389*4bdc9457SAndroid Build Coastguard Worker } 12390*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,qmin)12391*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, qmin) { 12392*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12393*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12394*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12395*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12396*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12397*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12398*4bdc9457SAndroid Build Coastguard Worker .m(6) 12399*4bdc9457SAndroid Build Coastguard Worker .n(8) 12400*4bdc9457SAndroid Build Coastguard Worker .k(1) 12401*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 12402*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12403*4bdc9457SAndroid Build Coastguard Worker } 12404*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,qmax)12405*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, qmax) { 12406*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12407*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12408*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12409*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12410*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12411*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12412*4bdc9457SAndroid Build Coastguard Worker .m(6) 12413*4bdc9457SAndroid Build Coastguard Worker .n(8) 12414*4bdc9457SAndroid Build Coastguard Worker .k(1) 12415*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 12416*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12417*4bdc9457SAndroid Build Coastguard Worker } 12418*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST,strided_cm)12419*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_6X8__AVX2_BROADCAST, strided_cm) { 12420*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12421*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12422*4bdc9457SAndroid Build Coastguard Worker .mr(6) 12423*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12424*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12425*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12426*4bdc9457SAndroid Build Coastguard Worker .m(6) 12427*4bdc9457SAndroid Build Coastguard Worker .n(8) 12428*4bdc9457SAndroid Build Coastguard Worker .k(1) 12429*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 12430*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12431*4bdc9457SAndroid Build Coastguard Worker } 12432*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 12433*4bdc9457SAndroid Build Coastguard Worker 12434*4bdc9457SAndroid Build Coastguard Worker 12435*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1)12436*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1) { 12437*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12438*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12439*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12440*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12441*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12442*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12443*4bdc9457SAndroid Build Coastguard Worker .m(7) 12444*4bdc9457SAndroid Build Coastguard Worker .n(8) 12445*4bdc9457SAndroid Build Coastguard Worker .k(1) 12446*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12447*4bdc9457SAndroid Build Coastguard Worker } 12448*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,strided_cn)12449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, strided_cn) { 12450*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12451*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12452*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12453*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12454*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12455*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12456*4bdc9457SAndroid Build Coastguard Worker .m(7) 12457*4bdc9457SAndroid Build Coastguard Worker .n(8) 12458*4bdc9457SAndroid Build Coastguard Worker .k(1) 12459*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 12460*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12461*4bdc9457SAndroid Build Coastguard Worker } 12462*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1_strided_a)12463*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1_strided_a) { 12464*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12465*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12466*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12467*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12468*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12469*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12470*4bdc9457SAndroid Build Coastguard Worker .m(7) 12471*4bdc9457SAndroid Build Coastguard Worker .n(8) 12472*4bdc9457SAndroid Build Coastguard Worker .k(1) 12473*4bdc9457SAndroid Build Coastguard Worker .a_stride(3) 12474*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12475*4bdc9457SAndroid Build Coastguard Worker } 12476*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1_subtile)12477*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1_subtile) { 12478*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12479*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 12480*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 12481*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12482*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12483*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12484*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12485*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12486*4bdc9457SAndroid Build Coastguard Worker .m(m) 12487*4bdc9457SAndroid Build Coastguard Worker .n(n) 12488*4bdc9457SAndroid Build Coastguard Worker .k(1) 12489*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12490*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12491*4bdc9457SAndroid Build Coastguard Worker } 12492*4bdc9457SAndroid Build Coastguard Worker } 12493*4bdc9457SAndroid Build Coastguard Worker } 12494*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1_subtile_m)12495*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 12496*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12497*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 12498*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12499*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12500*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12501*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12502*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12503*4bdc9457SAndroid Build Coastguard Worker .m(m) 12504*4bdc9457SAndroid Build Coastguard Worker .n(8) 12505*4bdc9457SAndroid Build Coastguard Worker .k(1) 12506*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12507*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12508*4bdc9457SAndroid Build Coastguard Worker } 12509*4bdc9457SAndroid Build Coastguard Worker } 12510*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1_subtile_n)12511*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 12512*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12513*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 12514*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12515*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12516*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12517*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12518*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12519*4bdc9457SAndroid Build Coastguard Worker .m(7) 12520*4bdc9457SAndroid Build Coastguard Worker .n(n) 12521*4bdc9457SAndroid Build Coastguard Worker .k(1) 12522*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12523*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12524*4bdc9457SAndroid Build Coastguard Worker } 12525*4bdc9457SAndroid Build Coastguard Worker } 12526*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,k_gt_1)12527*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, k_gt_1) { 12528*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12529*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 12530*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12531*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12532*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12533*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12534*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12535*4bdc9457SAndroid Build Coastguard Worker .m(7) 12536*4bdc9457SAndroid Build Coastguard Worker .n(8) 12537*4bdc9457SAndroid Build Coastguard Worker .k(k) 12538*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12539*4bdc9457SAndroid Build Coastguard Worker } 12540*4bdc9457SAndroid Build Coastguard Worker } 12541*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,k_gt_1_strided_a)12542*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, k_gt_1_strided_a) { 12543*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12544*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 12545*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12546*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12547*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12548*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12549*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12550*4bdc9457SAndroid Build Coastguard Worker .m(7) 12551*4bdc9457SAndroid Build Coastguard Worker .n(8) 12552*4bdc9457SAndroid Build Coastguard Worker .k(k) 12553*4bdc9457SAndroid Build Coastguard Worker .a_stride(11) 12554*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12555*4bdc9457SAndroid Build Coastguard Worker } 12556*4bdc9457SAndroid Build Coastguard Worker } 12557*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,k_gt_1_subtile)12558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, k_gt_1_subtile) { 12559*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12560*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 12561*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 12562*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 12563*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12564*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12565*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12566*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12567*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12568*4bdc9457SAndroid Build Coastguard Worker .m(m) 12569*4bdc9457SAndroid Build Coastguard Worker .n(n) 12570*4bdc9457SAndroid Build Coastguard Worker .k(k) 12571*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12572*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12573*4bdc9457SAndroid Build Coastguard Worker } 12574*4bdc9457SAndroid Build Coastguard Worker } 12575*4bdc9457SAndroid Build Coastguard Worker } 12576*4bdc9457SAndroid Build Coastguard Worker } 12577*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,n_gt_8)12578*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, n_gt_8) { 12579*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12580*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 12581*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12582*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12583*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12584*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12585*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12586*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12587*4bdc9457SAndroid Build Coastguard Worker .m(7) 12588*4bdc9457SAndroid Build Coastguard Worker .n(n) 12589*4bdc9457SAndroid Build Coastguard Worker .k(k) 12590*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12591*4bdc9457SAndroid Build Coastguard Worker } 12592*4bdc9457SAndroid Build Coastguard Worker } 12593*4bdc9457SAndroid Build Coastguard Worker } 12594*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,n_gt_8_strided_cn)12595*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 12596*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12597*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 12598*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12599*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12600*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12601*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12602*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12603*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12604*4bdc9457SAndroid Build Coastguard Worker .m(7) 12605*4bdc9457SAndroid Build Coastguard Worker .n(n) 12606*4bdc9457SAndroid Build Coastguard Worker .k(k) 12607*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 12608*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12609*4bdc9457SAndroid Build Coastguard Worker } 12610*4bdc9457SAndroid Build Coastguard Worker } 12611*4bdc9457SAndroid Build Coastguard Worker } 12612*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,n_gt_8_strided_a)12613*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, n_gt_8_strided_a) { 12614*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12615*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 12616*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12617*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12618*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12619*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12620*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12621*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12622*4bdc9457SAndroid Build Coastguard Worker .m(7) 12623*4bdc9457SAndroid Build Coastguard Worker .n(n) 12624*4bdc9457SAndroid Build Coastguard Worker .k(k) 12625*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 12626*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12627*4bdc9457SAndroid Build Coastguard Worker } 12628*4bdc9457SAndroid Build Coastguard Worker } 12629*4bdc9457SAndroid Build Coastguard Worker } 12630*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,n_gt_8_subtile)12631*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, n_gt_8_subtile) { 12632*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12633*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 12634*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12635*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 12636*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12637*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12638*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12639*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12640*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12641*4bdc9457SAndroid Build Coastguard Worker .m(m) 12642*4bdc9457SAndroid Build Coastguard Worker .n(n) 12643*4bdc9457SAndroid Build Coastguard Worker .k(k) 12644*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12645*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12646*4bdc9457SAndroid Build Coastguard Worker } 12647*4bdc9457SAndroid Build Coastguard Worker } 12648*4bdc9457SAndroid Build Coastguard Worker } 12649*4bdc9457SAndroid Build Coastguard Worker } 12650*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,n_div_8)12651*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, n_div_8) { 12652*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12653*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 12654*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12655*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12656*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12657*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12658*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12659*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12660*4bdc9457SAndroid Build Coastguard Worker .m(7) 12661*4bdc9457SAndroid Build Coastguard Worker .n(n) 12662*4bdc9457SAndroid Build Coastguard Worker .k(k) 12663*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12664*4bdc9457SAndroid Build Coastguard Worker } 12665*4bdc9457SAndroid Build Coastguard Worker } 12666*4bdc9457SAndroid Build Coastguard Worker } 12667*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,n_div_8_strided_cn)12668*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, n_div_8_strided_cn) { 12669*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12670*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 12671*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12672*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12673*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12674*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12675*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12676*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12677*4bdc9457SAndroid Build Coastguard Worker .m(7) 12678*4bdc9457SAndroid Build Coastguard Worker .n(n) 12679*4bdc9457SAndroid Build Coastguard Worker .k(k) 12680*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 12681*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12682*4bdc9457SAndroid Build Coastguard Worker } 12683*4bdc9457SAndroid Build Coastguard Worker } 12684*4bdc9457SAndroid Build Coastguard Worker } 12685*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,n_div_8_strided_a)12686*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, n_div_8_strided_a) { 12687*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12688*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 12689*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12690*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12691*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12692*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12693*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12694*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12695*4bdc9457SAndroid Build Coastguard Worker .m(7) 12696*4bdc9457SAndroid Build Coastguard Worker .n(n) 12697*4bdc9457SAndroid Build Coastguard Worker .k(k) 12698*4bdc9457SAndroid Build Coastguard Worker .a_stride(7) 12699*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12700*4bdc9457SAndroid Build Coastguard Worker } 12701*4bdc9457SAndroid Build Coastguard Worker } 12702*4bdc9457SAndroid Build Coastguard Worker } 12703*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,n_div_8_subtile)12704*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, n_div_8_subtile) { 12705*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12706*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 12707*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12708*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 12709*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12710*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12711*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12712*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12713*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12714*4bdc9457SAndroid Build Coastguard Worker .m(m) 12715*4bdc9457SAndroid Build Coastguard Worker .n(n) 12716*4bdc9457SAndroid Build Coastguard Worker .k(k) 12717*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12718*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12719*4bdc9457SAndroid Build Coastguard Worker } 12720*4bdc9457SAndroid Build Coastguard Worker } 12721*4bdc9457SAndroid Build Coastguard Worker } 12722*4bdc9457SAndroid Build Coastguard Worker } 12723*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,strided_cm_subtile)12724*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, strided_cm_subtile) { 12725*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12726*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 12727*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 12728*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 12729*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12730*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12731*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12732*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12733*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12734*4bdc9457SAndroid Build Coastguard Worker .m(m) 12735*4bdc9457SAndroid Build Coastguard Worker .n(n) 12736*4bdc9457SAndroid Build Coastguard Worker .k(k) 12737*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 12738*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 12739*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12740*4bdc9457SAndroid Build Coastguard Worker } 12741*4bdc9457SAndroid Build Coastguard Worker } 12742*4bdc9457SAndroid Build Coastguard Worker } 12743*4bdc9457SAndroid Build Coastguard Worker } 12744*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,qmin)12745*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, qmin) { 12746*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12747*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12748*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12749*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12750*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12751*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12752*4bdc9457SAndroid Build Coastguard Worker .m(7) 12753*4bdc9457SAndroid Build Coastguard Worker .n(8) 12754*4bdc9457SAndroid Build Coastguard Worker .k(1) 12755*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 12756*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12757*4bdc9457SAndroid Build Coastguard Worker } 12758*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,qmax)12759*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, qmax) { 12760*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12761*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12762*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12763*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12764*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12765*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12766*4bdc9457SAndroid Build Coastguard Worker .m(7) 12767*4bdc9457SAndroid Build Coastguard Worker .n(8) 12768*4bdc9457SAndroid Build Coastguard Worker .k(1) 12769*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 12770*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12771*4bdc9457SAndroid Build Coastguard Worker } 12772*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST,strided_cm)12773*4bdc9457SAndroid Build Coastguard Worker TEST(F16_GEMM_MINMAX_7X8__AVX2_BROADCAST, strided_cm) { 12774*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 12775*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 12776*4bdc9457SAndroid Build Coastguard Worker .mr(7) 12777*4bdc9457SAndroid Build Coastguard Worker .nr(8) 12778*4bdc9457SAndroid Build Coastguard Worker .kr(1) 12779*4bdc9457SAndroid Build Coastguard Worker .sr(1) 12780*4bdc9457SAndroid Build Coastguard Worker .m(7) 12781*4bdc9457SAndroid Build Coastguard Worker .n(8) 12782*4bdc9457SAndroid Build Coastguard Worker .k(1) 12783*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 12784*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_gemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 12785*4bdc9457SAndroid Build Coastguard Worker } 12786*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 12787