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-igemm-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_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2)28*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2) { 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(16) 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(16) 37*4bdc9457SAndroid Build Coastguard Worker .k(2) 38*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 39*4bdc9457SAndroid Build Coastguard Worker } 40*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,strided_cn)41*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, 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(16) 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(16) 50*4bdc9457SAndroid Build Coastguard Worker .k(2) 51*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 52*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 53*4bdc9457SAndroid Build Coastguard Worker } 54*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile)55*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile) { 56*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 57*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 58*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 59*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 60*4bdc9457SAndroid Build Coastguard Worker .mr(1) 61*4bdc9457SAndroid Build Coastguard Worker .nr(16) 62*4bdc9457SAndroid Build Coastguard Worker .kr(1) 63*4bdc9457SAndroid Build Coastguard Worker .sr(1) 64*4bdc9457SAndroid Build Coastguard Worker .m(m) 65*4bdc9457SAndroid Build Coastguard Worker .n(n) 66*4bdc9457SAndroid Build Coastguard Worker .k(2) 67*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 68*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 69*4bdc9457SAndroid Build Coastguard Worker } 70*4bdc9457SAndroid Build Coastguard Worker } 71*4bdc9457SAndroid Build Coastguard Worker } 72*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_m)73*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_m) { 74*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 75*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 76*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 77*4bdc9457SAndroid Build Coastguard Worker .mr(1) 78*4bdc9457SAndroid Build Coastguard Worker .nr(16) 79*4bdc9457SAndroid Build Coastguard Worker .kr(1) 80*4bdc9457SAndroid Build Coastguard Worker .sr(1) 81*4bdc9457SAndroid Build Coastguard Worker .m(m) 82*4bdc9457SAndroid Build Coastguard Worker .n(16) 83*4bdc9457SAndroid Build Coastguard Worker .k(2) 84*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 85*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 86*4bdc9457SAndroid Build Coastguard Worker } 87*4bdc9457SAndroid Build Coastguard Worker } 88*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_n)89*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_n) { 90*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 91*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 92*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 93*4bdc9457SAndroid Build Coastguard Worker .mr(1) 94*4bdc9457SAndroid Build Coastguard Worker .nr(16) 95*4bdc9457SAndroid Build Coastguard Worker .kr(1) 96*4bdc9457SAndroid Build Coastguard Worker .sr(1) 97*4bdc9457SAndroid Build Coastguard Worker .m(1) 98*4bdc9457SAndroid Build Coastguard Worker .n(n) 99*4bdc9457SAndroid Build Coastguard Worker .k(2) 100*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 101*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 102*4bdc9457SAndroid Build Coastguard Worker } 103*4bdc9457SAndroid Build Coastguard Worker } 104*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2)105*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2) { 106*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 107*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 108*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 109*4bdc9457SAndroid Build Coastguard Worker .mr(1) 110*4bdc9457SAndroid Build Coastguard Worker .nr(16) 111*4bdc9457SAndroid Build Coastguard Worker .kr(1) 112*4bdc9457SAndroid Build Coastguard Worker .sr(1) 113*4bdc9457SAndroid Build Coastguard Worker .m(1) 114*4bdc9457SAndroid Build Coastguard Worker .n(16) 115*4bdc9457SAndroid Build Coastguard Worker .k(k) 116*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 117*4bdc9457SAndroid Build Coastguard Worker } 118*4bdc9457SAndroid Build Coastguard Worker } 119*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_subtile)120*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_subtile) { 121*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 122*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 123*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 124*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 125*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 126*4bdc9457SAndroid Build Coastguard Worker .mr(1) 127*4bdc9457SAndroid Build Coastguard Worker .nr(16) 128*4bdc9457SAndroid Build Coastguard Worker .kr(1) 129*4bdc9457SAndroid Build Coastguard Worker .sr(1) 130*4bdc9457SAndroid Build Coastguard Worker .m(m) 131*4bdc9457SAndroid Build Coastguard Worker .n(n) 132*4bdc9457SAndroid Build Coastguard Worker .k(k) 133*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 134*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 135*4bdc9457SAndroid Build Coastguard Worker } 136*4bdc9457SAndroid Build Coastguard Worker } 137*4bdc9457SAndroid Build Coastguard Worker } 138*4bdc9457SAndroid Build Coastguard Worker } 139*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2)140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2) { 141*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 142*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 143*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 144*4bdc9457SAndroid Build Coastguard Worker .mr(1) 145*4bdc9457SAndroid Build Coastguard Worker .nr(16) 146*4bdc9457SAndroid Build Coastguard Worker .kr(1) 147*4bdc9457SAndroid Build Coastguard Worker .sr(1) 148*4bdc9457SAndroid Build Coastguard Worker .m(1) 149*4bdc9457SAndroid Build Coastguard Worker .n(16) 150*4bdc9457SAndroid Build Coastguard Worker .k(k) 151*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 152*4bdc9457SAndroid Build Coastguard Worker } 153*4bdc9457SAndroid Build Coastguard Worker } 154*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_subtile)155*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_subtile) { 156*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 157*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 158*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 159*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 160*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 161*4bdc9457SAndroid Build Coastguard Worker .mr(1) 162*4bdc9457SAndroid Build Coastguard Worker .nr(16) 163*4bdc9457SAndroid Build Coastguard Worker .kr(1) 164*4bdc9457SAndroid Build Coastguard Worker .sr(1) 165*4bdc9457SAndroid Build Coastguard Worker .m(m) 166*4bdc9457SAndroid Build Coastguard Worker .n(n) 167*4bdc9457SAndroid Build Coastguard Worker .k(k) 168*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 169*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 170*4bdc9457SAndroid Build Coastguard Worker } 171*4bdc9457SAndroid Build Coastguard Worker } 172*4bdc9457SAndroid Build Coastguard Worker } 173*4bdc9457SAndroid Build Coastguard Worker } 174*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_div_2)175*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_div_2) { 176*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 177*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 178*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 179*4bdc9457SAndroid Build Coastguard Worker .mr(1) 180*4bdc9457SAndroid Build Coastguard Worker .nr(16) 181*4bdc9457SAndroid Build Coastguard Worker .kr(1) 182*4bdc9457SAndroid Build Coastguard Worker .sr(1) 183*4bdc9457SAndroid Build Coastguard Worker .m(1) 184*4bdc9457SAndroid Build Coastguard Worker .n(16) 185*4bdc9457SAndroid Build Coastguard Worker .k(k) 186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 187*4bdc9457SAndroid Build Coastguard Worker } 188*4bdc9457SAndroid Build Coastguard Worker } 189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_subtile)190*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_subtile) { 191*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 192*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 193*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 194*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 195*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 196*4bdc9457SAndroid Build Coastguard Worker .mr(1) 197*4bdc9457SAndroid Build Coastguard Worker .nr(16) 198*4bdc9457SAndroid Build Coastguard Worker .kr(1) 199*4bdc9457SAndroid Build Coastguard Worker .sr(1) 200*4bdc9457SAndroid Build Coastguard Worker .m(m) 201*4bdc9457SAndroid Build Coastguard Worker .n(n) 202*4bdc9457SAndroid Build Coastguard Worker .k(k) 203*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 204*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 205*4bdc9457SAndroid Build Coastguard Worker } 206*4bdc9457SAndroid Build Coastguard Worker } 207*4bdc9457SAndroid Build Coastguard Worker } 208*4bdc9457SAndroid Build Coastguard Worker } 209*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16)210*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16) { 211*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 212*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 213*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 214*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 215*4bdc9457SAndroid Build Coastguard Worker .mr(1) 216*4bdc9457SAndroid Build Coastguard Worker .nr(16) 217*4bdc9457SAndroid Build Coastguard Worker .kr(1) 218*4bdc9457SAndroid Build Coastguard Worker .sr(1) 219*4bdc9457SAndroid Build Coastguard Worker .m(1) 220*4bdc9457SAndroid Build Coastguard Worker .n(n) 221*4bdc9457SAndroid Build Coastguard Worker .k(k) 222*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 223*4bdc9457SAndroid Build Coastguard Worker } 224*4bdc9457SAndroid Build Coastguard Worker } 225*4bdc9457SAndroid Build Coastguard Worker } 226*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_cn)227*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_cn) { 228*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 229*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 230*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 231*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 232*4bdc9457SAndroid Build Coastguard Worker .mr(1) 233*4bdc9457SAndroid Build Coastguard Worker .nr(16) 234*4bdc9457SAndroid Build Coastguard Worker .kr(1) 235*4bdc9457SAndroid Build Coastguard Worker .sr(1) 236*4bdc9457SAndroid Build Coastguard Worker .m(1) 237*4bdc9457SAndroid Build Coastguard Worker .n(n) 238*4bdc9457SAndroid Build Coastguard Worker .k(k) 239*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 240*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 241*4bdc9457SAndroid Build Coastguard Worker } 242*4bdc9457SAndroid Build Coastguard Worker } 243*4bdc9457SAndroid Build Coastguard Worker } 244*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_subtile)245*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_subtile) { 246*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 247*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 248*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 249*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 250*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 251*4bdc9457SAndroid Build Coastguard Worker .mr(1) 252*4bdc9457SAndroid Build Coastguard Worker .nr(16) 253*4bdc9457SAndroid Build Coastguard Worker .kr(1) 254*4bdc9457SAndroid Build Coastguard Worker .sr(1) 255*4bdc9457SAndroid Build Coastguard Worker .m(m) 256*4bdc9457SAndroid Build Coastguard Worker .n(n) 257*4bdc9457SAndroid Build Coastguard Worker .k(k) 258*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 259*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 260*4bdc9457SAndroid Build Coastguard Worker } 261*4bdc9457SAndroid Build Coastguard Worker } 262*4bdc9457SAndroid Build Coastguard Worker } 263*4bdc9457SAndroid Build Coastguard Worker } 264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_div_16)265*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_div_16) { 266*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 267*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 268*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 269*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 270*4bdc9457SAndroid Build Coastguard Worker .mr(1) 271*4bdc9457SAndroid Build Coastguard Worker .nr(16) 272*4bdc9457SAndroid Build Coastguard Worker .kr(1) 273*4bdc9457SAndroid Build Coastguard Worker .sr(1) 274*4bdc9457SAndroid Build Coastguard Worker .m(1) 275*4bdc9457SAndroid Build Coastguard Worker .n(n) 276*4bdc9457SAndroid Build Coastguard Worker .k(k) 277*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 278*4bdc9457SAndroid Build Coastguard Worker } 279*4bdc9457SAndroid Build Coastguard Worker } 280*4bdc9457SAndroid Build Coastguard Worker } 281*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_cn)282*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_cn) { 283*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 284*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 285*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 286*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 287*4bdc9457SAndroid Build Coastguard Worker .mr(1) 288*4bdc9457SAndroid Build Coastguard Worker .nr(16) 289*4bdc9457SAndroid Build Coastguard Worker .kr(1) 290*4bdc9457SAndroid Build Coastguard Worker .sr(1) 291*4bdc9457SAndroid Build Coastguard Worker .m(1) 292*4bdc9457SAndroid Build Coastguard Worker .n(n) 293*4bdc9457SAndroid Build Coastguard Worker .k(k) 294*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 295*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 296*4bdc9457SAndroid Build Coastguard Worker } 297*4bdc9457SAndroid Build Coastguard Worker } 298*4bdc9457SAndroid Build Coastguard Worker } 299*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_subtile)300*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_subtile) { 301*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 302*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 303*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 304*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 305*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 306*4bdc9457SAndroid Build Coastguard Worker .mr(1) 307*4bdc9457SAndroid Build Coastguard Worker .nr(16) 308*4bdc9457SAndroid Build Coastguard Worker .kr(1) 309*4bdc9457SAndroid Build Coastguard Worker .sr(1) 310*4bdc9457SAndroid Build Coastguard Worker .m(m) 311*4bdc9457SAndroid Build Coastguard Worker .n(n) 312*4bdc9457SAndroid Build Coastguard Worker .k(k) 313*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 314*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 315*4bdc9457SAndroid Build Coastguard Worker } 316*4bdc9457SAndroid Build Coastguard Worker } 317*4bdc9457SAndroid Build Coastguard Worker } 318*4bdc9457SAndroid Build Coastguard Worker } 319*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,small_kernel)320*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, small_kernel) { 321*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 322*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 323*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 324*4bdc9457SAndroid Build Coastguard Worker .mr(1) 325*4bdc9457SAndroid Build Coastguard Worker .nr(16) 326*4bdc9457SAndroid Build Coastguard Worker .kr(1) 327*4bdc9457SAndroid Build Coastguard Worker .sr(1) 328*4bdc9457SAndroid Build Coastguard Worker .m(1) 329*4bdc9457SAndroid Build Coastguard Worker .n(16) 330*4bdc9457SAndroid Build Coastguard Worker .k(k) 331*4bdc9457SAndroid Build Coastguard Worker .ks(3) 332*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 333*4bdc9457SAndroid Build Coastguard Worker } 334*4bdc9457SAndroid Build Coastguard Worker } 335*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,small_kernel_subtile)336*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, small_kernel_subtile) { 337*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 338*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 339*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 340*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 341*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 342*4bdc9457SAndroid Build Coastguard Worker .mr(1) 343*4bdc9457SAndroid Build Coastguard Worker .nr(16) 344*4bdc9457SAndroid Build Coastguard Worker .kr(1) 345*4bdc9457SAndroid Build Coastguard Worker .sr(1) 346*4bdc9457SAndroid Build Coastguard Worker .m(m) 347*4bdc9457SAndroid Build Coastguard Worker .n(n) 348*4bdc9457SAndroid Build Coastguard Worker .k(k) 349*4bdc9457SAndroid Build Coastguard Worker .ks(3) 350*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 351*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 352*4bdc9457SAndroid Build Coastguard Worker } 353*4bdc9457SAndroid Build Coastguard Worker } 354*4bdc9457SAndroid Build Coastguard Worker } 355*4bdc9457SAndroid Build Coastguard Worker } 356*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_small_kernel)357*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_small_kernel) { 358*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 359*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 360*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 361*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 362*4bdc9457SAndroid Build Coastguard Worker .mr(1) 363*4bdc9457SAndroid Build Coastguard Worker .nr(16) 364*4bdc9457SAndroid Build Coastguard Worker .kr(1) 365*4bdc9457SAndroid Build Coastguard Worker .sr(1) 366*4bdc9457SAndroid Build Coastguard Worker .m(1) 367*4bdc9457SAndroid Build Coastguard Worker .n(n) 368*4bdc9457SAndroid Build Coastguard Worker .k(k) 369*4bdc9457SAndroid Build Coastguard Worker .ks(3) 370*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 371*4bdc9457SAndroid Build Coastguard Worker } 372*4bdc9457SAndroid Build Coastguard Worker } 373*4bdc9457SAndroid Build Coastguard Worker } 374*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_small_kernel)375*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_small_kernel) { 376*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 377*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 378*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 379*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 380*4bdc9457SAndroid Build Coastguard Worker .mr(1) 381*4bdc9457SAndroid Build Coastguard Worker .nr(16) 382*4bdc9457SAndroid Build Coastguard Worker .kr(1) 383*4bdc9457SAndroid Build Coastguard Worker .sr(1) 384*4bdc9457SAndroid Build Coastguard Worker .m(1) 385*4bdc9457SAndroid Build Coastguard Worker .n(n) 386*4bdc9457SAndroid Build Coastguard Worker .k(k) 387*4bdc9457SAndroid Build Coastguard Worker .ks(3) 388*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 389*4bdc9457SAndroid Build Coastguard Worker } 390*4bdc9457SAndroid Build Coastguard Worker } 391*4bdc9457SAndroid Build Coastguard Worker } 392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,strided_cm_subtile)393*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, strided_cm_subtile) { 394*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 395*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 396*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 397*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 398*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 399*4bdc9457SAndroid Build Coastguard Worker .mr(1) 400*4bdc9457SAndroid Build Coastguard Worker .nr(16) 401*4bdc9457SAndroid Build Coastguard Worker .kr(1) 402*4bdc9457SAndroid Build Coastguard Worker .sr(1) 403*4bdc9457SAndroid Build Coastguard Worker .m(m) 404*4bdc9457SAndroid Build Coastguard Worker .n(n) 405*4bdc9457SAndroid Build Coastguard Worker .k(k) 406*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 407*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 408*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 409*4bdc9457SAndroid Build Coastguard Worker } 410*4bdc9457SAndroid Build Coastguard Worker } 411*4bdc9457SAndroid Build Coastguard Worker } 412*4bdc9457SAndroid Build Coastguard Worker } 413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,a_offset)414*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, a_offset) { 415*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 416*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 417*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 418*4bdc9457SAndroid Build Coastguard Worker .mr(1) 419*4bdc9457SAndroid Build Coastguard Worker .nr(16) 420*4bdc9457SAndroid Build Coastguard Worker .kr(1) 421*4bdc9457SAndroid Build Coastguard Worker .sr(1) 422*4bdc9457SAndroid Build Coastguard Worker .m(1) 423*4bdc9457SAndroid Build Coastguard Worker .n(16) 424*4bdc9457SAndroid Build Coastguard Worker .k(k) 425*4bdc9457SAndroid Build Coastguard Worker .ks(3) 426*4bdc9457SAndroid Build Coastguard Worker .a_offset(13) 427*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 428*4bdc9457SAndroid Build Coastguard Worker } 429*4bdc9457SAndroid Build Coastguard Worker } 430*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,zero)431*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, zero) { 432*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 433*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 434*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 1; mz++) { 435*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 436*4bdc9457SAndroid Build Coastguard Worker .mr(1) 437*4bdc9457SAndroid Build Coastguard Worker .nr(16) 438*4bdc9457SAndroid Build Coastguard Worker .kr(1) 439*4bdc9457SAndroid Build Coastguard Worker .sr(1) 440*4bdc9457SAndroid Build Coastguard Worker .m(1) 441*4bdc9457SAndroid Build Coastguard Worker .n(16) 442*4bdc9457SAndroid Build Coastguard Worker .k(k) 443*4bdc9457SAndroid Build Coastguard Worker .ks(3) 444*4bdc9457SAndroid Build Coastguard Worker .a_offset(13) 445*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 446*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 447*4bdc9457SAndroid Build Coastguard Worker } 448*4bdc9457SAndroid Build Coastguard Worker } 449*4bdc9457SAndroid Build Coastguard Worker } 450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,qmin)451*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, qmin) { 452*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 453*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 454*4bdc9457SAndroid Build Coastguard Worker .mr(1) 455*4bdc9457SAndroid Build Coastguard Worker .nr(16) 456*4bdc9457SAndroid Build Coastguard Worker .kr(1) 457*4bdc9457SAndroid Build Coastguard Worker .sr(1) 458*4bdc9457SAndroid Build Coastguard Worker .m(1) 459*4bdc9457SAndroid Build Coastguard Worker .n(16) 460*4bdc9457SAndroid Build Coastguard Worker .k(2) 461*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 462*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 463*4bdc9457SAndroid Build Coastguard Worker } 464*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,qmax)465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, qmax) { 466*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 467*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 468*4bdc9457SAndroid Build Coastguard Worker .mr(1) 469*4bdc9457SAndroid Build Coastguard Worker .nr(16) 470*4bdc9457SAndroid Build Coastguard Worker .kr(1) 471*4bdc9457SAndroid Build Coastguard Worker .sr(1) 472*4bdc9457SAndroid Build Coastguard Worker .m(1) 473*4bdc9457SAndroid Build Coastguard Worker .n(16) 474*4bdc9457SAndroid Build Coastguard Worker .k(2) 475*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 476*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 477*4bdc9457SAndroid Build Coastguard Worker } 478*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32,strided_cm)479*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD32, strided_cm) { 480*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 481*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 482*4bdc9457SAndroid Build Coastguard Worker .mr(1) 483*4bdc9457SAndroid Build Coastguard Worker .nr(16) 484*4bdc9457SAndroid Build Coastguard Worker .kr(1) 485*4bdc9457SAndroid Build Coastguard Worker .sr(1) 486*4bdc9457SAndroid Build Coastguard Worker .m(1) 487*4bdc9457SAndroid Build Coastguard Worker .n(16) 488*4bdc9457SAndroid Build Coastguard Worker .k(2) 489*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 490*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 491*4bdc9457SAndroid Build Coastguard Worker } 492*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 493*4bdc9457SAndroid Build Coastguard Worker 494*4bdc9457SAndroid Build Coastguard Worker 495*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4)496*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 497*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 498*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 499*4bdc9457SAndroid Build Coastguard Worker .mr(1) 500*4bdc9457SAndroid Build Coastguard Worker .nr(16) 501*4bdc9457SAndroid Build Coastguard Worker .kr(1) 502*4bdc9457SAndroid Build Coastguard Worker .sr(1) 503*4bdc9457SAndroid Build Coastguard Worker .m(1) 504*4bdc9457SAndroid Build Coastguard Worker .n(16) 505*4bdc9457SAndroid Build Coastguard Worker .k(4) 506*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 507*4bdc9457SAndroid Build Coastguard Worker } 508*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,strided_cn)509*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 510*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 511*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 512*4bdc9457SAndroid Build Coastguard Worker .mr(1) 513*4bdc9457SAndroid Build Coastguard Worker .nr(16) 514*4bdc9457SAndroid Build Coastguard Worker .kr(1) 515*4bdc9457SAndroid Build Coastguard Worker .sr(1) 516*4bdc9457SAndroid Build Coastguard Worker .m(1) 517*4bdc9457SAndroid Build Coastguard Worker .n(16) 518*4bdc9457SAndroid Build Coastguard Worker .k(4) 519*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 520*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 521*4bdc9457SAndroid Build Coastguard Worker } 522*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)523*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 524*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 525*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 526*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 527*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 528*4bdc9457SAndroid Build Coastguard Worker .mr(1) 529*4bdc9457SAndroid Build Coastguard Worker .nr(16) 530*4bdc9457SAndroid Build Coastguard Worker .kr(1) 531*4bdc9457SAndroid Build Coastguard Worker .sr(1) 532*4bdc9457SAndroid Build Coastguard Worker .m(m) 533*4bdc9457SAndroid Build Coastguard Worker .n(n) 534*4bdc9457SAndroid Build Coastguard Worker .k(4) 535*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 536*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 537*4bdc9457SAndroid Build Coastguard Worker } 538*4bdc9457SAndroid Build Coastguard Worker } 539*4bdc9457SAndroid Build Coastguard Worker } 540*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)541*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 542*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 543*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 544*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 545*4bdc9457SAndroid Build Coastguard Worker .mr(1) 546*4bdc9457SAndroid Build Coastguard Worker .nr(16) 547*4bdc9457SAndroid Build Coastguard Worker .kr(1) 548*4bdc9457SAndroid Build Coastguard Worker .sr(1) 549*4bdc9457SAndroid Build Coastguard Worker .m(m) 550*4bdc9457SAndroid Build Coastguard Worker .n(16) 551*4bdc9457SAndroid Build Coastguard Worker .k(4) 552*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 553*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 554*4bdc9457SAndroid Build Coastguard Worker } 555*4bdc9457SAndroid Build Coastguard Worker } 556*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)557*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 558*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 559*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 560*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 561*4bdc9457SAndroid Build Coastguard Worker .mr(1) 562*4bdc9457SAndroid Build Coastguard Worker .nr(16) 563*4bdc9457SAndroid Build Coastguard Worker .kr(1) 564*4bdc9457SAndroid Build Coastguard Worker .sr(1) 565*4bdc9457SAndroid Build Coastguard Worker .m(1) 566*4bdc9457SAndroid Build Coastguard Worker .n(n) 567*4bdc9457SAndroid Build Coastguard Worker .k(4) 568*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 569*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 570*4bdc9457SAndroid Build Coastguard Worker } 571*4bdc9457SAndroid Build Coastguard Worker } 572*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4)573*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 574*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 575*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 576*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 577*4bdc9457SAndroid Build Coastguard Worker .mr(1) 578*4bdc9457SAndroid Build Coastguard Worker .nr(16) 579*4bdc9457SAndroid Build Coastguard Worker .kr(1) 580*4bdc9457SAndroid Build Coastguard Worker .sr(1) 581*4bdc9457SAndroid Build Coastguard Worker .m(1) 582*4bdc9457SAndroid Build Coastguard Worker .n(16) 583*4bdc9457SAndroid Build Coastguard Worker .k(k) 584*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 585*4bdc9457SAndroid Build Coastguard Worker } 586*4bdc9457SAndroid Build Coastguard Worker } 587*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)588*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 589*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 590*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 591*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 592*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 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(m) 599*4bdc9457SAndroid Build Coastguard Worker .n(n) 600*4bdc9457SAndroid Build Coastguard Worker .k(k) 601*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 602*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 603*4bdc9457SAndroid Build Coastguard Worker } 604*4bdc9457SAndroid Build Coastguard Worker } 605*4bdc9457SAndroid Build Coastguard Worker } 606*4bdc9457SAndroid Build Coastguard Worker } 607*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4)608*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 609*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 610*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 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(1) 617*4bdc9457SAndroid Build Coastguard Worker .n(16) 618*4bdc9457SAndroid Build Coastguard Worker .k(k) 619*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 620*4bdc9457SAndroid Build Coastguard Worker } 621*4bdc9457SAndroid Build Coastguard Worker } 622*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)623*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 624*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 625*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 626*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 627*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 628*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 629*4bdc9457SAndroid Build Coastguard Worker .mr(1) 630*4bdc9457SAndroid Build Coastguard Worker .nr(16) 631*4bdc9457SAndroid Build Coastguard Worker .kr(1) 632*4bdc9457SAndroid Build Coastguard Worker .sr(1) 633*4bdc9457SAndroid Build Coastguard Worker .m(m) 634*4bdc9457SAndroid Build Coastguard Worker .n(n) 635*4bdc9457SAndroid Build Coastguard Worker .k(k) 636*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 637*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 638*4bdc9457SAndroid Build Coastguard Worker } 639*4bdc9457SAndroid Build Coastguard Worker } 640*4bdc9457SAndroid Build Coastguard Worker } 641*4bdc9457SAndroid Build Coastguard Worker } 642*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_div_4)643*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 644*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 645*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 646*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 647*4bdc9457SAndroid Build Coastguard Worker .mr(1) 648*4bdc9457SAndroid Build Coastguard Worker .nr(16) 649*4bdc9457SAndroid Build Coastguard Worker .kr(1) 650*4bdc9457SAndroid Build Coastguard Worker .sr(1) 651*4bdc9457SAndroid Build Coastguard Worker .m(1) 652*4bdc9457SAndroid Build Coastguard Worker .n(16) 653*4bdc9457SAndroid Build Coastguard Worker .k(k) 654*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 655*4bdc9457SAndroid Build Coastguard Worker } 656*4bdc9457SAndroid Build Coastguard Worker } 657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 659*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 660*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 661*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 662*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 663*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 664*4bdc9457SAndroid Build Coastguard Worker .mr(1) 665*4bdc9457SAndroid Build Coastguard Worker .nr(16) 666*4bdc9457SAndroid Build Coastguard Worker .kr(1) 667*4bdc9457SAndroid Build Coastguard Worker .sr(1) 668*4bdc9457SAndroid Build Coastguard Worker .m(m) 669*4bdc9457SAndroid Build Coastguard Worker .n(n) 670*4bdc9457SAndroid Build Coastguard Worker .k(k) 671*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 672*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 673*4bdc9457SAndroid Build Coastguard Worker } 674*4bdc9457SAndroid Build Coastguard Worker } 675*4bdc9457SAndroid Build Coastguard Worker } 676*4bdc9457SAndroid Build Coastguard Worker } 677*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16)678*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16) { 679*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 680*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 681*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 682*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 683*4bdc9457SAndroid Build Coastguard Worker .mr(1) 684*4bdc9457SAndroid Build Coastguard Worker .nr(16) 685*4bdc9457SAndroid Build Coastguard Worker .kr(1) 686*4bdc9457SAndroid Build Coastguard Worker .sr(1) 687*4bdc9457SAndroid Build Coastguard Worker .m(1) 688*4bdc9457SAndroid Build Coastguard Worker .n(n) 689*4bdc9457SAndroid Build Coastguard Worker .k(k) 690*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 691*4bdc9457SAndroid Build Coastguard Worker } 692*4bdc9457SAndroid Build Coastguard Worker } 693*4bdc9457SAndroid Build Coastguard Worker } 694*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_cn)695*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 696*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 697*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 698*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 699*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 700*4bdc9457SAndroid Build Coastguard Worker .mr(1) 701*4bdc9457SAndroid Build Coastguard Worker .nr(16) 702*4bdc9457SAndroid Build Coastguard Worker .kr(1) 703*4bdc9457SAndroid Build Coastguard Worker .sr(1) 704*4bdc9457SAndroid Build Coastguard Worker .m(1) 705*4bdc9457SAndroid Build Coastguard Worker .n(n) 706*4bdc9457SAndroid Build Coastguard Worker .k(k) 707*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 708*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 709*4bdc9457SAndroid Build Coastguard Worker } 710*4bdc9457SAndroid Build Coastguard Worker } 711*4bdc9457SAndroid Build Coastguard Worker } 712*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_subtile)713*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_subtile) { 714*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 715*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 716*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 717*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 718*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 719*4bdc9457SAndroid Build Coastguard Worker .mr(1) 720*4bdc9457SAndroid Build Coastguard Worker .nr(16) 721*4bdc9457SAndroid Build Coastguard Worker .kr(1) 722*4bdc9457SAndroid Build Coastguard Worker .sr(1) 723*4bdc9457SAndroid Build Coastguard Worker .m(m) 724*4bdc9457SAndroid Build Coastguard Worker .n(n) 725*4bdc9457SAndroid Build Coastguard Worker .k(k) 726*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 727*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 728*4bdc9457SAndroid Build Coastguard Worker } 729*4bdc9457SAndroid Build Coastguard Worker } 730*4bdc9457SAndroid Build Coastguard Worker } 731*4bdc9457SAndroid Build Coastguard Worker } 732*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_div_16)733*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_div_16) { 734*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 735*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 736*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 737*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 738*4bdc9457SAndroid Build Coastguard Worker .mr(1) 739*4bdc9457SAndroid Build Coastguard Worker .nr(16) 740*4bdc9457SAndroid Build Coastguard Worker .kr(1) 741*4bdc9457SAndroid Build Coastguard Worker .sr(1) 742*4bdc9457SAndroid Build Coastguard Worker .m(1) 743*4bdc9457SAndroid Build Coastguard Worker .n(n) 744*4bdc9457SAndroid Build Coastguard Worker .k(k) 745*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 746*4bdc9457SAndroid Build Coastguard Worker } 747*4bdc9457SAndroid Build Coastguard Worker } 748*4bdc9457SAndroid Build Coastguard Worker } 749*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_cn)750*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_cn) { 751*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 752*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 753*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 754*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 755*4bdc9457SAndroid Build Coastguard Worker .mr(1) 756*4bdc9457SAndroid Build Coastguard Worker .nr(16) 757*4bdc9457SAndroid Build Coastguard Worker .kr(1) 758*4bdc9457SAndroid Build Coastguard Worker .sr(1) 759*4bdc9457SAndroid Build Coastguard Worker .m(1) 760*4bdc9457SAndroid Build Coastguard Worker .n(n) 761*4bdc9457SAndroid Build Coastguard Worker .k(k) 762*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 763*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 764*4bdc9457SAndroid Build Coastguard Worker } 765*4bdc9457SAndroid Build Coastguard Worker } 766*4bdc9457SAndroid Build Coastguard Worker } 767*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_subtile)768*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_subtile) { 769*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 770*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 771*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 772*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 773*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 774*4bdc9457SAndroid Build Coastguard Worker .mr(1) 775*4bdc9457SAndroid Build Coastguard Worker .nr(16) 776*4bdc9457SAndroid Build Coastguard Worker .kr(1) 777*4bdc9457SAndroid Build Coastguard Worker .sr(1) 778*4bdc9457SAndroid Build Coastguard Worker .m(m) 779*4bdc9457SAndroid Build Coastguard Worker .n(n) 780*4bdc9457SAndroid Build Coastguard Worker .k(k) 781*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 782*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 783*4bdc9457SAndroid Build Coastguard Worker } 784*4bdc9457SAndroid Build Coastguard Worker } 785*4bdc9457SAndroid Build Coastguard Worker } 786*4bdc9457SAndroid Build Coastguard Worker } 787*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,small_kernel)788*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, small_kernel) { 789*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 790*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 791*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 792*4bdc9457SAndroid Build Coastguard Worker .mr(1) 793*4bdc9457SAndroid Build Coastguard Worker .nr(16) 794*4bdc9457SAndroid Build Coastguard Worker .kr(1) 795*4bdc9457SAndroid Build Coastguard Worker .sr(1) 796*4bdc9457SAndroid Build Coastguard Worker .m(1) 797*4bdc9457SAndroid Build Coastguard Worker .n(16) 798*4bdc9457SAndroid Build Coastguard Worker .k(k) 799*4bdc9457SAndroid Build Coastguard Worker .ks(3) 800*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 801*4bdc9457SAndroid Build Coastguard Worker } 802*4bdc9457SAndroid Build Coastguard Worker } 803*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,small_kernel_subtile)804*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, small_kernel_subtile) { 805*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 806*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 807*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 808*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 809*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 810*4bdc9457SAndroid Build Coastguard Worker .mr(1) 811*4bdc9457SAndroid Build Coastguard Worker .nr(16) 812*4bdc9457SAndroid Build Coastguard Worker .kr(1) 813*4bdc9457SAndroid Build Coastguard Worker .sr(1) 814*4bdc9457SAndroid Build Coastguard Worker .m(m) 815*4bdc9457SAndroid Build Coastguard Worker .n(n) 816*4bdc9457SAndroid Build Coastguard Worker .k(k) 817*4bdc9457SAndroid Build Coastguard Worker .ks(3) 818*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 819*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 820*4bdc9457SAndroid Build Coastguard Worker } 821*4bdc9457SAndroid Build Coastguard Worker } 822*4bdc9457SAndroid Build Coastguard Worker } 823*4bdc9457SAndroid Build Coastguard Worker } 824*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_small_kernel)825*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_small_kernel) { 826*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 827*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 828*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 829*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 830*4bdc9457SAndroid Build Coastguard Worker .mr(1) 831*4bdc9457SAndroid Build Coastguard Worker .nr(16) 832*4bdc9457SAndroid Build Coastguard Worker .kr(1) 833*4bdc9457SAndroid Build Coastguard Worker .sr(1) 834*4bdc9457SAndroid Build Coastguard Worker .m(1) 835*4bdc9457SAndroid Build Coastguard Worker .n(n) 836*4bdc9457SAndroid Build Coastguard Worker .k(k) 837*4bdc9457SAndroid Build Coastguard Worker .ks(3) 838*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 839*4bdc9457SAndroid Build Coastguard Worker } 840*4bdc9457SAndroid Build Coastguard Worker } 841*4bdc9457SAndroid Build Coastguard Worker } 842*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_small_kernel)843*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_small_kernel) { 844*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 845*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 846*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 847*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 848*4bdc9457SAndroid Build Coastguard Worker .mr(1) 849*4bdc9457SAndroid Build Coastguard Worker .nr(16) 850*4bdc9457SAndroid Build Coastguard Worker .kr(1) 851*4bdc9457SAndroid Build Coastguard Worker .sr(1) 852*4bdc9457SAndroid Build Coastguard Worker .m(1) 853*4bdc9457SAndroid Build Coastguard Worker .n(n) 854*4bdc9457SAndroid Build Coastguard Worker .k(k) 855*4bdc9457SAndroid Build Coastguard Worker .ks(3) 856*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 857*4bdc9457SAndroid Build Coastguard Worker } 858*4bdc9457SAndroid Build Coastguard Worker } 859*4bdc9457SAndroid Build Coastguard Worker } 860*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)861*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 862*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 863*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 864*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 865*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 866*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 867*4bdc9457SAndroid Build Coastguard Worker .mr(1) 868*4bdc9457SAndroid Build Coastguard Worker .nr(16) 869*4bdc9457SAndroid Build Coastguard Worker .kr(1) 870*4bdc9457SAndroid Build Coastguard Worker .sr(1) 871*4bdc9457SAndroid Build Coastguard Worker .m(m) 872*4bdc9457SAndroid Build Coastguard Worker .n(n) 873*4bdc9457SAndroid Build Coastguard Worker .k(k) 874*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 875*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 877*4bdc9457SAndroid Build Coastguard Worker } 878*4bdc9457SAndroid Build Coastguard Worker } 879*4bdc9457SAndroid Build Coastguard Worker } 880*4bdc9457SAndroid Build Coastguard Worker } 881*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,a_offset)882*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, a_offset) { 883*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 884*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 885*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 886*4bdc9457SAndroid Build Coastguard Worker .mr(1) 887*4bdc9457SAndroid Build Coastguard Worker .nr(16) 888*4bdc9457SAndroid Build Coastguard Worker .kr(1) 889*4bdc9457SAndroid Build Coastguard Worker .sr(1) 890*4bdc9457SAndroid Build Coastguard Worker .m(1) 891*4bdc9457SAndroid Build Coastguard Worker .n(16) 892*4bdc9457SAndroid Build Coastguard Worker .k(k) 893*4bdc9457SAndroid Build Coastguard Worker .ks(3) 894*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 895*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 896*4bdc9457SAndroid Build Coastguard Worker } 897*4bdc9457SAndroid Build Coastguard Worker } 898*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,zero)899*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, zero) { 900*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 901*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 902*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 1; mz++) { 903*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 904*4bdc9457SAndroid Build Coastguard Worker .mr(1) 905*4bdc9457SAndroid Build Coastguard Worker .nr(16) 906*4bdc9457SAndroid Build Coastguard Worker .kr(1) 907*4bdc9457SAndroid Build Coastguard Worker .sr(1) 908*4bdc9457SAndroid Build Coastguard Worker .m(1) 909*4bdc9457SAndroid Build Coastguard Worker .n(16) 910*4bdc9457SAndroid Build Coastguard Worker .k(k) 911*4bdc9457SAndroid Build Coastguard Worker .ks(3) 912*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 913*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 914*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 915*4bdc9457SAndroid Build Coastguard Worker } 916*4bdc9457SAndroid Build Coastguard Worker } 917*4bdc9457SAndroid Build Coastguard Worker } 918*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,qmin)919*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, qmin) { 920*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 921*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 922*4bdc9457SAndroid Build Coastguard Worker .mr(1) 923*4bdc9457SAndroid Build Coastguard Worker .nr(16) 924*4bdc9457SAndroid Build Coastguard Worker .kr(1) 925*4bdc9457SAndroid Build Coastguard Worker .sr(1) 926*4bdc9457SAndroid Build Coastguard Worker .m(1) 927*4bdc9457SAndroid Build Coastguard Worker .n(16) 928*4bdc9457SAndroid Build Coastguard Worker .k(4) 929*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 930*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 931*4bdc9457SAndroid Build Coastguard Worker } 932*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,qmax)933*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, qmax) { 934*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 935*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 936*4bdc9457SAndroid Build Coastguard Worker .mr(1) 937*4bdc9457SAndroid Build Coastguard Worker .nr(16) 938*4bdc9457SAndroid Build Coastguard Worker .kr(1) 939*4bdc9457SAndroid Build Coastguard Worker .sr(1) 940*4bdc9457SAndroid Build Coastguard Worker .m(1) 941*4bdc9457SAndroid Build Coastguard Worker .n(16) 942*4bdc9457SAndroid Build Coastguard Worker .k(4) 943*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 944*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 945*4bdc9457SAndroid Build Coastguard Worker } 946*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64,strided_cm)947*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 948*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 949*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 950*4bdc9457SAndroid Build Coastguard Worker .mr(1) 951*4bdc9457SAndroid Build Coastguard Worker .nr(16) 952*4bdc9457SAndroid Build Coastguard Worker .kr(1) 953*4bdc9457SAndroid Build Coastguard Worker .sr(1) 954*4bdc9457SAndroid Build Coastguard Worker .m(1) 955*4bdc9457SAndroid Build Coastguard Worker .n(16) 956*4bdc9457SAndroid Build Coastguard Worker .k(4) 957*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 958*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 959*4bdc9457SAndroid Build Coastguard Worker } 960*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 961*4bdc9457SAndroid Build Coastguard Worker 962*4bdc9457SAndroid Build Coastguard Worker 963*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2)964*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2) { 965*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 966*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 967*4bdc9457SAndroid Build Coastguard Worker .mr(4) 968*4bdc9457SAndroid Build Coastguard Worker .nr(16) 969*4bdc9457SAndroid Build Coastguard Worker .kr(1) 970*4bdc9457SAndroid Build Coastguard Worker .sr(1) 971*4bdc9457SAndroid Build Coastguard Worker .m(4) 972*4bdc9457SAndroid Build Coastguard Worker .n(16) 973*4bdc9457SAndroid Build Coastguard Worker .k(2) 974*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 975*4bdc9457SAndroid Build Coastguard Worker } 976*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,strided_cn)977*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, strided_cn) { 978*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 979*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 980*4bdc9457SAndroid Build Coastguard Worker .mr(4) 981*4bdc9457SAndroid Build Coastguard Worker .nr(16) 982*4bdc9457SAndroid Build Coastguard Worker .kr(1) 983*4bdc9457SAndroid Build Coastguard Worker .sr(1) 984*4bdc9457SAndroid Build Coastguard Worker .m(4) 985*4bdc9457SAndroid Build Coastguard Worker .n(16) 986*4bdc9457SAndroid Build Coastguard Worker .k(2) 987*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 988*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 989*4bdc9457SAndroid Build Coastguard Worker } 990*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile)991*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile) { 992*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 993*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 994*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 995*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 996*4bdc9457SAndroid Build Coastguard Worker .mr(4) 997*4bdc9457SAndroid Build Coastguard Worker .nr(16) 998*4bdc9457SAndroid Build Coastguard Worker .kr(1) 999*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1000*4bdc9457SAndroid Build Coastguard Worker .m(m) 1001*4bdc9457SAndroid Build Coastguard Worker .n(n) 1002*4bdc9457SAndroid Build Coastguard Worker .k(2) 1003*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1004*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1005*4bdc9457SAndroid Build Coastguard Worker } 1006*4bdc9457SAndroid Build Coastguard Worker } 1007*4bdc9457SAndroid Build Coastguard Worker } 1008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_m)1009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_m) { 1010*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1011*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1012*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1013*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1014*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1015*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1016*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1017*4bdc9457SAndroid Build Coastguard Worker .m(m) 1018*4bdc9457SAndroid Build Coastguard Worker .n(16) 1019*4bdc9457SAndroid Build Coastguard Worker .k(2) 1020*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1021*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1022*4bdc9457SAndroid Build Coastguard Worker } 1023*4bdc9457SAndroid Build Coastguard Worker } 1024*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_n)1025*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_n) { 1026*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1027*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1028*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1029*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1030*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1031*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1032*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1033*4bdc9457SAndroid Build Coastguard Worker .m(4) 1034*4bdc9457SAndroid Build Coastguard Worker .n(n) 1035*4bdc9457SAndroid Build Coastguard Worker .k(2) 1036*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1037*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1038*4bdc9457SAndroid Build Coastguard Worker } 1039*4bdc9457SAndroid Build Coastguard Worker } 1040*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2)1041*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2) { 1042*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1043*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 1044*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1045*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1046*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1047*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1048*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1049*4bdc9457SAndroid Build Coastguard Worker .m(4) 1050*4bdc9457SAndroid Build Coastguard Worker .n(16) 1051*4bdc9457SAndroid Build Coastguard Worker .k(k) 1052*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1053*4bdc9457SAndroid Build Coastguard Worker } 1054*4bdc9457SAndroid Build Coastguard Worker } 1055*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_subtile)1056*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_subtile) { 1057*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1058*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 1059*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1060*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1061*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1062*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1063*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1064*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1065*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1066*4bdc9457SAndroid Build Coastguard Worker .m(m) 1067*4bdc9457SAndroid Build Coastguard Worker .n(n) 1068*4bdc9457SAndroid Build Coastguard Worker .k(k) 1069*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1070*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1071*4bdc9457SAndroid Build Coastguard Worker } 1072*4bdc9457SAndroid Build Coastguard Worker } 1073*4bdc9457SAndroid Build Coastguard Worker } 1074*4bdc9457SAndroid Build Coastguard Worker } 1075*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2)1076*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2) { 1077*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1078*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 1079*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1080*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1081*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1082*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1083*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1084*4bdc9457SAndroid Build Coastguard Worker .m(4) 1085*4bdc9457SAndroid Build Coastguard Worker .n(16) 1086*4bdc9457SAndroid Build Coastguard Worker .k(k) 1087*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1088*4bdc9457SAndroid Build Coastguard Worker } 1089*4bdc9457SAndroid Build Coastguard Worker } 1090*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_subtile)1091*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_subtile) { 1092*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1093*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 1094*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1095*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1096*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1097*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1098*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1099*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1100*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1101*4bdc9457SAndroid Build Coastguard Worker .m(m) 1102*4bdc9457SAndroid Build Coastguard Worker .n(n) 1103*4bdc9457SAndroid Build Coastguard Worker .k(k) 1104*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1105*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1106*4bdc9457SAndroid Build Coastguard Worker } 1107*4bdc9457SAndroid Build Coastguard Worker } 1108*4bdc9457SAndroid Build Coastguard Worker } 1109*4bdc9457SAndroid Build Coastguard Worker } 1110*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_div_2)1111*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_div_2) { 1112*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1113*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 1114*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1115*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1116*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1117*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1118*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1119*4bdc9457SAndroid Build Coastguard Worker .m(4) 1120*4bdc9457SAndroid Build Coastguard Worker .n(16) 1121*4bdc9457SAndroid Build Coastguard Worker .k(k) 1122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1123*4bdc9457SAndroid Build Coastguard Worker } 1124*4bdc9457SAndroid Build Coastguard Worker } 1125*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_subtile)1126*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_subtile) { 1127*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1128*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 1129*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1130*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1131*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1132*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1133*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1134*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1135*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1136*4bdc9457SAndroid Build Coastguard Worker .m(m) 1137*4bdc9457SAndroid Build Coastguard Worker .n(n) 1138*4bdc9457SAndroid Build Coastguard Worker .k(k) 1139*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1140*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1141*4bdc9457SAndroid Build Coastguard Worker } 1142*4bdc9457SAndroid Build Coastguard Worker } 1143*4bdc9457SAndroid Build Coastguard Worker } 1144*4bdc9457SAndroid Build Coastguard Worker } 1145*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16)1146*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16) { 1147*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1148*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1149*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1150*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1151*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1152*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1153*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1154*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1155*4bdc9457SAndroid Build Coastguard Worker .m(4) 1156*4bdc9457SAndroid Build Coastguard Worker .n(n) 1157*4bdc9457SAndroid Build Coastguard Worker .k(k) 1158*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1159*4bdc9457SAndroid Build Coastguard Worker } 1160*4bdc9457SAndroid Build Coastguard Worker } 1161*4bdc9457SAndroid Build Coastguard Worker } 1162*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_cn)1163*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_cn) { 1164*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1165*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1166*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1167*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1168*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1169*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1170*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1171*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1172*4bdc9457SAndroid Build Coastguard Worker .m(4) 1173*4bdc9457SAndroid Build Coastguard Worker .n(n) 1174*4bdc9457SAndroid Build Coastguard Worker .k(k) 1175*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1176*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1177*4bdc9457SAndroid Build Coastguard Worker } 1178*4bdc9457SAndroid Build Coastguard Worker } 1179*4bdc9457SAndroid Build Coastguard Worker } 1180*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_subtile)1181*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_subtile) { 1182*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1183*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1184*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1185*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1186*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1187*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1188*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1189*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1190*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1191*4bdc9457SAndroid Build Coastguard Worker .m(m) 1192*4bdc9457SAndroid Build Coastguard Worker .n(n) 1193*4bdc9457SAndroid Build Coastguard Worker .k(k) 1194*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1195*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1196*4bdc9457SAndroid Build Coastguard Worker } 1197*4bdc9457SAndroid Build Coastguard Worker } 1198*4bdc9457SAndroid Build Coastguard Worker } 1199*4bdc9457SAndroid Build Coastguard Worker } 1200*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_div_16)1201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_div_16) { 1202*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1203*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1204*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1205*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1206*4bdc9457SAndroid Build Coastguard Worker .mr(4) 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(4) 1211*4bdc9457SAndroid Build Coastguard Worker .n(n) 1212*4bdc9457SAndroid Build Coastguard Worker .k(k) 1213*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1214*4bdc9457SAndroid Build Coastguard Worker } 1215*4bdc9457SAndroid Build Coastguard Worker } 1216*4bdc9457SAndroid Build Coastguard Worker } 1217*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_cn)1218*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_cn) { 1219*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1220*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1221*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1222*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1223*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1224*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1225*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1226*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1227*4bdc9457SAndroid Build Coastguard Worker .m(4) 1228*4bdc9457SAndroid Build Coastguard Worker .n(n) 1229*4bdc9457SAndroid Build Coastguard Worker .k(k) 1230*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1231*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1232*4bdc9457SAndroid Build Coastguard Worker } 1233*4bdc9457SAndroid Build Coastguard Worker } 1234*4bdc9457SAndroid Build Coastguard Worker } 1235*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_subtile)1236*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_subtile) { 1237*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1238*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1239*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1240*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1241*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1242*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1243*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1244*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1245*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1246*4bdc9457SAndroid Build Coastguard Worker .m(m) 1247*4bdc9457SAndroid Build Coastguard Worker .n(n) 1248*4bdc9457SAndroid Build Coastguard Worker .k(k) 1249*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1250*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1251*4bdc9457SAndroid Build Coastguard Worker } 1252*4bdc9457SAndroid Build Coastguard Worker } 1253*4bdc9457SAndroid Build Coastguard Worker } 1254*4bdc9457SAndroid Build Coastguard Worker } 1255*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,small_kernel)1256*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, small_kernel) { 1257*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1258*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1259*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1260*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1261*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1262*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1263*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1264*4bdc9457SAndroid Build Coastguard Worker .m(4) 1265*4bdc9457SAndroid Build Coastguard Worker .n(16) 1266*4bdc9457SAndroid Build Coastguard Worker .k(k) 1267*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1268*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1269*4bdc9457SAndroid Build Coastguard Worker } 1270*4bdc9457SAndroid Build Coastguard Worker } 1271*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,small_kernel_subtile)1272*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, small_kernel_subtile) { 1273*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1274*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1275*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1276*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1277*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1278*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1279*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1280*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1281*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1282*4bdc9457SAndroid Build Coastguard Worker .m(m) 1283*4bdc9457SAndroid Build Coastguard Worker .n(n) 1284*4bdc9457SAndroid Build Coastguard Worker .k(k) 1285*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1286*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1287*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, 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 } 1292*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_small_kernel)1293*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_small_kernel) { 1294*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1295*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1296*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1297*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1298*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1299*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1300*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1301*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1302*4bdc9457SAndroid Build Coastguard Worker .m(4) 1303*4bdc9457SAndroid Build Coastguard Worker .n(n) 1304*4bdc9457SAndroid Build Coastguard Worker .k(k) 1305*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1306*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1307*4bdc9457SAndroid Build Coastguard Worker } 1308*4bdc9457SAndroid Build Coastguard Worker } 1309*4bdc9457SAndroid Build Coastguard Worker } 1310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_small_kernel)1311*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_small_kernel) { 1312*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1313*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1314*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1315*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1316*4bdc9457SAndroid Build Coastguard Worker .mr(4) 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(4) 1321*4bdc9457SAndroid Build Coastguard Worker .n(n) 1322*4bdc9457SAndroid Build Coastguard Worker .k(k) 1323*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1324*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, 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 TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,strided_cm_subtile)1329*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, strided_cm_subtile) { 1330*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1331*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1332*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1333*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1334*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1335*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1336*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1337*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1338*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1339*4bdc9457SAndroid Build Coastguard Worker .m(m) 1340*4bdc9457SAndroid Build Coastguard Worker .n(n) 1341*4bdc9457SAndroid Build Coastguard Worker .k(k) 1342*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 1343*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1344*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1345*4bdc9457SAndroid Build Coastguard Worker } 1346*4bdc9457SAndroid Build Coastguard Worker } 1347*4bdc9457SAndroid Build Coastguard Worker } 1348*4bdc9457SAndroid Build Coastguard Worker } 1349*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,a_offset)1350*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, a_offset) { 1351*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1352*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1353*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1354*4bdc9457SAndroid Build Coastguard Worker .mr(4) 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(4) 1359*4bdc9457SAndroid Build Coastguard Worker .n(16) 1360*4bdc9457SAndroid Build Coastguard Worker .k(k) 1361*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1362*4bdc9457SAndroid Build Coastguard Worker .a_offset(43) 1363*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1364*4bdc9457SAndroid Build Coastguard Worker } 1365*4bdc9457SAndroid Build Coastguard Worker } 1366*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,zero)1367*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, zero) { 1368*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1369*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 1370*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 1371*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1372*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1373*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1374*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1375*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1376*4bdc9457SAndroid Build Coastguard Worker .m(4) 1377*4bdc9457SAndroid Build Coastguard Worker .n(16) 1378*4bdc9457SAndroid Build Coastguard Worker .k(k) 1379*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1380*4bdc9457SAndroid Build Coastguard Worker .a_offset(43) 1381*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 1382*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1383*4bdc9457SAndroid Build Coastguard Worker } 1384*4bdc9457SAndroid Build Coastguard Worker } 1385*4bdc9457SAndroid Build Coastguard Worker } 1386*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,qmin)1387*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, qmin) { 1388*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1389*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1390*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1391*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1392*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1393*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1394*4bdc9457SAndroid Build Coastguard Worker .m(4) 1395*4bdc9457SAndroid Build Coastguard Worker .n(16) 1396*4bdc9457SAndroid Build Coastguard Worker .k(2) 1397*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1398*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1399*4bdc9457SAndroid Build Coastguard Worker } 1400*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,qmax)1401*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, qmax) { 1402*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1403*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1404*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1405*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1406*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1407*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1408*4bdc9457SAndroid Build Coastguard Worker .m(4) 1409*4bdc9457SAndroid Build Coastguard Worker .n(16) 1410*4bdc9457SAndroid Build Coastguard Worker .k(2) 1411*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1413*4bdc9457SAndroid Build Coastguard Worker } 1414*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32,strided_cm)1415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD32, strided_cm) { 1416*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1417*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1418*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1419*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1420*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1421*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1422*4bdc9457SAndroid Build Coastguard Worker .m(4) 1423*4bdc9457SAndroid Build Coastguard Worker .n(16) 1424*4bdc9457SAndroid Build Coastguard Worker .k(2) 1425*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 1426*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 1427*4bdc9457SAndroid Build Coastguard Worker } 1428*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 1429*4bdc9457SAndroid Build Coastguard Worker 1430*4bdc9457SAndroid Build Coastguard Worker 1431*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4)1432*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 1433*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1434*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1435*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1436*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1437*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1438*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1439*4bdc9457SAndroid Build Coastguard Worker .m(4) 1440*4bdc9457SAndroid Build Coastguard Worker .n(16) 1441*4bdc9457SAndroid Build Coastguard Worker .k(4) 1442*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1443*4bdc9457SAndroid Build Coastguard Worker } 1444*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,strided_cn)1445*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 1446*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1447*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1448*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1449*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1450*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1451*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1452*4bdc9457SAndroid Build Coastguard Worker .m(4) 1453*4bdc9457SAndroid Build Coastguard Worker .n(16) 1454*4bdc9457SAndroid Build Coastguard Worker .k(4) 1455*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1456*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1457*4bdc9457SAndroid Build Coastguard Worker } 1458*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)1459*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 1460*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1461*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1462*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1463*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1464*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1465*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1466*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1467*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1468*4bdc9457SAndroid Build Coastguard Worker .m(m) 1469*4bdc9457SAndroid Build Coastguard Worker .n(n) 1470*4bdc9457SAndroid Build Coastguard Worker .k(4) 1471*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1472*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1473*4bdc9457SAndroid Build Coastguard Worker } 1474*4bdc9457SAndroid Build Coastguard Worker } 1475*4bdc9457SAndroid Build Coastguard Worker } 1476*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)1477*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 1478*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1479*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1480*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1481*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1482*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1483*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1484*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1485*4bdc9457SAndroid Build Coastguard Worker .m(m) 1486*4bdc9457SAndroid Build Coastguard Worker .n(16) 1487*4bdc9457SAndroid Build Coastguard Worker .k(4) 1488*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1489*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1490*4bdc9457SAndroid Build Coastguard Worker } 1491*4bdc9457SAndroid Build Coastguard Worker } 1492*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)1493*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 1494*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1495*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1496*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1497*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1498*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1499*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1500*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1501*4bdc9457SAndroid Build Coastguard Worker .m(4) 1502*4bdc9457SAndroid Build Coastguard Worker .n(n) 1503*4bdc9457SAndroid Build Coastguard Worker .k(4) 1504*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1505*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1506*4bdc9457SAndroid Build Coastguard Worker } 1507*4bdc9457SAndroid Build Coastguard Worker } 1508*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4)1509*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 1510*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1511*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 1512*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1513*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1514*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1515*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1516*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1517*4bdc9457SAndroid Build Coastguard Worker .m(4) 1518*4bdc9457SAndroid Build Coastguard Worker .n(16) 1519*4bdc9457SAndroid Build Coastguard Worker .k(k) 1520*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1521*4bdc9457SAndroid Build Coastguard Worker } 1522*4bdc9457SAndroid Build Coastguard Worker } 1523*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)1524*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 1525*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1526*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 1527*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1528*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1529*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1530*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1531*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1532*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1533*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1534*4bdc9457SAndroid Build Coastguard Worker .m(m) 1535*4bdc9457SAndroid Build Coastguard Worker .n(n) 1536*4bdc9457SAndroid Build Coastguard Worker .k(k) 1537*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1538*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1539*4bdc9457SAndroid Build Coastguard Worker } 1540*4bdc9457SAndroid Build Coastguard Worker } 1541*4bdc9457SAndroid Build Coastguard Worker } 1542*4bdc9457SAndroid Build Coastguard Worker } 1543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4)1544*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 1545*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1546*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 1547*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1548*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1549*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1550*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1551*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1552*4bdc9457SAndroid Build Coastguard Worker .m(4) 1553*4bdc9457SAndroid Build Coastguard Worker .n(16) 1554*4bdc9457SAndroid Build Coastguard Worker .k(k) 1555*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1556*4bdc9457SAndroid Build Coastguard Worker } 1557*4bdc9457SAndroid Build Coastguard Worker } 1558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)1559*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 1560*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1561*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 1562*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1563*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1564*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1565*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1566*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1567*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1568*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1569*4bdc9457SAndroid Build Coastguard Worker .m(m) 1570*4bdc9457SAndroid Build Coastguard Worker .n(n) 1571*4bdc9457SAndroid Build Coastguard Worker .k(k) 1572*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1573*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1574*4bdc9457SAndroid Build Coastguard Worker } 1575*4bdc9457SAndroid Build Coastguard Worker } 1576*4bdc9457SAndroid Build Coastguard Worker } 1577*4bdc9457SAndroid Build Coastguard Worker } 1578*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_div_4)1579*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 1580*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1581*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 1582*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1583*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1584*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1585*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1586*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1587*4bdc9457SAndroid Build Coastguard Worker .m(4) 1588*4bdc9457SAndroid Build Coastguard Worker .n(16) 1589*4bdc9457SAndroid Build Coastguard Worker .k(k) 1590*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1591*4bdc9457SAndroid Build Coastguard Worker } 1592*4bdc9457SAndroid Build Coastguard Worker } 1593*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)1594*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 1595*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1596*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 1597*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1598*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1599*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1600*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1601*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1602*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1603*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1604*4bdc9457SAndroid Build Coastguard Worker .m(m) 1605*4bdc9457SAndroid Build Coastguard Worker .n(n) 1606*4bdc9457SAndroid Build Coastguard Worker .k(k) 1607*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1608*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1609*4bdc9457SAndroid Build Coastguard Worker } 1610*4bdc9457SAndroid Build Coastguard Worker } 1611*4bdc9457SAndroid Build Coastguard Worker } 1612*4bdc9457SAndroid Build Coastguard Worker } 1613*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16)1614*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16) { 1615*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1616*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1617*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1618*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1619*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1620*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1621*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1622*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1623*4bdc9457SAndroid Build Coastguard Worker .m(4) 1624*4bdc9457SAndroid Build Coastguard Worker .n(n) 1625*4bdc9457SAndroid Build Coastguard Worker .k(k) 1626*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1627*4bdc9457SAndroid Build Coastguard Worker } 1628*4bdc9457SAndroid Build Coastguard Worker } 1629*4bdc9457SAndroid Build Coastguard Worker } 1630*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_cn)1631*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 1632*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1633*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1634*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1635*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1636*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1637*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1638*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1639*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1640*4bdc9457SAndroid Build Coastguard Worker .m(4) 1641*4bdc9457SAndroid Build Coastguard Worker .n(n) 1642*4bdc9457SAndroid Build Coastguard Worker .k(k) 1643*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1644*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1645*4bdc9457SAndroid Build Coastguard Worker } 1646*4bdc9457SAndroid Build Coastguard Worker } 1647*4bdc9457SAndroid Build Coastguard Worker } 1648*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_subtile)1649*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_subtile) { 1650*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1651*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1652*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1653*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1654*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1655*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1656*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1657*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1658*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1659*4bdc9457SAndroid Build Coastguard Worker .m(m) 1660*4bdc9457SAndroid Build Coastguard Worker .n(n) 1661*4bdc9457SAndroid Build Coastguard Worker .k(k) 1662*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1663*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1664*4bdc9457SAndroid Build Coastguard Worker } 1665*4bdc9457SAndroid Build Coastguard Worker } 1666*4bdc9457SAndroid Build Coastguard Worker } 1667*4bdc9457SAndroid Build Coastguard Worker } 1668*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_div_16)1669*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_div_16) { 1670*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1671*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1672*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1673*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1674*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1675*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1676*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1677*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1678*4bdc9457SAndroid Build Coastguard Worker .m(4) 1679*4bdc9457SAndroid Build Coastguard Worker .n(n) 1680*4bdc9457SAndroid Build Coastguard Worker .k(k) 1681*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1682*4bdc9457SAndroid Build Coastguard Worker } 1683*4bdc9457SAndroid Build Coastguard Worker } 1684*4bdc9457SAndroid Build Coastguard Worker } 1685*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_cn)1686*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_cn) { 1687*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1688*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1689*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1690*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1691*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1692*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1693*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1694*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1695*4bdc9457SAndroid Build Coastguard Worker .m(4) 1696*4bdc9457SAndroid Build Coastguard Worker .n(n) 1697*4bdc9457SAndroid Build Coastguard Worker .k(k) 1698*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1699*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1700*4bdc9457SAndroid Build Coastguard Worker } 1701*4bdc9457SAndroid Build Coastguard Worker } 1702*4bdc9457SAndroid Build Coastguard Worker } 1703*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_subtile)1704*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_subtile) { 1705*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1706*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1707*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1708*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1709*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1710*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1711*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1712*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1713*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1714*4bdc9457SAndroid Build Coastguard Worker .m(m) 1715*4bdc9457SAndroid Build Coastguard Worker .n(n) 1716*4bdc9457SAndroid Build Coastguard Worker .k(k) 1717*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1718*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1719*4bdc9457SAndroid Build Coastguard Worker } 1720*4bdc9457SAndroid Build Coastguard Worker } 1721*4bdc9457SAndroid Build Coastguard Worker } 1722*4bdc9457SAndroid Build Coastguard Worker } 1723*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,small_kernel)1724*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, small_kernel) { 1725*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1726*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1727*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1728*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1729*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1730*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1731*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1732*4bdc9457SAndroid Build Coastguard Worker .m(4) 1733*4bdc9457SAndroid Build Coastguard Worker .n(16) 1734*4bdc9457SAndroid Build Coastguard Worker .k(k) 1735*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1736*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1737*4bdc9457SAndroid Build Coastguard Worker } 1738*4bdc9457SAndroid Build Coastguard Worker } 1739*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,small_kernel_subtile)1740*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, small_kernel_subtile) { 1741*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1742*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1743*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1744*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1745*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1746*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1747*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1748*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1749*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1750*4bdc9457SAndroid Build Coastguard Worker .m(m) 1751*4bdc9457SAndroid Build Coastguard Worker .n(n) 1752*4bdc9457SAndroid Build Coastguard Worker .k(k) 1753*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1754*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1755*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1756*4bdc9457SAndroid Build Coastguard Worker } 1757*4bdc9457SAndroid Build Coastguard Worker } 1758*4bdc9457SAndroid Build Coastguard Worker } 1759*4bdc9457SAndroid Build Coastguard Worker } 1760*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_small_kernel)1761*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_small_kernel) { 1762*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1763*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 1764*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1765*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1766*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1767*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1768*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1769*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1770*4bdc9457SAndroid Build Coastguard Worker .m(4) 1771*4bdc9457SAndroid Build Coastguard Worker .n(n) 1772*4bdc9457SAndroid Build Coastguard Worker .k(k) 1773*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1774*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1775*4bdc9457SAndroid Build Coastguard Worker } 1776*4bdc9457SAndroid Build Coastguard Worker } 1777*4bdc9457SAndroid Build Coastguard Worker } 1778*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_small_kernel)1779*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_small_kernel) { 1780*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1781*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 1782*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1783*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1784*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1785*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1786*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1787*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1788*4bdc9457SAndroid Build Coastguard Worker .m(4) 1789*4bdc9457SAndroid Build Coastguard Worker .n(n) 1790*4bdc9457SAndroid Build Coastguard Worker .k(k) 1791*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1792*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1793*4bdc9457SAndroid Build Coastguard Worker } 1794*4bdc9457SAndroid Build Coastguard Worker } 1795*4bdc9457SAndroid Build Coastguard Worker } 1796*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)1797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 1798*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1799*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1800*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1801*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 1802*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1803*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1804*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1805*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1806*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1807*4bdc9457SAndroid Build Coastguard Worker .m(m) 1808*4bdc9457SAndroid Build Coastguard Worker .n(n) 1809*4bdc9457SAndroid Build Coastguard Worker .k(k) 1810*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 1811*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1812*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1813*4bdc9457SAndroid Build Coastguard Worker } 1814*4bdc9457SAndroid Build Coastguard Worker } 1815*4bdc9457SAndroid Build Coastguard Worker } 1816*4bdc9457SAndroid Build Coastguard Worker } 1817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,a_offset)1818*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, a_offset) { 1819*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1820*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1821*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1822*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1823*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1824*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1825*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1826*4bdc9457SAndroid Build Coastguard Worker .m(4) 1827*4bdc9457SAndroid Build Coastguard Worker .n(16) 1828*4bdc9457SAndroid Build Coastguard Worker .k(k) 1829*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1830*4bdc9457SAndroid Build Coastguard Worker .a_offset(83) 1831*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1832*4bdc9457SAndroid Build Coastguard Worker } 1833*4bdc9457SAndroid Build Coastguard Worker } 1834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,zero)1835*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, zero) { 1836*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1837*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 1838*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 1839*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1840*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1841*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1842*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1843*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1844*4bdc9457SAndroid Build Coastguard Worker .m(4) 1845*4bdc9457SAndroid Build Coastguard Worker .n(16) 1846*4bdc9457SAndroid Build Coastguard Worker .k(k) 1847*4bdc9457SAndroid Build Coastguard Worker .ks(3) 1848*4bdc9457SAndroid Build Coastguard Worker .a_offset(83) 1849*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 1850*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1851*4bdc9457SAndroid Build Coastguard Worker } 1852*4bdc9457SAndroid Build Coastguard Worker } 1853*4bdc9457SAndroid Build Coastguard Worker } 1854*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,qmin)1855*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, qmin) { 1856*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1857*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1858*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1859*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1860*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1861*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1862*4bdc9457SAndroid Build Coastguard Worker .m(4) 1863*4bdc9457SAndroid Build Coastguard Worker .n(16) 1864*4bdc9457SAndroid Build Coastguard Worker .k(4) 1865*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 1866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1867*4bdc9457SAndroid Build Coastguard Worker } 1868*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,qmax)1869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, qmax) { 1870*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1871*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1872*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1873*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1874*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1875*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1876*4bdc9457SAndroid Build Coastguard Worker .m(4) 1877*4bdc9457SAndroid Build Coastguard Worker .n(16) 1878*4bdc9457SAndroid Build Coastguard Worker .k(4) 1879*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 1880*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1881*4bdc9457SAndroid Build Coastguard Worker } 1882*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64,strided_cm)1883*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 1884*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1885*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1886*4bdc9457SAndroid Build Coastguard Worker .mr(4) 1887*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1888*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1889*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1890*4bdc9457SAndroid Build Coastguard Worker .m(4) 1891*4bdc9457SAndroid Build Coastguard Worker .n(16) 1892*4bdc9457SAndroid Build Coastguard Worker .k(4) 1893*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 1894*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 1895*4bdc9457SAndroid Build Coastguard Worker } 1896*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 1897*4bdc9457SAndroid Build Coastguard Worker 1898*4bdc9457SAndroid Build Coastguard Worker 1899*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_2)1900*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_2) { 1901*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1902*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1903*4bdc9457SAndroid Build Coastguard Worker .mr(6) 1904*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1905*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1906*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1907*4bdc9457SAndroid Build Coastguard Worker .m(6) 1908*4bdc9457SAndroid Build Coastguard Worker .n(16) 1909*4bdc9457SAndroid Build Coastguard Worker .k(2) 1910*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 1911*4bdc9457SAndroid Build Coastguard Worker } 1912*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,strided_cn)1913*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, strided_cn) { 1914*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1915*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1916*4bdc9457SAndroid Build Coastguard Worker .mr(6) 1917*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1918*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1919*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1920*4bdc9457SAndroid Build Coastguard Worker .m(6) 1921*4bdc9457SAndroid Build Coastguard Worker .n(16) 1922*4bdc9457SAndroid Build Coastguard Worker .k(2) 1923*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 1924*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 1925*4bdc9457SAndroid Build Coastguard Worker } 1926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_2_subtile)1927*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_2_subtile) { 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 for (uint32_t m = 1; m <= 6; m++) { 1931*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1932*4bdc9457SAndroid Build Coastguard Worker .mr(6) 1933*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1934*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1935*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1936*4bdc9457SAndroid Build Coastguard Worker .m(m) 1937*4bdc9457SAndroid Build Coastguard Worker .n(n) 1938*4bdc9457SAndroid Build Coastguard Worker .k(2) 1939*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1940*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 1941*4bdc9457SAndroid Build Coastguard Worker } 1942*4bdc9457SAndroid Build Coastguard Worker } 1943*4bdc9457SAndroid Build Coastguard Worker } 1944*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_2_subtile_m)1945*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_2_subtile_m) { 1946*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1947*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 1948*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1949*4bdc9457SAndroid Build Coastguard Worker .mr(6) 1950*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1951*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1952*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1953*4bdc9457SAndroid Build Coastguard Worker .m(m) 1954*4bdc9457SAndroid Build Coastguard Worker .n(16) 1955*4bdc9457SAndroid Build Coastguard Worker .k(2) 1956*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1957*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 1958*4bdc9457SAndroid Build Coastguard Worker } 1959*4bdc9457SAndroid Build Coastguard Worker } 1960*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_eq_2_subtile_n)1961*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_eq_2_subtile_n) { 1962*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1963*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1964*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1965*4bdc9457SAndroid Build Coastguard Worker .mr(6) 1966*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1967*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1968*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1969*4bdc9457SAndroid Build Coastguard Worker .m(6) 1970*4bdc9457SAndroid Build Coastguard Worker .n(n) 1971*4bdc9457SAndroid Build Coastguard Worker .k(2) 1972*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 1973*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 1974*4bdc9457SAndroid Build Coastguard Worker } 1975*4bdc9457SAndroid Build Coastguard Worker } 1976*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_lt_2)1977*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_lt_2) { 1978*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1979*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 1980*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1981*4bdc9457SAndroid Build Coastguard Worker .mr(6) 1982*4bdc9457SAndroid Build Coastguard Worker .nr(16) 1983*4bdc9457SAndroid Build Coastguard Worker .kr(1) 1984*4bdc9457SAndroid Build Coastguard Worker .sr(1) 1985*4bdc9457SAndroid Build Coastguard Worker .m(6) 1986*4bdc9457SAndroid Build Coastguard Worker .n(16) 1987*4bdc9457SAndroid Build Coastguard Worker .k(k) 1988*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 1989*4bdc9457SAndroid Build Coastguard Worker } 1990*4bdc9457SAndroid Build Coastguard Worker } 1991*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_lt_2_subtile)1992*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_lt_2_subtile) { 1993*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 1994*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 1995*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 1996*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 1997*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 1998*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(m) 2003*4bdc9457SAndroid Build Coastguard Worker .n(n) 2004*4bdc9457SAndroid Build Coastguard Worker .k(k) 2005*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2006*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2007*4bdc9457SAndroid Build Coastguard Worker } 2008*4bdc9457SAndroid Build Coastguard Worker } 2009*4bdc9457SAndroid Build Coastguard Worker } 2010*4bdc9457SAndroid Build Coastguard Worker } 2011*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_gt_2)2012*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_gt_2) { 2013*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2014*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 2015*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2016*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2017*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2018*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2019*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2020*4bdc9457SAndroid Build Coastguard Worker .m(6) 2021*4bdc9457SAndroid Build Coastguard Worker .n(16) 2022*4bdc9457SAndroid Build Coastguard Worker .k(k) 2023*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2024*4bdc9457SAndroid Build Coastguard Worker } 2025*4bdc9457SAndroid Build Coastguard Worker } 2026*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_gt_2_subtile)2027*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_gt_2_subtile) { 2028*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2029*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 2030*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2031*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2032*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2033*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2034*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2035*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2036*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2037*4bdc9457SAndroid Build Coastguard Worker .m(m) 2038*4bdc9457SAndroid Build Coastguard Worker .n(n) 2039*4bdc9457SAndroid Build Coastguard Worker .k(k) 2040*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2041*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2042*4bdc9457SAndroid Build Coastguard Worker } 2043*4bdc9457SAndroid Build Coastguard Worker } 2044*4bdc9457SAndroid Build Coastguard Worker } 2045*4bdc9457SAndroid Build Coastguard Worker } 2046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_div_2)2047*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_div_2) { 2048*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2049*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 2050*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2051*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2052*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2053*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2054*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2055*4bdc9457SAndroid Build Coastguard Worker .m(6) 2056*4bdc9457SAndroid Build Coastguard Worker .n(16) 2057*4bdc9457SAndroid Build Coastguard Worker .k(k) 2058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2059*4bdc9457SAndroid Build Coastguard Worker } 2060*4bdc9457SAndroid Build Coastguard Worker } 2061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,k_div_2_subtile)2062*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, k_div_2_subtile) { 2063*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2064*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 2065*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2066*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2067*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2068*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2069*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2070*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2071*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2072*4bdc9457SAndroid Build Coastguard Worker .m(m) 2073*4bdc9457SAndroid Build Coastguard Worker .n(n) 2074*4bdc9457SAndroid Build Coastguard Worker .k(k) 2075*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2076*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2077*4bdc9457SAndroid Build Coastguard Worker } 2078*4bdc9457SAndroid Build Coastguard Worker } 2079*4bdc9457SAndroid Build Coastguard Worker } 2080*4bdc9457SAndroid Build Coastguard Worker } 2081*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_gt_16)2082*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_gt_16) { 2083*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2084*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2085*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2086*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2087*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2088*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2089*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2090*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2091*4bdc9457SAndroid Build Coastguard Worker .m(6) 2092*4bdc9457SAndroid Build Coastguard Worker .n(n) 2093*4bdc9457SAndroid Build Coastguard Worker .k(k) 2094*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2095*4bdc9457SAndroid Build Coastguard Worker } 2096*4bdc9457SAndroid Build Coastguard Worker } 2097*4bdc9457SAndroid Build Coastguard Worker } 2098*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_gt_16_strided_cn)2099*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_gt_16_strided_cn) { 2100*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2101*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2102*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2103*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2104*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2105*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2106*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2107*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2108*4bdc9457SAndroid Build Coastguard Worker .m(6) 2109*4bdc9457SAndroid Build Coastguard Worker .n(n) 2110*4bdc9457SAndroid Build Coastguard Worker .k(k) 2111*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2112*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2113*4bdc9457SAndroid Build Coastguard Worker } 2114*4bdc9457SAndroid Build Coastguard Worker } 2115*4bdc9457SAndroid Build Coastguard Worker } 2116*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_gt_16_subtile)2117*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_gt_16_subtile) { 2118*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2119*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2120*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2121*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2122*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2123*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2124*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2125*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2126*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2127*4bdc9457SAndroid Build Coastguard Worker .m(m) 2128*4bdc9457SAndroid Build Coastguard Worker .n(n) 2129*4bdc9457SAndroid Build Coastguard Worker .k(k) 2130*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2131*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2132*4bdc9457SAndroid Build Coastguard Worker } 2133*4bdc9457SAndroid Build Coastguard Worker } 2134*4bdc9457SAndroid Build Coastguard Worker } 2135*4bdc9457SAndroid Build Coastguard Worker } 2136*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_div_16)2137*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_div_16) { 2138*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2139*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2140*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2141*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2142*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2143*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2144*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2145*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2146*4bdc9457SAndroid Build Coastguard Worker .m(6) 2147*4bdc9457SAndroid Build Coastguard Worker .n(n) 2148*4bdc9457SAndroid Build Coastguard Worker .k(k) 2149*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2150*4bdc9457SAndroid Build Coastguard Worker } 2151*4bdc9457SAndroid Build Coastguard Worker } 2152*4bdc9457SAndroid Build Coastguard Worker } 2153*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_div_16_strided_cn)2154*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_div_16_strided_cn) { 2155*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2156*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2157*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2158*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2159*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2160*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2161*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2162*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2163*4bdc9457SAndroid Build Coastguard Worker .m(6) 2164*4bdc9457SAndroid Build Coastguard Worker .n(n) 2165*4bdc9457SAndroid Build Coastguard Worker .k(k) 2166*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2167*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2168*4bdc9457SAndroid Build Coastguard Worker } 2169*4bdc9457SAndroid Build Coastguard Worker } 2170*4bdc9457SAndroid Build Coastguard Worker } 2171*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_div_16_subtile)2172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_div_16_subtile) { 2173*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2174*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2175*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2176*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2177*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2178*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2179*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2180*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2181*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2182*4bdc9457SAndroid Build Coastguard Worker .m(m) 2183*4bdc9457SAndroid Build Coastguard Worker .n(n) 2184*4bdc9457SAndroid Build Coastguard Worker .k(k) 2185*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2187*4bdc9457SAndroid Build Coastguard Worker } 2188*4bdc9457SAndroid Build Coastguard Worker } 2189*4bdc9457SAndroid Build Coastguard Worker } 2190*4bdc9457SAndroid Build Coastguard Worker } 2191*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,small_kernel)2192*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, small_kernel) { 2193*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2194*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2195*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2196*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2197*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2198*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2199*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2200*4bdc9457SAndroid Build Coastguard Worker .m(6) 2201*4bdc9457SAndroid Build Coastguard Worker .n(16) 2202*4bdc9457SAndroid Build Coastguard Worker .k(k) 2203*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2204*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2205*4bdc9457SAndroid Build Coastguard Worker } 2206*4bdc9457SAndroid Build Coastguard Worker } 2207*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,small_kernel_subtile)2208*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, small_kernel_subtile) { 2209*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2210*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2211*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2212*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2213*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2214*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2215*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2216*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2217*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2218*4bdc9457SAndroid Build Coastguard Worker .m(m) 2219*4bdc9457SAndroid Build Coastguard Worker .n(n) 2220*4bdc9457SAndroid Build Coastguard Worker .k(k) 2221*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2222*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2223*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2224*4bdc9457SAndroid Build Coastguard Worker } 2225*4bdc9457SAndroid Build Coastguard Worker } 2226*4bdc9457SAndroid Build Coastguard Worker } 2227*4bdc9457SAndroid Build Coastguard Worker } 2228*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_gt_16_small_kernel)2229*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_gt_16_small_kernel) { 2230*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2231*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2232*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2233*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2234*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2235*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2236*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2237*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2238*4bdc9457SAndroid Build Coastguard Worker .m(6) 2239*4bdc9457SAndroid Build Coastguard Worker .n(n) 2240*4bdc9457SAndroid Build Coastguard Worker .k(k) 2241*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2242*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2243*4bdc9457SAndroid Build Coastguard Worker } 2244*4bdc9457SAndroid Build Coastguard Worker } 2245*4bdc9457SAndroid Build Coastguard Worker } 2246*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,n_div_16_small_kernel)2247*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, n_div_16_small_kernel) { 2248*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2249*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2250*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2251*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2252*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2253*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2254*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2255*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2256*4bdc9457SAndroid Build Coastguard Worker .m(6) 2257*4bdc9457SAndroid Build Coastguard Worker .n(n) 2258*4bdc9457SAndroid Build Coastguard Worker .k(k) 2259*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2260*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2261*4bdc9457SAndroid Build Coastguard Worker } 2262*4bdc9457SAndroid Build Coastguard Worker } 2263*4bdc9457SAndroid Build Coastguard Worker } 2264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,strided_cm_subtile)2265*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, strided_cm_subtile) { 2266*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2267*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2268*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2269*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2270*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2271*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2272*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2273*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2274*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2275*4bdc9457SAndroid Build Coastguard Worker .m(m) 2276*4bdc9457SAndroid Build Coastguard Worker .n(n) 2277*4bdc9457SAndroid Build Coastguard Worker .k(k) 2278*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2279*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2280*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2281*4bdc9457SAndroid Build Coastguard Worker } 2282*4bdc9457SAndroid Build Coastguard Worker } 2283*4bdc9457SAndroid Build Coastguard Worker } 2284*4bdc9457SAndroid Build Coastguard Worker } 2285*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,a_offset)2286*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, a_offset) { 2287*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2288*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2289*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2290*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2291*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2292*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2293*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2294*4bdc9457SAndroid Build Coastguard Worker .m(6) 2295*4bdc9457SAndroid Build Coastguard Worker .n(16) 2296*4bdc9457SAndroid Build Coastguard Worker .k(k) 2297*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2298*4bdc9457SAndroid Build Coastguard Worker .a_offset(67) 2299*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2300*4bdc9457SAndroid Build Coastguard Worker } 2301*4bdc9457SAndroid Build Coastguard Worker } 2302*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,zero)2303*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, zero) { 2304*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2305*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 2306*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 6; mz++) { 2307*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2308*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2309*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2310*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2311*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2312*4bdc9457SAndroid Build Coastguard Worker .m(6) 2313*4bdc9457SAndroid Build Coastguard Worker .n(16) 2314*4bdc9457SAndroid Build Coastguard Worker .k(k) 2315*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2316*4bdc9457SAndroid Build Coastguard Worker .a_offset(67) 2317*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 2318*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2319*4bdc9457SAndroid Build Coastguard Worker } 2320*4bdc9457SAndroid Build Coastguard Worker } 2321*4bdc9457SAndroid Build Coastguard Worker } 2322*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,qmin)2323*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, qmin) { 2324*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2325*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2326*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2327*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2328*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2329*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2330*4bdc9457SAndroid Build Coastguard Worker .m(6) 2331*4bdc9457SAndroid Build Coastguard Worker .n(16) 2332*4bdc9457SAndroid Build Coastguard Worker .k(2) 2333*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2334*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2335*4bdc9457SAndroid Build Coastguard Worker } 2336*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,qmax)2337*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, qmax) { 2338*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2339*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2340*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2341*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2342*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2343*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2344*4bdc9457SAndroid Build Coastguard Worker .m(6) 2345*4bdc9457SAndroid Build Coastguard Worker .n(16) 2346*4bdc9457SAndroid Build Coastguard Worker .k(2) 2347*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2348*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2349*4bdc9457SAndroid Build Coastguard Worker } 2350*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55,strided_cm)2351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55, strided_cm) { 2352*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2353*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2354*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 2359*4bdc9457SAndroid Build Coastguard Worker .n(16) 2360*4bdc9457SAndroid Build Coastguard Worker .k(2) 2361*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2362*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55, xnn_init_f16_minmax_neon_params); 2363*4bdc9457SAndroid Build Coastguard Worker } 2364*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 2365*4bdc9457SAndroid Build Coastguard Worker 2366*4bdc9457SAndroid Build Coastguard Worker 2367*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4)2368*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4) { 2369*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2370*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2371*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 2376*4bdc9457SAndroid Build Coastguard Worker .n(16) 2377*4bdc9457SAndroid Build Coastguard Worker .k(4) 2378*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2379*4bdc9457SAndroid Build Coastguard Worker } 2380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,strided_cn)2381*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, strided_cn) { 2382*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2383*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2384*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2385*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2386*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2387*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2388*4bdc9457SAndroid Build Coastguard Worker .m(6) 2389*4bdc9457SAndroid Build Coastguard Worker .n(16) 2390*4bdc9457SAndroid Build Coastguard Worker .k(4) 2391*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2392*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2393*4bdc9457SAndroid Build Coastguard Worker } 2394*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4_subtile)2395*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4_subtile) { 2396*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2397*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2398*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2399*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2400*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2401*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2402*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2403*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2404*4bdc9457SAndroid Build Coastguard Worker .m(m) 2405*4bdc9457SAndroid Build Coastguard Worker .n(n) 2406*4bdc9457SAndroid Build Coastguard Worker .k(4) 2407*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2408*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2409*4bdc9457SAndroid Build Coastguard Worker } 2410*4bdc9457SAndroid Build Coastguard Worker } 2411*4bdc9457SAndroid Build Coastguard Worker } 2412*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4_subtile_m)2413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4_subtile_m) { 2414*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2415*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2416*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2417*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2418*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2419*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2420*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2421*4bdc9457SAndroid Build Coastguard Worker .m(m) 2422*4bdc9457SAndroid Build Coastguard Worker .n(16) 2423*4bdc9457SAndroid Build Coastguard Worker .k(4) 2424*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2425*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2426*4bdc9457SAndroid Build Coastguard Worker } 2427*4bdc9457SAndroid Build Coastguard Worker } 2428*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_eq_4_subtile_n)2429*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_eq_4_subtile_n) { 2430*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2431*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2432*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2433*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2434*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2435*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2436*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2437*4bdc9457SAndroid Build Coastguard Worker .m(6) 2438*4bdc9457SAndroid Build Coastguard Worker .n(n) 2439*4bdc9457SAndroid Build Coastguard Worker .k(4) 2440*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2441*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2442*4bdc9457SAndroid Build Coastguard Worker } 2443*4bdc9457SAndroid Build Coastguard Worker } 2444*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_lt_4)2445*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_lt_4) { 2446*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2447*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2448*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2449*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2450*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2451*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2452*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2453*4bdc9457SAndroid Build Coastguard Worker .m(6) 2454*4bdc9457SAndroid Build Coastguard Worker .n(16) 2455*4bdc9457SAndroid Build Coastguard Worker .k(k) 2456*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2457*4bdc9457SAndroid Build Coastguard Worker } 2458*4bdc9457SAndroid Build Coastguard Worker } 2459*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_lt_4_subtile)2460*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_lt_4_subtile) { 2461*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2462*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2463*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2464*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2465*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2466*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2467*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2468*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2469*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2470*4bdc9457SAndroid Build Coastguard Worker .m(m) 2471*4bdc9457SAndroid Build Coastguard Worker .n(n) 2472*4bdc9457SAndroid Build Coastguard Worker .k(k) 2473*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2474*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2475*4bdc9457SAndroid Build Coastguard Worker } 2476*4bdc9457SAndroid Build Coastguard Worker } 2477*4bdc9457SAndroid Build Coastguard Worker } 2478*4bdc9457SAndroid Build Coastguard Worker } 2479*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_gt_4)2480*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_gt_4) { 2481*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2482*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2483*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2484*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2485*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2486*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2487*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2488*4bdc9457SAndroid Build Coastguard Worker .m(6) 2489*4bdc9457SAndroid Build Coastguard Worker .n(16) 2490*4bdc9457SAndroid Build Coastguard Worker .k(k) 2491*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2492*4bdc9457SAndroid Build Coastguard Worker } 2493*4bdc9457SAndroid Build Coastguard Worker } 2494*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_gt_4_subtile)2495*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_gt_4_subtile) { 2496*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2497*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2498*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2499*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2500*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2501*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2502*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2503*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2504*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2505*4bdc9457SAndroid Build Coastguard Worker .m(m) 2506*4bdc9457SAndroid Build Coastguard Worker .n(n) 2507*4bdc9457SAndroid Build Coastguard Worker .k(k) 2508*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2509*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2510*4bdc9457SAndroid Build Coastguard Worker } 2511*4bdc9457SAndroid Build Coastguard Worker } 2512*4bdc9457SAndroid Build Coastguard Worker } 2513*4bdc9457SAndroid Build Coastguard Worker } 2514*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_div_4)2515*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_div_4) { 2516*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2517*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2518*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2519*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2520*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2521*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2522*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2523*4bdc9457SAndroid Build Coastguard Worker .m(6) 2524*4bdc9457SAndroid Build Coastguard Worker .n(16) 2525*4bdc9457SAndroid Build Coastguard Worker .k(k) 2526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2527*4bdc9457SAndroid Build Coastguard Worker } 2528*4bdc9457SAndroid Build Coastguard Worker } 2529*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,k_div_4_subtile)2530*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, k_div_4_subtile) { 2531*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2532*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2533*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2534*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2535*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2536*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2537*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2538*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2539*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2540*4bdc9457SAndroid Build Coastguard Worker .m(m) 2541*4bdc9457SAndroid Build Coastguard Worker .n(n) 2542*4bdc9457SAndroid Build Coastguard Worker .k(k) 2543*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2544*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2545*4bdc9457SAndroid Build Coastguard Worker } 2546*4bdc9457SAndroid Build Coastguard Worker } 2547*4bdc9457SAndroid Build Coastguard Worker } 2548*4bdc9457SAndroid Build Coastguard Worker } 2549*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_gt_16)2550*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_gt_16) { 2551*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2552*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2553*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2554*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2555*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2556*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2557*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2558*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2559*4bdc9457SAndroid Build Coastguard Worker .m(6) 2560*4bdc9457SAndroid Build Coastguard Worker .n(n) 2561*4bdc9457SAndroid Build Coastguard Worker .k(k) 2562*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2563*4bdc9457SAndroid Build Coastguard Worker } 2564*4bdc9457SAndroid Build Coastguard Worker } 2565*4bdc9457SAndroid Build Coastguard Worker } 2566*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_gt_16_strided_cn)2567*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_gt_16_strided_cn) { 2568*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2569*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2570*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2571*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2572*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2573*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2574*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2575*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2576*4bdc9457SAndroid Build Coastguard Worker .m(6) 2577*4bdc9457SAndroid Build Coastguard Worker .n(n) 2578*4bdc9457SAndroid Build Coastguard Worker .k(k) 2579*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2580*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2581*4bdc9457SAndroid Build Coastguard Worker } 2582*4bdc9457SAndroid Build Coastguard Worker } 2583*4bdc9457SAndroid Build Coastguard Worker } 2584*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_gt_16_subtile)2585*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_gt_16_subtile) { 2586*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2587*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2588*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2589*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2590*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2591*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2592*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2593*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2594*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2595*4bdc9457SAndroid Build Coastguard Worker .m(m) 2596*4bdc9457SAndroid Build Coastguard Worker .n(n) 2597*4bdc9457SAndroid Build Coastguard Worker .k(k) 2598*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2599*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2600*4bdc9457SAndroid Build Coastguard Worker } 2601*4bdc9457SAndroid Build Coastguard Worker } 2602*4bdc9457SAndroid Build Coastguard Worker } 2603*4bdc9457SAndroid Build Coastguard Worker } 2604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_div_16)2605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_div_16) { 2606*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2607*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2608*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2609*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2610*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2611*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2612*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2613*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2614*4bdc9457SAndroid Build Coastguard Worker .m(6) 2615*4bdc9457SAndroid Build Coastguard Worker .n(n) 2616*4bdc9457SAndroid Build Coastguard Worker .k(k) 2617*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2618*4bdc9457SAndroid Build Coastguard Worker } 2619*4bdc9457SAndroid Build Coastguard Worker } 2620*4bdc9457SAndroid Build Coastguard Worker } 2621*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_div_16_strided_cn)2622*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_div_16_strided_cn) { 2623*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2624*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2625*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2626*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2627*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2628*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2629*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2630*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2631*4bdc9457SAndroid Build Coastguard Worker .m(6) 2632*4bdc9457SAndroid Build Coastguard Worker .n(n) 2633*4bdc9457SAndroid Build Coastguard Worker .k(k) 2634*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2635*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2636*4bdc9457SAndroid Build Coastguard Worker } 2637*4bdc9457SAndroid Build Coastguard Worker } 2638*4bdc9457SAndroid Build Coastguard Worker } 2639*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_div_16_subtile)2640*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_div_16_subtile) { 2641*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2642*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2643*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2644*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2645*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2646*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2647*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2648*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2649*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2650*4bdc9457SAndroid Build Coastguard Worker .m(m) 2651*4bdc9457SAndroid Build Coastguard Worker .n(n) 2652*4bdc9457SAndroid Build Coastguard Worker .k(k) 2653*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2654*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2655*4bdc9457SAndroid Build Coastguard Worker } 2656*4bdc9457SAndroid Build Coastguard Worker } 2657*4bdc9457SAndroid Build Coastguard Worker } 2658*4bdc9457SAndroid Build Coastguard Worker } 2659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,small_kernel)2660*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, small_kernel) { 2661*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2662*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2663*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2664*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2665*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2666*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2667*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2668*4bdc9457SAndroid Build Coastguard Worker .m(6) 2669*4bdc9457SAndroid Build Coastguard Worker .n(16) 2670*4bdc9457SAndroid Build Coastguard Worker .k(k) 2671*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2672*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2673*4bdc9457SAndroid Build Coastguard Worker } 2674*4bdc9457SAndroid Build Coastguard Worker } 2675*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,small_kernel_subtile)2676*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, small_kernel_subtile) { 2677*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2678*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2679*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2680*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2681*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2682*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2683*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2684*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2685*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2686*4bdc9457SAndroid Build Coastguard Worker .m(m) 2687*4bdc9457SAndroid Build Coastguard Worker .n(n) 2688*4bdc9457SAndroid Build Coastguard Worker .k(k) 2689*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2690*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2691*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2692*4bdc9457SAndroid Build Coastguard Worker } 2693*4bdc9457SAndroid Build Coastguard Worker } 2694*4bdc9457SAndroid Build Coastguard Worker } 2695*4bdc9457SAndroid Build Coastguard Worker } 2696*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_gt_16_small_kernel)2697*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_gt_16_small_kernel) { 2698*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2699*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 2700*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2701*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2702*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2703*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2704*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2705*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2706*4bdc9457SAndroid Build Coastguard Worker .m(6) 2707*4bdc9457SAndroid Build Coastguard Worker .n(n) 2708*4bdc9457SAndroid Build Coastguard Worker .k(k) 2709*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2710*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2711*4bdc9457SAndroid Build Coastguard Worker } 2712*4bdc9457SAndroid Build Coastguard Worker } 2713*4bdc9457SAndroid Build Coastguard Worker } 2714*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,n_div_16_small_kernel)2715*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, n_div_16_small_kernel) { 2716*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2717*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 2718*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2719*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2720*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2721*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2722*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2723*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2724*4bdc9457SAndroid Build Coastguard Worker .m(6) 2725*4bdc9457SAndroid Build Coastguard Worker .n(n) 2726*4bdc9457SAndroid Build Coastguard Worker .k(k) 2727*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2728*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2729*4bdc9457SAndroid Build Coastguard Worker } 2730*4bdc9457SAndroid Build Coastguard Worker } 2731*4bdc9457SAndroid Build Coastguard Worker } 2732*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,strided_cm_subtile)2733*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, strided_cm_subtile) { 2734*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2735*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2736*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2737*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2738*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2739*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2740*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2741*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2742*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2743*4bdc9457SAndroid Build Coastguard Worker .m(m) 2744*4bdc9457SAndroid Build Coastguard Worker .n(n) 2745*4bdc9457SAndroid Build Coastguard Worker .k(k) 2746*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2747*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2748*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2749*4bdc9457SAndroid Build Coastguard Worker } 2750*4bdc9457SAndroid Build Coastguard Worker } 2751*4bdc9457SAndroid Build Coastguard Worker } 2752*4bdc9457SAndroid Build Coastguard Worker } 2753*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,a_offset)2754*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, a_offset) { 2755*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2756*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2757*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2758*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2759*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2760*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2761*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2762*4bdc9457SAndroid Build Coastguard Worker .m(6) 2763*4bdc9457SAndroid Build Coastguard Worker .n(16) 2764*4bdc9457SAndroid Build Coastguard Worker .k(k) 2765*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2766*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 2767*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2768*4bdc9457SAndroid Build Coastguard Worker } 2769*4bdc9457SAndroid Build Coastguard Worker } 2770*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,zero)2771*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, zero) { 2772*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2773*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 2774*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 6; mz++) { 2775*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2776*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2777*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2778*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2779*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2780*4bdc9457SAndroid Build Coastguard Worker .m(6) 2781*4bdc9457SAndroid Build Coastguard Worker .n(16) 2782*4bdc9457SAndroid Build Coastguard Worker .k(k) 2783*4bdc9457SAndroid Build Coastguard Worker .ks(3) 2784*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 2785*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 2786*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2787*4bdc9457SAndroid Build Coastguard Worker } 2788*4bdc9457SAndroid Build Coastguard Worker } 2789*4bdc9457SAndroid Build Coastguard Worker } 2790*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,qmin)2791*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, qmin) { 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(16) 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(16) 2800*4bdc9457SAndroid Build Coastguard Worker .k(4) 2801*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 2802*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2803*4bdc9457SAndroid Build Coastguard Worker } 2804*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,qmax)2805*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, qmax) { 2806*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2807*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2808*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2809*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2810*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2811*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2812*4bdc9457SAndroid Build Coastguard Worker .m(6) 2813*4bdc9457SAndroid Build Coastguard Worker .n(16) 2814*4bdc9457SAndroid Build Coastguard Worker .k(4) 2815*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 2816*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2817*4bdc9457SAndroid Build Coastguard Worker } 2818*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0,strided_cm)2819*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A55R0, strided_cm) { 2820*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2821*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2822*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2823*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2824*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2825*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2826*4bdc9457SAndroid Build Coastguard Worker .m(6) 2827*4bdc9457SAndroid Build Coastguard Worker .n(16) 2828*4bdc9457SAndroid Build Coastguard Worker .k(4) 2829*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 2830*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a55r0, xnn_init_f16_minmax_neon_params); 2831*4bdc9457SAndroid Build Coastguard Worker } 2832*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 2833*4bdc9457SAndroid Build Coastguard Worker 2834*4bdc9457SAndroid Build Coastguard Worker 2835*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4)2836*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4) { 2837*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2838*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2839*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2840*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2841*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2842*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2843*4bdc9457SAndroid Build Coastguard Worker .m(6) 2844*4bdc9457SAndroid Build Coastguard Worker .n(16) 2845*4bdc9457SAndroid Build Coastguard Worker .k(4) 2846*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2847*4bdc9457SAndroid Build Coastguard Worker } 2848*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,strided_cn)2849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, strided_cn) { 2850*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2851*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2852*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2853*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2854*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2855*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2856*4bdc9457SAndroid Build Coastguard Worker .m(6) 2857*4bdc9457SAndroid Build Coastguard Worker .n(16) 2858*4bdc9457SAndroid Build Coastguard Worker .k(4) 2859*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 2860*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2861*4bdc9457SAndroid Build Coastguard Worker } 2862*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4_subtile)2863*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4_subtile) { 2864*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2865*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2866*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2867*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2868*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2869*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2870*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2871*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2872*4bdc9457SAndroid Build Coastguard Worker .m(m) 2873*4bdc9457SAndroid Build Coastguard Worker .n(n) 2874*4bdc9457SAndroid Build Coastguard Worker .k(4) 2875*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2877*4bdc9457SAndroid Build Coastguard Worker } 2878*4bdc9457SAndroid Build Coastguard Worker } 2879*4bdc9457SAndroid Build Coastguard Worker } 2880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4_subtile_m)2881*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4_subtile_m) { 2882*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2883*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2884*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2885*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2886*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2887*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2888*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2889*4bdc9457SAndroid Build Coastguard Worker .m(m) 2890*4bdc9457SAndroid Build Coastguard Worker .n(16) 2891*4bdc9457SAndroid Build Coastguard Worker .k(4) 2892*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2893*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2894*4bdc9457SAndroid Build Coastguard Worker } 2895*4bdc9457SAndroid Build Coastguard Worker } 2896*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_eq_4_subtile_n)2897*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_eq_4_subtile_n) { 2898*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2899*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2900*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2901*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2902*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2903*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2904*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2905*4bdc9457SAndroid Build Coastguard Worker .m(6) 2906*4bdc9457SAndroid Build Coastguard Worker .n(n) 2907*4bdc9457SAndroid Build Coastguard Worker .k(4) 2908*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2909*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2910*4bdc9457SAndroid Build Coastguard Worker } 2911*4bdc9457SAndroid Build Coastguard Worker } 2912*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_lt_4)2913*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_lt_4) { 2914*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2915*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2916*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2917*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2918*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2919*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2920*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2921*4bdc9457SAndroid Build Coastguard Worker .m(6) 2922*4bdc9457SAndroid Build Coastguard Worker .n(16) 2923*4bdc9457SAndroid Build Coastguard Worker .k(k) 2924*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2925*4bdc9457SAndroid Build Coastguard Worker } 2926*4bdc9457SAndroid Build Coastguard Worker } 2927*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_lt_4_subtile)2928*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_lt_4_subtile) { 2929*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2930*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 2931*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2932*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2933*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2934*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2935*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2936*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2937*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2938*4bdc9457SAndroid Build Coastguard Worker .m(m) 2939*4bdc9457SAndroid Build Coastguard Worker .n(n) 2940*4bdc9457SAndroid Build Coastguard Worker .k(k) 2941*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2942*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2943*4bdc9457SAndroid Build Coastguard Worker } 2944*4bdc9457SAndroid Build Coastguard Worker } 2945*4bdc9457SAndroid Build Coastguard Worker } 2946*4bdc9457SAndroid Build Coastguard Worker } 2947*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_gt_4)2948*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_gt_4) { 2949*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2950*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2951*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2952*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2953*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2954*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2955*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2956*4bdc9457SAndroid Build Coastguard Worker .m(6) 2957*4bdc9457SAndroid Build Coastguard Worker .n(16) 2958*4bdc9457SAndroid Build Coastguard Worker .k(k) 2959*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2960*4bdc9457SAndroid Build Coastguard Worker } 2961*4bdc9457SAndroid Build Coastguard Worker } 2962*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_gt_4_subtile)2963*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_gt_4_subtile) { 2964*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2965*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 2966*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 2967*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 2968*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2969*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2970*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2971*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2972*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2973*4bdc9457SAndroid Build Coastguard Worker .m(m) 2974*4bdc9457SAndroid Build Coastguard Worker .n(n) 2975*4bdc9457SAndroid Build Coastguard Worker .k(k) 2976*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 2977*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2978*4bdc9457SAndroid Build Coastguard Worker } 2979*4bdc9457SAndroid Build Coastguard Worker } 2980*4bdc9457SAndroid Build Coastguard Worker } 2981*4bdc9457SAndroid Build Coastguard Worker } 2982*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_div_4)2983*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_div_4) { 2984*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 2985*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 2986*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 2987*4bdc9457SAndroid Build Coastguard Worker .mr(6) 2988*4bdc9457SAndroid Build Coastguard Worker .nr(16) 2989*4bdc9457SAndroid Build Coastguard Worker .kr(1) 2990*4bdc9457SAndroid Build Coastguard Worker .sr(1) 2991*4bdc9457SAndroid Build Coastguard Worker .m(6) 2992*4bdc9457SAndroid Build Coastguard Worker .n(16) 2993*4bdc9457SAndroid Build Coastguard Worker .k(k) 2994*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 2995*4bdc9457SAndroid Build Coastguard Worker } 2996*4bdc9457SAndroid Build Coastguard Worker } 2997*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,k_div_4_subtile)2998*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, k_div_4_subtile) { 2999*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3000*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3001*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3002*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3003*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3004*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3005*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3006*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3007*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3008*4bdc9457SAndroid Build Coastguard Worker .m(m) 3009*4bdc9457SAndroid Build Coastguard Worker .n(n) 3010*4bdc9457SAndroid Build Coastguard Worker .k(k) 3011*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3012*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3013*4bdc9457SAndroid Build Coastguard Worker } 3014*4bdc9457SAndroid Build Coastguard Worker } 3015*4bdc9457SAndroid Build Coastguard Worker } 3016*4bdc9457SAndroid Build Coastguard Worker } 3017*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_gt_16)3018*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_gt_16) { 3019*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3020*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3021*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3022*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3023*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3024*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3025*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3026*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3027*4bdc9457SAndroid Build Coastguard Worker .m(6) 3028*4bdc9457SAndroid Build Coastguard Worker .n(n) 3029*4bdc9457SAndroid Build Coastguard Worker .k(k) 3030*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3031*4bdc9457SAndroid Build Coastguard Worker } 3032*4bdc9457SAndroid Build Coastguard Worker } 3033*4bdc9457SAndroid Build Coastguard Worker } 3034*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_gt_16_strided_cn)3035*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_gt_16_strided_cn) { 3036*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3037*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3038*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3039*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3040*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3041*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3042*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3043*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3044*4bdc9457SAndroid Build Coastguard Worker .m(6) 3045*4bdc9457SAndroid Build Coastguard Worker .n(n) 3046*4bdc9457SAndroid Build Coastguard Worker .k(k) 3047*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3048*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3049*4bdc9457SAndroid Build Coastguard Worker } 3050*4bdc9457SAndroid Build Coastguard Worker } 3051*4bdc9457SAndroid Build Coastguard Worker } 3052*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_gt_16_subtile)3053*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_gt_16_subtile) { 3054*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3055*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3056*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3057*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3058*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3059*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3060*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3061*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3062*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3063*4bdc9457SAndroid Build Coastguard Worker .m(m) 3064*4bdc9457SAndroid Build Coastguard Worker .n(n) 3065*4bdc9457SAndroid Build Coastguard Worker .k(k) 3066*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3067*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3068*4bdc9457SAndroid Build Coastguard Worker } 3069*4bdc9457SAndroid Build Coastguard Worker } 3070*4bdc9457SAndroid Build Coastguard Worker } 3071*4bdc9457SAndroid Build Coastguard Worker } 3072*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_div_16)3073*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_div_16) { 3074*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3075*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3076*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3077*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3078*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3079*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3080*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3081*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3082*4bdc9457SAndroid Build Coastguard Worker .m(6) 3083*4bdc9457SAndroid Build Coastguard Worker .n(n) 3084*4bdc9457SAndroid Build Coastguard Worker .k(k) 3085*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3086*4bdc9457SAndroid Build Coastguard Worker } 3087*4bdc9457SAndroid Build Coastguard Worker } 3088*4bdc9457SAndroid Build Coastguard Worker } 3089*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_div_16_strided_cn)3090*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_div_16_strided_cn) { 3091*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3092*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3093*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3094*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3095*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3096*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3097*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3098*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3099*4bdc9457SAndroid Build Coastguard Worker .m(6) 3100*4bdc9457SAndroid Build Coastguard Worker .n(n) 3101*4bdc9457SAndroid Build Coastguard Worker .k(k) 3102*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3103*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3104*4bdc9457SAndroid Build Coastguard Worker } 3105*4bdc9457SAndroid Build Coastguard Worker } 3106*4bdc9457SAndroid Build Coastguard Worker } 3107*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_div_16_subtile)3108*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_div_16_subtile) { 3109*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3110*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3111*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3112*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3113*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3114*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3115*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3116*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3117*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3118*4bdc9457SAndroid Build Coastguard Worker .m(m) 3119*4bdc9457SAndroid Build Coastguard Worker .n(n) 3120*4bdc9457SAndroid Build Coastguard Worker .k(k) 3121*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3123*4bdc9457SAndroid Build Coastguard Worker } 3124*4bdc9457SAndroid Build Coastguard Worker } 3125*4bdc9457SAndroid Build Coastguard Worker } 3126*4bdc9457SAndroid Build Coastguard Worker } 3127*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,small_kernel)3128*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, small_kernel) { 3129*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3130*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3131*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3132*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3133*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3134*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3135*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3136*4bdc9457SAndroid Build Coastguard Worker .m(6) 3137*4bdc9457SAndroid Build Coastguard Worker .n(16) 3138*4bdc9457SAndroid Build Coastguard Worker .k(k) 3139*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3140*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3141*4bdc9457SAndroid Build Coastguard Worker } 3142*4bdc9457SAndroid Build Coastguard Worker } 3143*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,small_kernel_subtile)3144*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, small_kernel_subtile) { 3145*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3146*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3147*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3148*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3149*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3150*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3151*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3152*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3153*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3154*4bdc9457SAndroid Build Coastguard Worker .m(m) 3155*4bdc9457SAndroid Build Coastguard Worker .n(n) 3156*4bdc9457SAndroid Build Coastguard Worker .k(k) 3157*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3158*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3159*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3160*4bdc9457SAndroid Build Coastguard Worker } 3161*4bdc9457SAndroid Build Coastguard Worker } 3162*4bdc9457SAndroid Build Coastguard Worker } 3163*4bdc9457SAndroid Build Coastguard Worker } 3164*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_gt_16_small_kernel)3165*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_gt_16_small_kernel) { 3166*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3167*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3168*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3169*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3170*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3171*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3172*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3173*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3174*4bdc9457SAndroid Build Coastguard Worker .m(6) 3175*4bdc9457SAndroid Build Coastguard Worker .n(n) 3176*4bdc9457SAndroid Build Coastguard Worker .k(k) 3177*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3178*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3179*4bdc9457SAndroid Build Coastguard Worker } 3180*4bdc9457SAndroid Build Coastguard Worker } 3181*4bdc9457SAndroid Build Coastguard Worker } 3182*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,n_div_16_small_kernel)3183*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, n_div_16_small_kernel) { 3184*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3185*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3186*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3187*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3188*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3189*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3190*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3191*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3192*4bdc9457SAndroid Build Coastguard Worker .m(6) 3193*4bdc9457SAndroid Build Coastguard Worker .n(n) 3194*4bdc9457SAndroid Build Coastguard Worker .k(k) 3195*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3196*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3197*4bdc9457SAndroid Build Coastguard Worker } 3198*4bdc9457SAndroid Build Coastguard Worker } 3199*4bdc9457SAndroid Build Coastguard Worker } 3200*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,strided_cm_subtile)3201*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, strided_cm_subtile) { 3202*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3203*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3204*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3205*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3206*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3207*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3208*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3209*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3210*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3211*4bdc9457SAndroid Build Coastguard Worker .m(m) 3212*4bdc9457SAndroid Build Coastguard Worker .n(n) 3213*4bdc9457SAndroid Build Coastguard Worker .k(k) 3214*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 3215*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3216*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3217*4bdc9457SAndroid Build Coastguard Worker } 3218*4bdc9457SAndroid Build Coastguard Worker } 3219*4bdc9457SAndroid Build Coastguard Worker } 3220*4bdc9457SAndroid Build Coastguard Worker } 3221*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,a_offset)3222*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, a_offset) { 3223*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3224*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3225*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3226*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3227*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3228*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3229*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3230*4bdc9457SAndroid Build Coastguard Worker .m(6) 3231*4bdc9457SAndroid Build Coastguard Worker .n(16) 3232*4bdc9457SAndroid Build Coastguard Worker .k(k) 3233*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3234*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 3235*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3236*4bdc9457SAndroid Build Coastguard Worker } 3237*4bdc9457SAndroid Build Coastguard Worker } 3238*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,zero)3239*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, zero) { 3240*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3241*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3242*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 6; mz++) { 3243*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3244*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3245*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3246*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3247*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3248*4bdc9457SAndroid Build Coastguard Worker .m(6) 3249*4bdc9457SAndroid Build Coastguard Worker .n(16) 3250*4bdc9457SAndroid Build Coastguard Worker .k(k) 3251*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3252*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 3253*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 3254*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3255*4bdc9457SAndroid Build Coastguard Worker } 3256*4bdc9457SAndroid Build Coastguard Worker } 3257*4bdc9457SAndroid Build Coastguard Worker } 3258*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,qmin)3259*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, qmin) { 3260*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3261*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3262*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3263*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3264*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3265*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3266*4bdc9457SAndroid Build Coastguard Worker .m(6) 3267*4bdc9457SAndroid Build Coastguard Worker .n(16) 3268*4bdc9457SAndroid Build Coastguard Worker .k(4) 3269*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3270*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3271*4bdc9457SAndroid Build Coastguard Worker } 3272*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,qmax)3273*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, qmax) { 3274*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3275*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3276*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3277*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3278*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3279*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3280*4bdc9457SAndroid Build Coastguard Worker .m(6) 3281*4bdc9457SAndroid Build Coastguard Worker .n(16) 3282*4bdc9457SAndroid Build Coastguard Worker .k(4) 3283*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3285*4bdc9457SAndroid Build Coastguard Worker } 3286*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75,strided_cm)3287*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_CORTEX_A75, strided_cm) { 3288*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3289*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3290*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3291*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3292*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3293*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3294*4bdc9457SAndroid Build Coastguard Worker .m(6) 3295*4bdc9457SAndroid Build Coastguard Worker .n(16) 3296*4bdc9457SAndroid Build Coastguard Worker .k(4) 3297*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 3298*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_cortex_a75, xnn_init_f16_minmax_neon_params); 3299*4bdc9457SAndroid Build Coastguard Worker } 3300*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 3301*4bdc9457SAndroid Build Coastguard Worker 3302*4bdc9457SAndroid Build Coastguard Worker 3303*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2)3304*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2) { 3305*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3306*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3307*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3308*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3309*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3310*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3311*4bdc9457SAndroid Build Coastguard Worker .m(6) 3312*4bdc9457SAndroid Build Coastguard Worker .n(16) 3313*4bdc9457SAndroid Build Coastguard Worker .k(2) 3314*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3315*4bdc9457SAndroid Build Coastguard Worker } 3316*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,strided_cn)3317*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, strided_cn) { 3318*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3319*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3320*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3321*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3322*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3323*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3324*4bdc9457SAndroid Build Coastguard Worker .m(6) 3325*4bdc9457SAndroid Build Coastguard Worker .n(16) 3326*4bdc9457SAndroid Build Coastguard Worker .k(2) 3327*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3328*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3329*4bdc9457SAndroid Build Coastguard Worker } 3330*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile)3331*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile) { 3332*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3333*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3334*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3335*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3336*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3337*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3338*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3339*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3340*4bdc9457SAndroid Build Coastguard Worker .m(m) 3341*4bdc9457SAndroid Build Coastguard Worker .n(n) 3342*4bdc9457SAndroid Build Coastguard Worker .k(2) 3343*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3344*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3345*4bdc9457SAndroid Build Coastguard Worker } 3346*4bdc9457SAndroid Build Coastguard Worker } 3347*4bdc9457SAndroid Build Coastguard Worker } 3348*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_m)3349*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_m) { 3350*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3351*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3352*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3353*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3354*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3355*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3356*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3357*4bdc9457SAndroid Build Coastguard Worker .m(m) 3358*4bdc9457SAndroid Build Coastguard Worker .n(16) 3359*4bdc9457SAndroid Build Coastguard Worker .k(2) 3360*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3361*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3362*4bdc9457SAndroid Build Coastguard Worker } 3363*4bdc9457SAndroid Build Coastguard Worker } 3364*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_eq_2_subtile_n)3365*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_eq_2_subtile_n) { 3366*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3367*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3368*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3369*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3370*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3371*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3372*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3373*4bdc9457SAndroid Build Coastguard Worker .m(6) 3374*4bdc9457SAndroid Build Coastguard Worker .n(n) 3375*4bdc9457SAndroid Build Coastguard Worker .k(2) 3376*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3377*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3378*4bdc9457SAndroid Build Coastguard Worker } 3379*4bdc9457SAndroid Build Coastguard Worker } 3380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2)3381*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2) { 3382*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3383*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 3384*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3385*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3386*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3387*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3388*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3389*4bdc9457SAndroid Build Coastguard Worker .m(6) 3390*4bdc9457SAndroid Build Coastguard Worker .n(16) 3391*4bdc9457SAndroid Build Coastguard Worker .k(k) 3392*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3393*4bdc9457SAndroid Build Coastguard Worker } 3394*4bdc9457SAndroid Build Coastguard Worker } 3395*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_lt_2_subtile)3396*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_lt_2_subtile) { 3397*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3398*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 2; k++) { 3399*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3400*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3401*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3402*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3403*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3404*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3405*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3406*4bdc9457SAndroid Build Coastguard Worker .m(m) 3407*4bdc9457SAndroid Build Coastguard Worker .n(n) 3408*4bdc9457SAndroid Build Coastguard Worker .k(k) 3409*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3410*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3411*4bdc9457SAndroid Build Coastguard Worker } 3412*4bdc9457SAndroid Build Coastguard Worker } 3413*4bdc9457SAndroid Build Coastguard Worker } 3414*4bdc9457SAndroid Build Coastguard Worker } 3415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2)3416*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2) { 3417*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3418*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 3419*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3420*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3421*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3422*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3423*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3424*4bdc9457SAndroid Build Coastguard Worker .m(6) 3425*4bdc9457SAndroid Build Coastguard Worker .n(16) 3426*4bdc9457SAndroid Build Coastguard Worker .k(k) 3427*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3428*4bdc9457SAndroid Build Coastguard Worker } 3429*4bdc9457SAndroid Build Coastguard Worker } 3430*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_gt_2_subtile)3431*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_gt_2_subtile) { 3432*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3433*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 3; k < 4; k++) { 3434*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3435*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3436*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3437*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3438*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3439*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3440*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3441*4bdc9457SAndroid Build Coastguard Worker .m(m) 3442*4bdc9457SAndroid Build Coastguard Worker .n(n) 3443*4bdc9457SAndroid Build Coastguard Worker .k(k) 3444*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3445*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3446*4bdc9457SAndroid Build Coastguard Worker } 3447*4bdc9457SAndroid Build Coastguard Worker } 3448*4bdc9457SAndroid Build Coastguard Worker } 3449*4bdc9457SAndroid Build Coastguard Worker } 3450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_div_2)3451*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_div_2) { 3452*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3453*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 3454*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3455*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3456*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3457*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3458*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3459*4bdc9457SAndroid Build Coastguard Worker .m(6) 3460*4bdc9457SAndroid Build Coastguard Worker .n(16) 3461*4bdc9457SAndroid Build Coastguard Worker .k(k) 3462*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3463*4bdc9457SAndroid Build Coastguard Worker } 3464*4bdc9457SAndroid Build Coastguard Worker } 3465*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,k_div_2_subtile)3466*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, k_div_2_subtile) { 3467*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3468*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 4; k <= 20; k += 2) { 3469*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3470*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3471*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3472*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3473*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3474*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3475*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3476*4bdc9457SAndroid Build Coastguard Worker .m(m) 3477*4bdc9457SAndroid Build Coastguard Worker .n(n) 3478*4bdc9457SAndroid Build Coastguard Worker .k(k) 3479*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3480*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3481*4bdc9457SAndroid Build Coastguard Worker } 3482*4bdc9457SAndroid Build Coastguard Worker } 3483*4bdc9457SAndroid Build Coastguard Worker } 3484*4bdc9457SAndroid Build Coastguard Worker } 3485*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16)3486*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16) { 3487*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3488*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3489*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3490*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3491*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3492*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3493*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3494*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3495*4bdc9457SAndroid Build Coastguard Worker .m(6) 3496*4bdc9457SAndroid Build Coastguard Worker .n(n) 3497*4bdc9457SAndroid Build Coastguard Worker .k(k) 3498*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3499*4bdc9457SAndroid Build Coastguard Worker } 3500*4bdc9457SAndroid Build Coastguard Worker } 3501*4bdc9457SAndroid Build Coastguard Worker } 3502*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_strided_cn)3503*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_strided_cn) { 3504*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3505*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3506*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3507*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3508*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3509*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3510*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3511*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3512*4bdc9457SAndroid Build Coastguard Worker .m(6) 3513*4bdc9457SAndroid Build Coastguard Worker .n(n) 3514*4bdc9457SAndroid Build Coastguard Worker .k(k) 3515*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3516*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3517*4bdc9457SAndroid Build Coastguard Worker } 3518*4bdc9457SAndroid Build Coastguard Worker } 3519*4bdc9457SAndroid Build Coastguard Worker } 3520*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_subtile)3521*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_subtile) { 3522*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3523*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3524*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3525*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3526*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3527*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3528*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3529*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3530*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3531*4bdc9457SAndroid Build Coastguard Worker .m(m) 3532*4bdc9457SAndroid Build Coastguard Worker .n(n) 3533*4bdc9457SAndroid Build Coastguard Worker .k(k) 3534*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3535*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3536*4bdc9457SAndroid Build Coastguard Worker } 3537*4bdc9457SAndroid Build Coastguard Worker } 3538*4bdc9457SAndroid Build Coastguard Worker } 3539*4bdc9457SAndroid Build Coastguard Worker } 3540*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_div_16)3541*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_div_16) { 3542*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3543*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3544*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3545*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3546*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3547*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3548*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3549*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3550*4bdc9457SAndroid Build Coastguard Worker .m(6) 3551*4bdc9457SAndroid Build Coastguard Worker .n(n) 3552*4bdc9457SAndroid Build Coastguard Worker .k(k) 3553*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3554*4bdc9457SAndroid Build Coastguard Worker } 3555*4bdc9457SAndroid Build Coastguard Worker } 3556*4bdc9457SAndroid Build Coastguard Worker } 3557*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_strided_cn)3558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_strided_cn) { 3559*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3560*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3561*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3562*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3563*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3564*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3565*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3566*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3567*4bdc9457SAndroid Build Coastguard Worker .m(6) 3568*4bdc9457SAndroid Build Coastguard Worker .n(n) 3569*4bdc9457SAndroid Build Coastguard Worker .k(k) 3570*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3571*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3572*4bdc9457SAndroid Build Coastguard Worker } 3573*4bdc9457SAndroid Build Coastguard Worker } 3574*4bdc9457SAndroid Build Coastguard Worker } 3575*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_subtile)3576*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_subtile) { 3577*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3578*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3579*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3580*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3581*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3582*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3583*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3584*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3585*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3586*4bdc9457SAndroid Build Coastguard Worker .m(m) 3587*4bdc9457SAndroid Build Coastguard Worker .n(n) 3588*4bdc9457SAndroid Build Coastguard Worker .k(k) 3589*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3590*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3591*4bdc9457SAndroid Build Coastguard Worker } 3592*4bdc9457SAndroid Build Coastguard Worker } 3593*4bdc9457SAndroid Build Coastguard Worker } 3594*4bdc9457SAndroid Build Coastguard Worker } 3595*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,small_kernel)3596*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, small_kernel) { 3597*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3598*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3599*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3600*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3601*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3602*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3603*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3604*4bdc9457SAndroid Build Coastguard Worker .m(6) 3605*4bdc9457SAndroid Build Coastguard Worker .n(16) 3606*4bdc9457SAndroid Build Coastguard Worker .k(k) 3607*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3608*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3609*4bdc9457SAndroid Build Coastguard Worker } 3610*4bdc9457SAndroid Build Coastguard Worker } 3611*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,small_kernel_subtile)3612*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, small_kernel_subtile) { 3613*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3614*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3615*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3616*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3617*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3618*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3619*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3620*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3621*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3622*4bdc9457SAndroid Build Coastguard Worker .m(m) 3623*4bdc9457SAndroid Build Coastguard Worker .n(n) 3624*4bdc9457SAndroid Build Coastguard Worker .k(k) 3625*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3626*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3627*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3628*4bdc9457SAndroid Build Coastguard Worker } 3629*4bdc9457SAndroid Build Coastguard Worker } 3630*4bdc9457SAndroid Build Coastguard Worker } 3631*4bdc9457SAndroid Build Coastguard Worker } 3632*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_gt_16_small_kernel)3633*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_gt_16_small_kernel) { 3634*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3635*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3636*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3637*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3638*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3639*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3640*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3641*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3642*4bdc9457SAndroid Build Coastguard Worker .m(6) 3643*4bdc9457SAndroid Build Coastguard Worker .n(n) 3644*4bdc9457SAndroid Build Coastguard Worker .k(k) 3645*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3646*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3647*4bdc9457SAndroid Build Coastguard Worker } 3648*4bdc9457SAndroid Build Coastguard Worker } 3649*4bdc9457SAndroid Build Coastguard Worker } 3650*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,n_div_16_small_kernel)3651*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, n_div_16_small_kernel) { 3652*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3653*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 3654*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3655*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3656*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3657*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3658*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3659*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3660*4bdc9457SAndroid Build Coastguard Worker .m(6) 3661*4bdc9457SAndroid Build Coastguard Worker .n(n) 3662*4bdc9457SAndroid Build Coastguard Worker .k(k) 3663*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3664*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3665*4bdc9457SAndroid Build Coastguard Worker } 3666*4bdc9457SAndroid Build Coastguard Worker } 3667*4bdc9457SAndroid Build Coastguard Worker } 3668*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,strided_cm_subtile)3669*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, strided_cm_subtile) { 3670*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3671*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3672*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3673*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3674*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3675*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3676*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3677*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3678*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3679*4bdc9457SAndroid Build Coastguard Worker .m(m) 3680*4bdc9457SAndroid Build Coastguard Worker .n(n) 3681*4bdc9457SAndroid Build Coastguard Worker .k(k) 3682*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 3683*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3684*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3685*4bdc9457SAndroid Build Coastguard Worker } 3686*4bdc9457SAndroid Build Coastguard Worker } 3687*4bdc9457SAndroid Build Coastguard Worker } 3688*4bdc9457SAndroid Build Coastguard Worker } 3689*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,a_offset)3690*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, a_offset) { 3691*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3692*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3693*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3694*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3695*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3696*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3697*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3698*4bdc9457SAndroid Build Coastguard Worker .m(6) 3699*4bdc9457SAndroid Build Coastguard Worker .n(16) 3700*4bdc9457SAndroid Build Coastguard Worker .k(k) 3701*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3702*4bdc9457SAndroid Build Coastguard Worker .a_offset(67) 3703*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3704*4bdc9457SAndroid Build Coastguard Worker } 3705*4bdc9457SAndroid Build Coastguard Worker } 3706*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,zero)3707*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, zero) { 3708*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3709*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 10; k += 3) { 3710*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 6; mz++) { 3711*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3712*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3713*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3714*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3715*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3716*4bdc9457SAndroid Build Coastguard Worker .m(6) 3717*4bdc9457SAndroid Build Coastguard Worker .n(16) 3718*4bdc9457SAndroid Build Coastguard Worker .k(k) 3719*4bdc9457SAndroid Build Coastguard Worker .ks(3) 3720*4bdc9457SAndroid Build Coastguard Worker .a_offset(67) 3721*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 3722*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3723*4bdc9457SAndroid Build Coastguard Worker } 3724*4bdc9457SAndroid Build Coastguard Worker } 3725*4bdc9457SAndroid Build Coastguard Worker } 3726*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,qmin)3727*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, qmin) { 3728*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3729*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3730*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3731*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3732*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3733*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3734*4bdc9457SAndroid Build Coastguard Worker .m(6) 3735*4bdc9457SAndroid Build Coastguard Worker .n(16) 3736*4bdc9457SAndroid Build Coastguard Worker .k(2) 3737*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 3738*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3739*4bdc9457SAndroid Build Coastguard Worker } 3740*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,qmax)3741*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, qmax) { 3742*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3743*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3744*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3745*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3746*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3747*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3748*4bdc9457SAndroid Build Coastguard Worker .m(6) 3749*4bdc9457SAndroid Build Coastguard Worker .n(16) 3750*4bdc9457SAndroid Build Coastguard Worker .k(2) 3751*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 3752*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3753*4bdc9457SAndroid Build Coastguard Worker } 3754*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32,strided_cm)3755*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD32, strided_cm) { 3756*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3757*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3758*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3759*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3760*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3761*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3762*4bdc9457SAndroid Build Coastguard Worker .m(6) 3763*4bdc9457SAndroid Build Coastguard Worker .n(16) 3764*4bdc9457SAndroid Build Coastguard Worker .k(2) 3765*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 3766*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld32, xnn_init_f16_minmax_neon_params); 3767*4bdc9457SAndroid Build Coastguard Worker } 3768*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 3769*4bdc9457SAndroid Build Coastguard Worker 3770*4bdc9457SAndroid Build Coastguard Worker 3771*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4)3772*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4) { 3773*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3774*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3775*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3776*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3777*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3778*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3779*4bdc9457SAndroid Build Coastguard Worker .m(6) 3780*4bdc9457SAndroid Build Coastguard Worker .n(16) 3781*4bdc9457SAndroid Build Coastguard Worker .k(4) 3782*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3783*4bdc9457SAndroid Build Coastguard Worker } 3784*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,strided_cn)3785*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, strided_cn) { 3786*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3787*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3788*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3789*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3790*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3791*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3792*4bdc9457SAndroid Build Coastguard Worker .m(6) 3793*4bdc9457SAndroid Build Coastguard Worker .n(16) 3794*4bdc9457SAndroid Build Coastguard Worker .k(4) 3795*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3796*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3797*4bdc9457SAndroid Build Coastguard Worker } 3798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile)3799*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile) { 3800*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 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(4) 3811*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3812*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, 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 TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_m)3817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 3818*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3819*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3820*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3821*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3822*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3823*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3824*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3825*4bdc9457SAndroid Build Coastguard Worker .m(m) 3826*4bdc9457SAndroid Build Coastguard Worker .n(16) 3827*4bdc9457SAndroid Build Coastguard Worker .k(4) 3828*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3830*4bdc9457SAndroid Build Coastguard Worker } 3831*4bdc9457SAndroid Build Coastguard Worker } 3832*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_eq_4_subtile_n)3833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 3834*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3835*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 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(n) 3843*4bdc9457SAndroid Build Coastguard Worker .k(4) 3844*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3845*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3846*4bdc9457SAndroid Build Coastguard Worker } 3847*4bdc9457SAndroid Build Coastguard Worker } 3848*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4)3849*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4) { 3850*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3851*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 3852*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3853*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3854*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3855*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3856*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3857*4bdc9457SAndroid Build Coastguard Worker .m(6) 3858*4bdc9457SAndroid Build Coastguard Worker .n(16) 3859*4bdc9457SAndroid Build Coastguard Worker .k(k) 3860*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3861*4bdc9457SAndroid Build Coastguard Worker } 3862*4bdc9457SAndroid Build Coastguard Worker } 3863*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_lt_4_subtile)3864*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_lt_4_subtile) { 3865*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3866*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 3867*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3868*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3869*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3870*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3871*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3872*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3873*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3874*4bdc9457SAndroid Build Coastguard Worker .m(m) 3875*4bdc9457SAndroid Build Coastguard Worker .n(n) 3876*4bdc9457SAndroid Build Coastguard Worker .k(k) 3877*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3878*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3879*4bdc9457SAndroid Build Coastguard Worker } 3880*4bdc9457SAndroid Build Coastguard Worker } 3881*4bdc9457SAndroid Build Coastguard Worker } 3882*4bdc9457SAndroid Build Coastguard Worker } 3883*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4)3884*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4) { 3885*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3886*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 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 .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3896*4bdc9457SAndroid Build Coastguard Worker } 3897*4bdc9457SAndroid Build Coastguard Worker } 3898*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_gt_4_subtile)3899*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_gt_4_subtile) { 3900*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3901*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 3902*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3903*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3904*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3905*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3906*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3907*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3908*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3909*4bdc9457SAndroid Build Coastguard Worker .m(m) 3910*4bdc9457SAndroid Build Coastguard Worker .n(n) 3911*4bdc9457SAndroid Build Coastguard Worker .k(k) 3912*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3913*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3914*4bdc9457SAndroid Build Coastguard Worker } 3915*4bdc9457SAndroid Build Coastguard Worker } 3916*4bdc9457SAndroid Build Coastguard Worker } 3917*4bdc9457SAndroid Build Coastguard Worker } 3918*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_div_4)3919*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_div_4) { 3920*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3921*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3922*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3923*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3924*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3925*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3926*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3927*4bdc9457SAndroid Build Coastguard Worker .m(6) 3928*4bdc9457SAndroid Build Coastguard Worker .n(16) 3929*4bdc9457SAndroid Build Coastguard Worker .k(k) 3930*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3931*4bdc9457SAndroid Build Coastguard Worker } 3932*4bdc9457SAndroid Build Coastguard Worker } 3933*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,k_div_4_subtile)3934*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, k_div_4_subtile) { 3935*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3936*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 3937*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 3938*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3939*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3940*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3941*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3942*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3943*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3944*4bdc9457SAndroid Build Coastguard Worker .m(m) 3945*4bdc9457SAndroid Build Coastguard Worker .n(n) 3946*4bdc9457SAndroid Build Coastguard Worker .k(k) 3947*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 3948*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3949*4bdc9457SAndroid Build Coastguard Worker } 3950*4bdc9457SAndroid Build Coastguard Worker } 3951*4bdc9457SAndroid Build Coastguard Worker } 3952*4bdc9457SAndroid Build Coastguard Worker } 3953*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16)3954*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16) { 3955*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3956*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3957*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3958*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3959*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3960*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3961*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3962*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3963*4bdc9457SAndroid Build Coastguard Worker .m(6) 3964*4bdc9457SAndroid Build Coastguard Worker .n(n) 3965*4bdc9457SAndroid Build Coastguard Worker .k(k) 3966*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3967*4bdc9457SAndroid Build Coastguard Worker } 3968*4bdc9457SAndroid Build Coastguard Worker } 3969*4bdc9457SAndroid Build Coastguard Worker } 3970*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_strided_cn)3971*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 3972*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3973*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3974*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3975*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3976*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3977*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3978*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3979*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3980*4bdc9457SAndroid Build Coastguard Worker .m(6) 3981*4bdc9457SAndroid Build Coastguard Worker .n(n) 3982*4bdc9457SAndroid Build Coastguard Worker .k(k) 3983*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 3984*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 3985*4bdc9457SAndroid Build Coastguard Worker } 3986*4bdc9457SAndroid Build Coastguard Worker } 3987*4bdc9457SAndroid Build Coastguard Worker } 3988*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_subtile)3989*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_subtile) { 3990*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 3991*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 3992*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 3993*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 3994*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 3995*4bdc9457SAndroid Build Coastguard Worker .mr(6) 3996*4bdc9457SAndroid Build Coastguard Worker .nr(16) 3997*4bdc9457SAndroid Build Coastguard Worker .kr(1) 3998*4bdc9457SAndroid Build Coastguard Worker .sr(1) 3999*4bdc9457SAndroid Build Coastguard Worker .m(m) 4000*4bdc9457SAndroid Build Coastguard Worker .n(n) 4001*4bdc9457SAndroid Build Coastguard Worker .k(k) 4002*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4003*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4004*4bdc9457SAndroid Build Coastguard Worker } 4005*4bdc9457SAndroid Build Coastguard Worker } 4006*4bdc9457SAndroid Build Coastguard Worker } 4007*4bdc9457SAndroid Build Coastguard Worker } 4008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_div_16)4009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_div_16) { 4010*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4011*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4012*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4013*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4014*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4015*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4016*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4017*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4018*4bdc9457SAndroid Build Coastguard Worker .m(6) 4019*4bdc9457SAndroid Build Coastguard Worker .n(n) 4020*4bdc9457SAndroid Build Coastguard Worker .k(k) 4021*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4022*4bdc9457SAndroid Build Coastguard Worker } 4023*4bdc9457SAndroid Build Coastguard Worker } 4024*4bdc9457SAndroid Build Coastguard Worker } 4025*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_strided_cn)4026*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_strided_cn) { 4027*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4028*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4029*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4030*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4031*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4032*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4033*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4034*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4035*4bdc9457SAndroid Build Coastguard Worker .m(6) 4036*4bdc9457SAndroid Build Coastguard Worker .n(n) 4037*4bdc9457SAndroid Build Coastguard Worker .k(k) 4038*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4039*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4040*4bdc9457SAndroid Build Coastguard Worker } 4041*4bdc9457SAndroid Build Coastguard Worker } 4042*4bdc9457SAndroid Build Coastguard Worker } 4043*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_subtile)4044*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_subtile) { 4045*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4046*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4047*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4048*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4049*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4050*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4051*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4052*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4053*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4054*4bdc9457SAndroid Build Coastguard Worker .m(m) 4055*4bdc9457SAndroid Build Coastguard Worker .n(n) 4056*4bdc9457SAndroid Build Coastguard Worker .k(k) 4057*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4059*4bdc9457SAndroid Build Coastguard Worker } 4060*4bdc9457SAndroid Build Coastguard Worker } 4061*4bdc9457SAndroid Build Coastguard Worker } 4062*4bdc9457SAndroid Build Coastguard Worker } 4063*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,small_kernel)4064*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, small_kernel) { 4065*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4066*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4067*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4068*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4069*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4070*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4071*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4072*4bdc9457SAndroid Build Coastguard Worker .m(6) 4073*4bdc9457SAndroid Build Coastguard Worker .n(16) 4074*4bdc9457SAndroid Build Coastguard Worker .k(k) 4075*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4076*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4077*4bdc9457SAndroid Build Coastguard Worker } 4078*4bdc9457SAndroid Build Coastguard Worker } 4079*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,small_kernel_subtile)4080*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, small_kernel_subtile) { 4081*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4082*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4083*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4084*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4085*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4086*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4087*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4088*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4089*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4090*4bdc9457SAndroid Build Coastguard Worker .m(m) 4091*4bdc9457SAndroid Build Coastguard Worker .n(n) 4092*4bdc9457SAndroid Build Coastguard Worker .k(k) 4093*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4094*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4095*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4096*4bdc9457SAndroid Build Coastguard Worker } 4097*4bdc9457SAndroid Build Coastguard Worker } 4098*4bdc9457SAndroid Build Coastguard Worker } 4099*4bdc9457SAndroid Build Coastguard Worker } 4100*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_gt_16_small_kernel)4101*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_gt_16_small_kernel) { 4102*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4103*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4104*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4105*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4106*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4107*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4108*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4109*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4110*4bdc9457SAndroid Build Coastguard Worker .m(6) 4111*4bdc9457SAndroid Build Coastguard Worker .n(n) 4112*4bdc9457SAndroid Build Coastguard Worker .k(k) 4113*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4114*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4115*4bdc9457SAndroid Build Coastguard Worker } 4116*4bdc9457SAndroid Build Coastguard Worker } 4117*4bdc9457SAndroid Build Coastguard Worker } 4118*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,n_div_16_small_kernel)4119*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, n_div_16_small_kernel) { 4120*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4121*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4122*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4123*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4124*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4125*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4126*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4127*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4128*4bdc9457SAndroid Build Coastguard Worker .m(6) 4129*4bdc9457SAndroid Build Coastguard Worker .n(n) 4130*4bdc9457SAndroid Build Coastguard Worker .k(k) 4131*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4133*4bdc9457SAndroid Build Coastguard Worker } 4134*4bdc9457SAndroid Build Coastguard Worker } 4135*4bdc9457SAndroid Build Coastguard Worker } 4136*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,strided_cm_subtile)4137*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, strided_cm_subtile) { 4138*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4139*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4140*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4141*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 4142*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4143*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4144*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4145*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4146*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4147*4bdc9457SAndroid Build Coastguard Worker .m(m) 4148*4bdc9457SAndroid Build Coastguard Worker .n(n) 4149*4bdc9457SAndroid Build Coastguard Worker .k(k) 4150*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4151*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4152*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4153*4bdc9457SAndroid Build Coastguard Worker } 4154*4bdc9457SAndroid Build Coastguard Worker } 4155*4bdc9457SAndroid Build Coastguard Worker } 4156*4bdc9457SAndroid Build Coastguard Worker } 4157*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,a_offset)4158*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, a_offset) { 4159*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4160*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 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(k) 4169*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4170*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 4171*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4172*4bdc9457SAndroid Build Coastguard Worker } 4173*4bdc9457SAndroid Build Coastguard Worker } 4174*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,zero)4175*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, zero) { 4176*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4177*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4178*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 6; mz++) { 4179*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4180*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4181*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4182*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4183*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4184*4bdc9457SAndroid Build Coastguard Worker .m(6) 4185*4bdc9457SAndroid Build Coastguard Worker .n(16) 4186*4bdc9457SAndroid Build Coastguard Worker .k(k) 4187*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4188*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 4189*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 4190*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4191*4bdc9457SAndroid Build Coastguard Worker } 4192*4bdc9457SAndroid Build Coastguard Worker } 4193*4bdc9457SAndroid Build Coastguard Worker } 4194*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,qmin)4195*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, qmin) { 4196*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4197*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4198*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4199*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4200*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4201*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4202*4bdc9457SAndroid Build Coastguard Worker .m(6) 4203*4bdc9457SAndroid Build Coastguard Worker .n(16) 4204*4bdc9457SAndroid Build Coastguard Worker .k(4) 4205*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4206*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4207*4bdc9457SAndroid Build Coastguard Worker } 4208*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,qmax)4209*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, qmax) { 4210*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4211*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4212*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4213*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4214*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4215*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4216*4bdc9457SAndroid Build Coastguard Worker .m(6) 4217*4bdc9457SAndroid Build Coastguard Worker .n(16) 4218*4bdc9457SAndroid Build Coastguard Worker .k(4) 4219*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4220*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4221*4bdc9457SAndroid Build Coastguard Worker } 4222*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64,strided_cm)4223*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__AARCH64_NEONFP16ARITH_LD64, strided_cm) { 4224*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4225*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4226*4bdc9457SAndroid Build Coastguard Worker .mr(6) 4227*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4228*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4229*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4230*4bdc9457SAndroid Build Coastguard Worker .m(6) 4231*4bdc9457SAndroid Build Coastguard Worker .n(16) 4232*4bdc9457SAndroid Build Coastguard Worker .k(4) 4233*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 4234*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__aarch64_neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4235*4bdc9457SAndroid Build Coastguard Worker } 4236*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64 && XNN_ENABLE_ASSEMBLY 4237*4bdc9457SAndroid Build Coastguard Worker 4238*4bdc9457SAndroid Build Coastguard Worker 4239*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4)4240*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4) { 4241*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4242*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4243*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4244*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4245*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4246*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4247*4bdc9457SAndroid Build Coastguard Worker .m(1) 4248*4bdc9457SAndroid Build Coastguard Worker .n(8) 4249*4bdc9457SAndroid Build Coastguard Worker .k(4) 4250*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4251*4bdc9457SAndroid Build Coastguard Worker } 4252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,strided_cn)4253*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, strided_cn) { 4254*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4255*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4256*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4257*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4258*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4259*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4260*4bdc9457SAndroid Build Coastguard Worker .m(1) 4261*4bdc9457SAndroid Build Coastguard Worker .n(8) 4262*4bdc9457SAndroid Build Coastguard Worker .k(4) 4263*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 4264*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4265*4bdc9457SAndroid Build Coastguard Worker } 4266*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4_subtile)4267*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4_subtile) { 4268*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4269*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4270*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4271*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4272*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4273*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4274*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4275*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4276*4bdc9457SAndroid Build Coastguard Worker .m(m) 4277*4bdc9457SAndroid Build Coastguard Worker .n(n) 4278*4bdc9457SAndroid Build Coastguard Worker .k(4) 4279*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4280*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4281*4bdc9457SAndroid Build Coastguard Worker } 4282*4bdc9457SAndroid Build Coastguard Worker } 4283*4bdc9457SAndroid Build Coastguard Worker } 4284*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4_subtile_m)4285*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 4286*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4287*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4288*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4289*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4290*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4291*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4292*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4293*4bdc9457SAndroid Build Coastguard Worker .m(m) 4294*4bdc9457SAndroid Build Coastguard Worker .n(8) 4295*4bdc9457SAndroid Build Coastguard Worker .k(4) 4296*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4297*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4298*4bdc9457SAndroid Build Coastguard Worker } 4299*4bdc9457SAndroid Build Coastguard Worker } 4300*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_eq_4_subtile_n)4301*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 4302*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4303*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4304*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4305*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4306*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4307*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4308*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4309*4bdc9457SAndroid Build Coastguard Worker .m(1) 4310*4bdc9457SAndroid Build Coastguard Worker .n(n) 4311*4bdc9457SAndroid Build Coastguard Worker .k(4) 4312*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4313*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4314*4bdc9457SAndroid Build Coastguard Worker } 4315*4bdc9457SAndroid Build Coastguard Worker } 4316*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_lt_4)4317*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_lt_4) { 4318*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4319*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 4320*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4321*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4322*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4323*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4324*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4325*4bdc9457SAndroid Build Coastguard Worker .m(1) 4326*4bdc9457SAndroid Build Coastguard Worker .n(8) 4327*4bdc9457SAndroid Build Coastguard Worker .k(k) 4328*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4329*4bdc9457SAndroid Build Coastguard Worker } 4330*4bdc9457SAndroid Build Coastguard Worker } 4331*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_lt_4_subtile)4332*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_lt_4_subtile) { 4333*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4334*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 4335*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4336*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4337*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4338*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4339*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4340*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4341*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4342*4bdc9457SAndroid Build Coastguard Worker .m(m) 4343*4bdc9457SAndroid Build Coastguard Worker .n(n) 4344*4bdc9457SAndroid Build Coastguard Worker .k(k) 4345*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4346*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4347*4bdc9457SAndroid Build Coastguard Worker } 4348*4bdc9457SAndroid Build Coastguard Worker } 4349*4bdc9457SAndroid Build Coastguard Worker } 4350*4bdc9457SAndroid Build Coastguard Worker } 4351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_gt_4)4352*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_gt_4) { 4353*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4354*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 4355*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4356*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4357*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4358*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4359*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4360*4bdc9457SAndroid Build Coastguard Worker .m(1) 4361*4bdc9457SAndroid Build Coastguard Worker .n(8) 4362*4bdc9457SAndroid Build Coastguard Worker .k(k) 4363*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4364*4bdc9457SAndroid Build Coastguard Worker } 4365*4bdc9457SAndroid Build Coastguard Worker } 4366*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_gt_4_subtile)4367*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_gt_4_subtile) { 4368*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4369*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 4370*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4371*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4372*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4373*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4374*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4375*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4376*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4377*4bdc9457SAndroid Build Coastguard Worker .m(m) 4378*4bdc9457SAndroid Build Coastguard Worker .n(n) 4379*4bdc9457SAndroid Build Coastguard Worker .k(k) 4380*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4381*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4382*4bdc9457SAndroid Build Coastguard Worker } 4383*4bdc9457SAndroid Build Coastguard Worker } 4384*4bdc9457SAndroid Build Coastguard Worker } 4385*4bdc9457SAndroid Build Coastguard Worker } 4386*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_div_4)4387*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_div_4) { 4388*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4389*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 4390*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4391*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4392*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4393*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4394*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4395*4bdc9457SAndroid Build Coastguard Worker .m(1) 4396*4bdc9457SAndroid Build Coastguard Worker .n(8) 4397*4bdc9457SAndroid Build Coastguard Worker .k(k) 4398*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4399*4bdc9457SAndroid Build Coastguard Worker } 4400*4bdc9457SAndroid Build Coastguard Worker } 4401*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,k_div_4_subtile)4402*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, k_div_4_subtile) { 4403*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4404*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 4405*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4406*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4407*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4408*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4409*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4410*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4411*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4412*4bdc9457SAndroid Build Coastguard Worker .m(m) 4413*4bdc9457SAndroid Build Coastguard Worker .n(n) 4414*4bdc9457SAndroid Build Coastguard Worker .k(k) 4415*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4416*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4417*4bdc9457SAndroid Build Coastguard Worker } 4418*4bdc9457SAndroid Build Coastguard Worker } 4419*4bdc9457SAndroid Build Coastguard Worker } 4420*4bdc9457SAndroid Build Coastguard Worker } 4421*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_gt_8)4422*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_gt_8) { 4423*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4424*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 4425*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4426*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4427*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4428*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4429*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4430*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4431*4bdc9457SAndroid Build Coastguard Worker .m(1) 4432*4bdc9457SAndroid Build Coastguard Worker .n(n) 4433*4bdc9457SAndroid Build Coastguard Worker .k(k) 4434*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4435*4bdc9457SAndroid Build Coastguard Worker } 4436*4bdc9457SAndroid Build Coastguard Worker } 4437*4bdc9457SAndroid Build Coastguard Worker } 4438*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_gt_8_strided_cn)4439*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 4440*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4441*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 4442*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4443*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4444*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4445*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4446*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4447*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4448*4bdc9457SAndroid Build Coastguard Worker .m(1) 4449*4bdc9457SAndroid Build Coastguard Worker .n(n) 4450*4bdc9457SAndroid Build Coastguard Worker .k(k) 4451*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 4452*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4453*4bdc9457SAndroid Build Coastguard Worker } 4454*4bdc9457SAndroid Build Coastguard Worker } 4455*4bdc9457SAndroid Build Coastguard Worker } 4456*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_gt_8_subtile)4457*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_gt_8_subtile) { 4458*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4459*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 4460*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4461*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4462*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4463*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4464*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4465*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4466*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4467*4bdc9457SAndroid Build Coastguard Worker .m(m) 4468*4bdc9457SAndroid Build Coastguard Worker .n(n) 4469*4bdc9457SAndroid Build Coastguard Worker .k(k) 4470*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4471*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4472*4bdc9457SAndroid Build Coastguard Worker } 4473*4bdc9457SAndroid Build Coastguard Worker } 4474*4bdc9457SAndroid Build Coastguard Worker } 4475*4bdc9457SAndroid Build Coastguard Worker } 4476*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_div_8)4477*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_div_8) { 4478*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4479*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 4480*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4481*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4482*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4483*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4484*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4485*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4486*4bdc9457SAndroid Build Coastguard Worker .m(1) 4487*4bdc9457SAndroid Build Coastguard Worker .n(n) 4488*4bdc9457SAndroid Build Coastguard Worker .k(k) 4489*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4490*4bdc9457SAndroid Build Coastguard Worker } 4491*4bdc9457SAndroid Build Coastguard Worker } 4492*4bdc9457SAndroid Build Coastguard Worker } 4493*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_div_8_strided_cn)4494*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_div_8_strided_cn) { 4495*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4496*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 4497*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4498*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4499*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4500*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4501*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4502*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4503*4bdc9457SAndroid Build Coastguard Worker .m(1) 4504*4bdc9457SAndroid Build Coastguard Worker .n(n) 4505*4bdc9457SAndroid Build Coastguard Worker .k(k) 4506*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 4507*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4508*4bdc9457SAndroid Build Coastguard Worker } 4509*4bdc9457SAndroid Build Coastguard Worker } 4510*4bdc9457SAndroid Build Coastguard Worker } 4511*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_div_8_subtile)4512*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_div_8_subtile) { 4513*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4514*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 4515*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4516*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4517*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4518*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4519*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4520*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4521*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4522*4bdc9457SAndroid Build Coastguard Worker .m(m) 4523*4bdc9457SAndroid Build Coastguard Worker .n(n) 4524*4bdc9457SAndroid Build Coastguard Worker .k(k) 4525*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4527*4bdc9457SAndroid Build Coastguard Worker } 4528*4bdc9457SAndroid Build Coastguard Worker } 4529*4bdc9457SAndroid Build Coastguard Worker } 4530*4bdc9457SAndroid Build Coastguard Worker } 4531*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,small_kernel)4532*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, small_kernel) { 4533*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4534*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4535*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4536*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4537*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4538*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4539*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4540*4bdc9457SAndroid Build Coastguard Worker .m(1) 4541*4bdc9457SAndroid Build Coastguard Worker .n(8) 4542*4bdc9457SAndroid Build Coastguard Worker .k(k) 4543*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4544*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4545*4bdc9457SAndroid Build Coastguard Worker } 4546*4bdc9457SAndroid Build Coastguard Worker } 4547*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,small_kernel_subtile)4548*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, small_kernel_subtile) { 4549*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4550*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4551*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4552*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4553*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4554*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4555*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4556*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4557*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4558*4bdc9457SAndroid Build Coastguard Worker .m(m) 4559*4bdc9457SAndroid Build Coastguard Worker .n(n) 4560*4bdc9457SAndroid Build Coastguard Worker .k(k) 4561*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4562*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4563*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4564*4bdc9457SAndroid Build Coastguard Worker } 4565*4bdc9457SAndroid Build Coastguard Worker } 4566*4bdc9457SAndroid Build Coastguard Worker } 4567*4bdc9457SAndroid Build Coastguard Worker } 4568*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_gt_8_small_kernel)4569*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_gt_8_small_kernel) { 4570*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4571*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 4572*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4573*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4574*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4575*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4576*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4577*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4578*4bdc9457SAndroid Build Coastguard Worker .m(1) 4579*4bdc9457SAndroid Build Coastguard Worker .n(n) 4580*4bdc9457SAndroid Build Coastguard Worker .k(k) 4581*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4582*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4583*4bdc9457SAndroid Build Coastguard Worker } 4584*4bdc9457SAndroid Build Coastguard Worker } 4585*4bdc9457SAndroid Build Coastguard Worker } 4586*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,n_div_8_small_kernel)4587*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, n_div_8_small_kernel) { 4588*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4589*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 4590*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4591*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4592*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4593*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4594*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4595*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4596*4bdc9457SAndroid Build Coastguard Worker .m(1) 4597*4bdc9457SAndroid Build Coastguard Worker .n(n) 4598*4bdc9457SAndroid Build Coastguard Worker .k(k) 4599*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4600*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4601*4bdc9457SAndroid Build Coastguard Worker } 4602*4bdc9457SAndroid Build Coastguard Worker } 4603*4bdc9457SAndroid Build Coastguard Worker } 4604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,strided_cm_subtile)4605*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, strided_cm_subtile) { 4606*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4607*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4608*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 4609*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4610*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4611*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4612*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4613*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4614*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4615*4bdc9457SAndroid Build Coastguard Worker .m(m) 4616*4bdc9457SAndroid Build Coastguard Worker .n(n) 4617*4bdc9457SAndroid Build Coastguard Worker .k(k) 4618*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 4619*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4621*4bdc9457SAndroid Build Coastguard Worker } 4622*4bdc9457SAndroid Build Coastguard Worker } 4623*4bdc9457SAndroid Build Coastguard Worker } 4624*4bdc9457SAndroid Build Coastguard Worker } 4625*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,a_offset)4626*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, a_offset) { 4627*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4628*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4629*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4630*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4631*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4632*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4633*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4634*4bdc9457SAndroid Build Coastguard Worker .m(1) 4635*4bdc9457SAndroid Build Coastguard Worker .n(8) 4636*4bdc9457SAndroid Build Coastguard Worker .k(k) 4637*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4638*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 4639*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4640*4bdc9457SAndroid Build Coastguard Worker } 4641*4bdc9457SAndroid Build Coastguard Worker } 4642*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,zero)4643*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, zero) { 4644*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4645*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4646*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 1; mz++) { 4647*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4648*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4649*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4650*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4651*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4652*4bdc9457SAndroid Build Coastguard Worker .m(1) 4653*4bdc9457SAndroid Build Coastguard Worker .n(8) 4654*4bdc9457SAndroid Build Coastguard Worker .k(k) 4655*4bdc9457SAndroid Build Coastguard Worker .ks(3) 4656*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 4657*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 4658*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4659*4bdc9457SAndroid Build Coastguard Worker } 4660*4bdc9457SAndroid Build Coastguard Worker } 4661*4bdc9457SAndroid Build Coastguard Worker } 4662*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,qmin)4663*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, qmin) { 4664*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4665*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4666*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4667*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4668*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4669*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4670*4bdc9457SAndroid Build Coastguard Worker .m(1) 4671*4bdc9457SAndroid Build Coastguard Worker .n(8) 4672*4bdc9457SAndroid Build Coastguard Worker .k(4) 4673*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 4674*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4675*4bdc9457SAndroid Build Coastguard Worker } 4676*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,qmax)4677*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, qmax) { 4678*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4679*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4680*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4681*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4682*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4683*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4684*4bdc9457SAndroid Build Coastguard Worker .m(1) 4685*4bdc9457SAndroid Build Coastguard Worker .n(8) 4686*4bdc9457SAndroid Build Coastguard Worker .k(4) 4687*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 4688*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4689*4bdc9457SAndroid Build Coastguard Worker } 4690*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64,strided_cm)4691*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__NEONFP16ARITH_LD64, strided_cm) { 4692*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4693*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4694*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4695*4bdc9457SAndroid Build Coastguard Worker .nr(8) 4696*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4697*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4698*4bdc9457SAndroid Build Coastguard Worker .m(1) 4699*4bdc9457SAndroid Build Coastguard Worker .n(8) 4700*4bdc9457SAndroid Build Coastguard Worker .k(4) 4701*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 4702*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4703*4bdc9457SAndroid Build Coastguard Worker } 4704*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 4705*4bdc9457SAndroid Build Coastguard Worker 4706*4bdc9457SAndroid Build Coastguard Worker 4707*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4)4708*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4) { 4709*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4710*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4711*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4712*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4713*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4714*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4715*4bdc9457SAndroid Build Coastguard Worker .m(1) 4716*4bdc9457SAndroid Build Coastguard Worker .n(16) 4717*4bdc9457SAndroid Build Coastguard Worker .k(4) 4718*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4719*4bdc9457SAndroid Build Coastguard Worker } 4720*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,strided_cn)4721*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, strided_cn) { 4722*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4723*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4724*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4725*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4726*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4727*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4728*4bdc9457SAndroid Build Coastguard Worker .m(1) 4729*4bdc9457SAndroid Build Coastguard Worker .n(16) 4730*4bdc9457SAndroid Build Coastguard Worker .k(4) 4731*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4732*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4733*4bdc9457SAndroid Build Coastguard Worker } 4734*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4_subtile)4735*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4_subtile) { 4736*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4737*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4738*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4739*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4740*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4741*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4742*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4743*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4744*4bdc9457SAndroid Build Coastguard Worker .m(m) 4745*4bdc9457SAndroid Build Coastguard Worker .n(n) 4746*4bdc9457SAndroid Build Coastguard Worker .k(4) 4747*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4748*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4749*4bdc9457SAndroid Build Coastguard Worker } 4750*4bdc9457SAndroid Build Coastguard Worker } 4751*4bdc9457SAndroid Build Coastguard Worker } 4752*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4_subtile_m)4753*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 4754*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4755*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4756*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4757*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4758*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4759*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4760*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4761*4bdc9457SAndroid Build Coastguard Worker .m(m) 4762*4bdc9457SAndroid Build Coastguard Worker .n(16) 4763*4bdc9457SAndroid Build Coastguard Worker .k(4) 4764*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4765*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4766*4bdc9457SAndroid Build Coastguard Worker } 4767*4bdc9457SAndroid Build Coastguard Worker } 4768*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_eq_4_subtile_n)4769*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 4770*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4771*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4772*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4773*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4774*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4775*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4776*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4777*4bdc9457SAndroid Build Coastguard Worker .m(1) 4778*4bdc9457SAndroid Build Coastguard Worker .n(n) 4779*4bdc9457SAndroid Build Coastguard Worker .k(4) 4780*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4781*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4782*4bdc9457SAndroid Build Coastguard Worker } 4783*4bdc9457SAndroid Build Coastguard Worker } 4784*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_lt_4)4785*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_lt_4) { 4786*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4787*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 4788*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4789*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4790*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4791*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4792*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4793*4bdc9457SAndroid Build Coastguard Worker .m(1) 4794*4bdc9457SAndroid Build Coastguard Worker .n(16) 4795*4bdc9457SAndroid Build Coastguard Worker .k(k) 4796*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4797*4bdc9457SAndroid Build Coastguard Worker } 4798*4bdc9457SAndroid Build Coastguard Worker } 4799*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_lt_4_subtile)4800*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_lt_4_subtile) { 4801*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4802*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 4803*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4804*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4805*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4806*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4807*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4808*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4809*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4810*4bdc9457SAndroid Build Coastguard Worker .m(m) 4811*4bdc9457SAndroid Build Coastguard Worker .n(n) 4812*4bdc9457SAndroid Build Coastguard Worker .k(k) 4813*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4814*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4815*4bdc9457SAndroid Build Coastguard Worker } 4816*4bdc9457SAndroid Build Coastguard Worker } 4817*4bdc9457SAndroid Build Coastguard Worker } 4818*4bdc9457SAndroid Build Coastguard Worker } 4819*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_gt_4)4820*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_gt_4) { 4821*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4822*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 4823*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4824*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4825*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4826*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4827*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4828*4bdc9457SAndroid Build Coastguard Worker .m(1) 4829*4bdc9457SAndroid Build Coastguard Worker .n(16) 4830*4bdc9457SAndroid Build Coastguard Worker .k(k) 4831*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4832*4bdc9457SAndroid Build Coastguard Worker } 4833*4bdc9457SAndroid Build Coastguard Worker } 4834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_gt_4_subtile)4835*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_gt_4_subtile) { 4836*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4837*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 4838*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4839*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4840*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4841*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4842*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4843*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4844*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4845*4bdc9457SAndroid Build Coastguard Worker .m(m) 4846*4bdc9457SAndroid Build Coastguard Worker .n(n) 4847*4bdc9457SAndroid Build Coastguard Worker .k(k) 4848*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4849*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4850*4bdc9457SAndroid Build Coastguard Worker } 4851*4bdc9457SAndroid Build Coastguard Worker } 4852*4bdc9457SAndroid Build Coastguard Worker } 4853*4bdc9457SAndroid Build Coastguard Worker } 4854*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_div_4)4855*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_div_4) { 4856*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4857*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 4858*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4859*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4860*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4861*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4862*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4863*4bdc9457SAndroid Build Coastguard Worker .m(1) 4864*4bdc9457SAndroid Build Coastguard Worker .n(16) 4865*4bdc9457SAndroid Build Coastguard Worker .k(k) 4866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4867*4bdc9457SAndroid Build Coastguard Worker } 4868*4bdc9457SAndroid Build Coastguard Worker } 4869*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,k_div_4_subtile)4870*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, k_div_4_subtile) { 4871*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4872*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 4873*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 4874*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4875*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4876*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4877*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4878*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4879*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4880*4bdc9457SAndroid Build Coastguard Worker .m(m) 4881*4bdc9457SAndroid Build Coastguard Worker .n(n) 4882*4bdc9457SAndroid Build Coastguard Worker .k(k) 4883*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4884*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4885*4bdc9457SAndroid Build Coastguard Worker } 4886*4bdc9457SAndroid Build Coastguard Worker } 4887*4bdc9457SAndroid Build Coastguard Worker } 4888*4bdc9457SAndroid Build Coastguard Worker } 4889*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_gt_16)4890*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_gt_16) { 4891*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4892*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4893*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4894*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4895*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4896*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4897*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4898*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4899*4bdc9457SAndroid Build Coastguard Worker .m(1) 4900*4bdc9457SAndroid Build Coastguard Worker .n(n) 4901*4bdc9457SAndroid Build Coastguard Worker .k(k) 4902*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4903*4bdc9457SAndroid Build Coastguard Worker } 4904*4bdc9457SAndroid Build Coastguard Worker } 4905*4bdc9457SAndroid Build Coastguard Worker } 4906*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_gt_16_strided_cn)4907*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 4908*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4909*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4910*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4911*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4912*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4913*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4914*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4915*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4916*4bdc9457SAndroid Build Coastguard Worker .m(1) 4917*4bdc9457SAndroid Build Coastguard Worker .n(n) 4918*4bdc9457SAndroid Build Coastguard Worker .k(k) 4919*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4920*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4921*4bdc9457SAndroid Build Coastguard Worker } 4922*4bdc9457SAndroid Build Coastguard Worker } 4923*4bdc9457SAndroid Build Coastguard Worker } 4924*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_gt_16_subtile)4925*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_gt_16_subtile) { 4926*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4927*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 4928*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4929*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4930*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4931*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4932*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4933*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4934*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4935*4bdc9457SAndroid Build Coastguard Worker .m(m) 4936*4bdc9457SAndroid Build Coastguard Worker .n(n) 4937*4bdc9457SAndroid Build Coastguard Worker .k(k) 4938*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4939*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4940*4bdc9457SAndroid Build Coastguard Worker } 4941*4bdc9457SAndroid Build Coastguard Worker } 4942*4bdc9457SAndroid Build Coastguard Worker } 4943*4bdc9457SAndroid Build Coastguard Worker } 4944*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_div_16)4945*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_div_16) { 4946*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4947*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4948*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4949*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4950*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4951*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4952*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4953*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4954*4bdc9457SAndroid Build Coastguard Worker .m(1) 4955*4bdc9457SAndroid Build Coastguard Worker .n(n) 4956*4bdc9457SAndroid Build Coastguard Worker .k(k) 4957*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4958*4bdc9457SAndroid Build Coastguard Worker } 4959*4bdc9457SAndroid Build Coastguard Worker } 4960*4bdc9457SAndroid Build Coastguard Worker } 4961*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_div_16_strided_cn)4962*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_div_16_strided_cn) { 4963*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4964*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4965*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4966*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4967*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4968*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4969*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4970*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4971*4bdc9457SAndroid Build Coastguard Worker .m(1) 4972*4bdc9457SAndroid Build Coastguard Worker .n(n) 4973*4bdc9457SAndroid Build Coastguard Worker .k(k) 4974*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 4975*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4976*4bdc9457SAndroid Build Coastguard Worker } 4977*4bdc9457SAndroid Build Coastguard Worker } 4978*4bdc9457SAndroid Build Coastguard Worker } 4979*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_div_16_subtile)4980*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_div_16_subtile) { 4981*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 4982*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 4983*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 4984*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 4985*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 4986*4bdc9457SAndroid Build Coastguard Worker .mr(1) 4987*4bdc9457SAndroid Build Coastguard Worker .nr(16) 4988*4bdc9457SAndroid Build Coastguard Worker .kr(1) 4989*4bdc9457SAndroid Build Coastguard Worker .sr(1) 4990*4bdc9457SAndroid Build Coastguard Worker .m(m) 4991*4bdc9457SAndroid Build Coastguard Worker .n(n) 4992*4bdc9457SAndroid Build Coastguard Worker .k(k) 4993*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 4994*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 4995*4bdc9457SAndroid Build Coastguard Worker } 4996*4bdc9457SAndroid Build Coastguard Worker } 4997*4bdc9457SAndroid Build Coastguard Worker } 4998*4bdc9457SAndroid Build Coastguard Worker } 4999*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,small_kernel)5000*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, small_kernel) { 5001*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5002*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5003*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5004*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5005*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5006*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5007*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5008*4bdc9457SAndroid Build Coastguard Worker .m(1) 5009*4bdc9457SAndroid Build Coastguard Worker .n(16) 5010*4bdc9457SAndroid Build Coastguard Worker .k(k) 5011*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5012*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5013*4bdc9457SAndroid Build Coastguard Worker } 5014*4bdc9457SAndroid Build Coastguard Worker } 5015*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,small_kernel_subtile)5016*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, small_kernel_subtile) { 5017*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5018*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5019*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5020*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 5021*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5022*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5023*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5024*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5025*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5026*4bdc9457SAndroid Build Coastguard Worker .m(m) 5027*4bdc9457SAndroid Build Coastguard Worker .n(n) 5028*4bdc9457SAndroid Build Coastguard Worker .k(k) 5029*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5030*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5031*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5032*4bdc9457SAndroid Build Coastguard Worker } 5033*4bdc9457SAndroid Build Coastguard Worker } 5034*4bdc9457SAndroid Build Coastguard Worker } 5035*4bdc9457SAndroid Build Coastguard Worker } 5036*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_gt_16_small_kernel)5037*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_gt_16_small_kernel) { 5038*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5039*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5040*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5041*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5042*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5043*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5044*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5045*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5046*4bdc9457SAndroid Build Coastguard Worker .m(1) 5047*4bdc9457SAndroid Build Coastguard Worker .n(n) 5048*4bdc9457SAndroid Build Coastguard Worker .k(k) 5049*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5050*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5051*4bdc9457SAndroid Build Coastguard Worker } 5052*4bdc9457SAndroid Build Coastguard Worker } 5053*4bdc9457SAndroid Build Coastguard Worker } 5054*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,n_div_16_small_kernel)5055*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, n_div_16_small_kernel) { 5056*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5057*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5058*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5059*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5060*4bdc9457SAndroid Build Coastguard Worker .mr(1) 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(1) 5065*4bdc9457SAndroid Build Coastguard Worker .n(n) 5066*4bdc9457SAndroid Build Coastguard Worker .k(k) 5067*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5068*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5069*4bdc9457SAndroid Build Coastguard Worker } 5070*4bdc9457SAndroid Build Coastguard Worker } 5071*4bdc9457SAndroid Build Coastguard Worker } 5072*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,strided_cm_subtile)5073*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, strided_cm_subtile) { 5074*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5075*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5076*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5077*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 5078*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5079*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5080*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5081*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5082*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5083*4bdc9457SAndroid Build Coastguard Worker .m(m) 5084*4bdc9457SAndroid Build Coastguard Worker .n(n) 5085*4bdc9457SAndroid Build Coastguard Worker .k(k) 5086*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 5087*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5088*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5089*4bdc9457SAndroid Build Coastguard Worker } 5090*4bdc9457SAndroid Build Coastguard Worker } 5091*4bdc9457SAndroid Build Coastguard Worker } 5092*4bdc9457SAndroid Build Coastguard Worker } 5093*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,a_offset)5094*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, a_offset) { 5095*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5096*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5097*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5098*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5099*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5100*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5101*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5102*4bdc9457SAndroid Build Coastguard Worker .m(1) 5103*4bdc9457SAndroid Build Coastguard Worker .n(16) 5104*4bdc9457SAndroid Build Coastguard Worker .k(k) 5105*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5106*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 5107*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5108*4bdc9457SAndroid Build Coastguard Worker } 5109*4bdc9457SAndroid Build Coastguard Worker } 5110*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,zero)5111*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, zero) { 5112*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5113*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5114*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 1; mz++) { 5115*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5116*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5117*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5118*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5119*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5120*4bdc9457SAndroid Build Coastguard Worker .m(1) 5121*4bdc9457SAndroid Build Coastguard Worker .n(16) 5122*4bdc9457SAndroid Build Coastguard Worker .k(k) 5123*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5124*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 5125*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 5126*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5127*4bdc9457SAndroid Build Coastguard Worker } 5128*4bdc9457SAndroid Build Coastguard Worker } 5129*4bdc9457SAndroid Build Coastguard Worker } 5130*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,qmin)5131*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, qmin) { 5132*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5133*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5134*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5135*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5136*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5137*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5138*4bdc9457SAndroid Build Coastguard Worker .m(1) 5139*4bdc9457SAndroid Build Coastguard Worker .n(16) 5140*4bdc9457SAndroid Build Coastguard Worker .k(4) 5141*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5142*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5143*4bdc9457SAndroid Build Coastguard Worker } 5144*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,qmax)5145*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, qmax) { 5146*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5147*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5148*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5149*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5150*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5151*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5152*4bdc9457SAndroid Build Coastguard Worker .m(1) 5153*4bdc9457SAndroid Build Coastguard Worker .n(16) 5154*4bdc9457SAndroid Build Coastguard Worker .k(4) 5155*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5157*4bdc9457SAndroid Build Coastguard Worker } 5158*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64,strided_cm)5159*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__NEONFP16ARITH_LD64, strided_cm) { 5160*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5161*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5162*4bdc9457SAndroid Build Coastguard Worker .mr(1) 5163*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5164*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5165*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5166*4bdc9457SAndroid Build Coastguard Worker .m(1) 5167*4bdc9457SAndroid Build Coastguard Worker .n(16) 5168*4bdc9457SAndroid Build Coastguard Worker .k(4) 5169*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 5170*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5171*4bdc9457SAndroid Build Coastguard Worker } 5172*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 5173*4bdc9457SAndroid Build Coastguard Worker 5174*4bdc9457SAndroid Build Coastguard Worker 5175*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4)5176*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4) { 5177*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5178*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5179*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5180*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5181*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5182*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5183*4bdc9457SAndroid Build Coastguard Worker .m(4) 5184*4bdc9457SAndroid Build Coastguard Worker .n(8) 5185*4bdc9457SAndroid Build Coastguard Worker .k(4) 5186*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5187*4bdc9457SAndroid Build Coastguard Worker } 5188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,strided_cn)5189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, strided_cn) { 5190*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5191*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5192*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5193*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5194*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5195*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5196*4bdc9457SAndroid Build Coastguard Worker .m(4) 5197*4bdc9457SAndroid Build Coastguard Worker .n(8) 5198*4bdc9457SAndroid Build Coastguard Worker .k(4) 5199*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5200*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5201*4bdc9457SAndroid Build Coastguard Worker } 5202*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4_subtile)5203*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4_subtile) { 5204*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5205*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5206*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5207*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5208*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5209*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5210*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5211*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5212*4bdc9457SAndroid Build Coastguard Worker .m(m) 5213*4bdc9457SAndroid Build Coastguard Worker .n(n) 5214*4bdc9457SAndroid Build Coastguard Worker .k(4) 5215*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5216*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5217*4bdc9457SAndroid Build Coastguard Worker } 5218*4bdc9457SAndroid Build Coastguard Worker } 5219*4bdc9457SAndroid Build Coastguard Worker } 5220*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4_subtile_m)5221*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 5222*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5223*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5224*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5225*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5226*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5227*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5228*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5229*4bdc9457SAndroid Build Coastguard Worker .m(m) 5230*4bdc9457SAndroid Build Coastguard Worker .n(8) 5231*4bdc9457SAndroid Build Coastguard Worker .k(4) 5232*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5233*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5234*4bdc9457SAndroid Build Coastguard Worker } 5235*4bdc9457SAndroid Build Coastguard Worker } 5236*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_eq_4_subtile_n)5237*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 5238*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5239*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5240*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5241*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5242*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5243*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5244*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5245*4bdc9457SAndroid Build Coastguard Worker .m(4) 5246*4bdc9457SAndroid Build Coastguard Worker .n(n) 5247*4bdc9457SAndroid Build Coastguard Worker .k(4) 5248*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5249*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5250*4bdc9457SAndroid Build Coastguard Worker } 5251*4bdc9457SAndroid Build Coastguard Worker } 5252*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_lt_4)5253*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_lt_4) { 5254*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5255*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5256*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5257*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5258*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5259*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5260*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5261*4bdc9457SAndroid Build Coastguard Worker .m(4) 5262*4bdc9457SAndroid Build Coastguard Worker .n(8) 5263*4bdc9457SAndroid Build Coastguard Worker .k(k) 5264*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__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_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_lt_4_subtile)5268*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_lt_4_subtile) { 5269*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5270*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5271*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5272*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5273*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5274*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5275*4bdc9457SAndroid Build Coastguard Worker .nr(8) 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_igemm_minmax_ukernel_4x8__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_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_gt_4)5288*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_gt_4) { 5289*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5290*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5291*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5292*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5293*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5294*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5295*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5296*4bdc9457SAndroid Build Coastguard Worker .m(4) 5297*4bdc9457SAndroid Build Coastguard Worker .n(8) 5298*4bdc9457SAndroid Build Coastguard Worker .k(k) 5299*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5300*4bdc9457SAndroid Build Coastguard Worker } 5301*4bdc9457SAndroid Build Coastguard Worker } 5302*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_gt_4_subtile)5303*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_gt_4_subtile) { 5304*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5305*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5306*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5307*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5308*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5309*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5310*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5311*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5312*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5313*4bdc9457SAndroid Build Coastguard Worker .m(m) 5314*4bdc9457SAndroid Build Coastguard Worker .n(n) 5315*4bdc9457SAndroid Build Coastguard Worker .k(k) 5316*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5317*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5318*4bdc9457SAndroid Build Coastguard Worker } 5319*4bdc9457SAndroid Build Coastguard Worker } 5320*4bdc9457SAndroid Build Coastguard Worker } 5321*4bdc9457SAndroid Build Coastguard Worker } 5322*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_div_4)5323*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_div_4) { 5324*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5325*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5326*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5327*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5328*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5329*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5330*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5331*4bdc9457SAndroid Build Coastguard Worker .m(4) 5332*4bdc9457SAndroid Build Coastguard Worker .n(8) 5333*4bdc9457SAndroid Build Coastguard Worker .k(k) 5334*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5335*4bdc9457SAndroid Build Coastguard Worker } 5336*4bdc9457SAndroid Build Coastguard Worker } 5337*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,k_div_4_subtile)5338*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, k_div_4_subtile) { 5339*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5340*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5341*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5342*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5343*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5344*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5345*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5346*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5347*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5348*4bdc9457SAndroid Build Coastguard Worker .m(m) 5349*4bdc9457SAndroid Build Coastguard Worker .n(n) 5350*4bdc9457SAndroid Build Coastguard Worker .k(k) 5351*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5352*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5353*4bdc9457SAndroid Build Coastguard Worker } 5354*4bdc9457SAndroid Build Coastguard Worker } 5355*4bdc9457SAndroid Build Coastguard Worker } 5356*4bdc9457SAndroid Build Coastguard Worker } 5357*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_gt_8)5358*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_gt_8) { 5359*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5360*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5361*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5362*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5363*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5364*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5365*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5366*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5367*4bdc9457SAndroid Build Coastguard Worker .m(4) 5368*4bdc9457SAndroid Build Coastguard Worker .n(n) 5369*4bdc9457SAndroid Build Coastguard Worker .k(k) 5370*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5371*4bdc9457SAndroid Build Coastguard Worker } 5372*4bdc9457SAndroid Build Coastguard Worker } 5373*4bdc9457SAndroid Build Coastguard Worker } 5374*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_gt_8_strided_cn)5375*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 5376*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5377*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5378*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5379*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5380*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5381*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5382*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5383*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5384*4bdc9457SAndroid Build Coastguard Worker .m(4) 5385*4bdc9457SAndroid Build Coastguard Worker .n(n) 5386*4bdc9457SAndroid Build Coastguard Worker .k(k) 5387*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5388*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5389*4bdc9457SAndroid Build Coastguard Worker } 5390*4bdc9457SAndroid Build Coastguard Worker } 5391*4bdc9457SAndroid Build Coastguard Worker } 5392*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_gt_8_subtile)5393*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_gt_8_subtile) { 5394*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5395*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5396*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5397*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5398*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5399*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5400*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5401*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5402*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5403*4bdc9457SAndroid Build Coastguard Worker .m(m) 5404*4bdc9457SAndroid Build Coastguard Worker .n(n) 5405*4bdc9457SAndroid Build Coastguard Worker .k(k) 5406*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5407*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5408*4bdc9457SAndroid Build Coastguard Worker } 5409*4bdc9457SAndroid Build Coastguard Worker } 5410*4bdc9457SAndroid Build Coastguard Worker } 5411*4bdc9457SAndroid Build Coastguard Worker } 5412*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_div_8)5413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_div_8) { 5414*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5415*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5416*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5417*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5418*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5419*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5420*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5421*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5422*4bdc9457SAndroid Build Coastguard Worker .m(4) 5423*4bdc9457SAndroid Build Coastguard Worker .n(n) 5424*4bdc9457SAndroid Build Coastguard Worker .k(k) 5425*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5426*4bdc9457SAndroid Build Coastguard Worker } 5427*4bdc9457SAndroid Build Coastguard Worker } 5428*4bdc9457SAndroid Build Coastguard Worker } 5429*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_div_8_strided_cn)5430*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_div_8_strided_cn) { 5431*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5432*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5433*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5434*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5435*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5436*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5437*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5438*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5439*4bdc9457SAndroid Build Coastguard Worker .m(4) 5440*4bdc9457SAndroid Build Coastguard Worker .n(n) 5441*4bdc9457SAndroid Build Coastguard Worker .k(k) 5442*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 5443*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5444*4bdc9457SAndroid Build Coastguard Worker } 5445*4bdc9457SAndroid Build Coastguard Worker } 5446*4bdc9457SAndroid Build Coastguard Worker } 5447*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_div_8_subtile)5448*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_div_8_subtile) { 5449*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5450*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5451*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5452*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5453*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5454*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5455*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5456*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5457*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5458*4bdc9457SAndroid Build Coastguard Worker .m(m) 5459*4bdc9457SAndroid Build Coastguard Worker .n(n) 5460*4bdc9457SAndroid Build Coastguard Worker .k(k) 5461*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5462*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5463*4bdc9457SAndroid Build Coastguard Worker } 5464*4bdc9457SAndroid Build Coastguard Worker } 5465*4bdc9457SAndroid Build Coastguard Worker } 5466*4bdc9457SAndroid Build Coastguard Worker } 5467*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,small_kernel)5468*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, small_kernel) { 5469*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5470*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5471*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5472*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5473*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5474*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5475*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5476*4bdc9457SAndroid Build Coastguard Worker .m(4) 5477*4bdc9457SAndroid Build Coastguard Worker .n(8) 5478*4bdc9457SAndroid Build Coastguard Worker .k(k) 5479*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5480*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5481*4bdc9457SAndroid Build Coastguard Worker } 5482*4bdc9457SAndroid Build Coastguard Worker } 5483*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,small_kernel_subtile)5484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, small_kernel_subtile) { 5485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5486*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5487*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5488*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5489*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5490*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5491*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5492*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5493*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5494*4bdc9457SAndroid Build Coastguard Worker .m(m) 5495*4bdc9457SAndroid Build Coastguard Worker .n(n) 5496*4bdc9457SAndroid Build Coastguard Worker .k(k) 5497*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5498*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5499*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5500*4bdc9457SAndroid Build Coastguard Worker } 5501*4bdc9457SAndroid Build Coastguard Worker } 5502*4bdc9457SAndroid Build Coastguard Worker } 5503*4bdc9457SAndroid Build Coastguard Worker } 5504*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_gt_8_small_kernel)5505*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_gt_8_small_kernel) { 5506*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5507*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 5508*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5509*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5510*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5511*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5512*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5513*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5514*4bdc9457SAndroid Build Coastguard Worker .m(4) 5515*4bdc9457SAndroid Build Coastguard Worker .n(n) 5516*4bdc9457SAndroid Build Coastguard Worker .k(k) 5517*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5518*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5519*4bdc9457SAndroid Build Coastguard Worker } 5520*4bdc9457SAndroid Build Coastguard Worker } 5521*4bdc9457SAndroid Build Coastguard Worker } 5522*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,n_div_8_small_kernel)5523*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, n_div_8_small_kernel) { 5524*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5525*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 5526*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5527*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5528*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5529*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5530*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5531*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5532*4bdc9457SAndroid Build Coastguard Worker .m(4) 5533*4bdc9457SAndroid Build Coastguard Worker .n(n) 5534*4bdc9457SAndroid Build Coastguard Worker .k(k) 5535*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5536*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5537*4bdc9457SAndroid Build Coastguard Worker } 5538*4bdc9457SAndroid Build Coastguard Worker } 5539*4bdc9457SAndroid Build Coastguard Worker } 5540*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,strided_cm_subtile)5541*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, strided_cm_subtile) { 5542*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5543*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5544*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 5545*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5546*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5547*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5548*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5549*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5550*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5551*4bdc9457SAndroid Build Coastguard Worker .m(m) 5552*4bdc9457SAndroid Build Coastguard Worker .n(n) 5553*4bdc9457SAndroid Build Coastguard Worker .k(k) 5554*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 5555*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5556*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5557*4bdc9457SAndroid Build Coastguard Worker } 5558*4bdc9457SAndroid Build Coastguard Worker } 5559*4bdc9457SAndroid Build Coastguard Worker } 5560*4bdc9457SAndroid Build Coastguard Worker } 5561*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,a_offset)5562*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, a_offset) { 5563*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5564*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5565*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5566*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5567*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5568*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5569*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5570*4bdc9457SAndroid Build Coastguard Worker .m(4) 5571*4bdc9457SAndroid Build Coastguard Worker .n(8) 5572*4bdc9457SAndroid Build Coastguard Worker .k(k) 5573*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5574*4bdc9457SAndroid Build Coastguard Worker .a_offset(83) 5575*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5576*4bdc9457SAndroid Build Coastguard Worker } 5577*4bdc9457SAndroid Build Coastguard Worker } 5578*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,zero)5579*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, zero) { 5580*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5581*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5582*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 5583*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5584*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5585*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5586*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5587*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5588*4bdc9457SAndroid Build Coastguard Worker .m(4) 5589*4bdc9457SAndroid Build Coastguard Worker .n(8) 5590*4bdc9457SAndroid Build Coastguard Worker .k(k) 5591*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5592*4bdc9457SAndroid Build Coastguard Worker .a_offset(83) 5593*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 5594*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5595*4bdc9457SAndroid Build Coastguard Worker } 5596*4bdc9457SAndroid Build Coastguard Worker } 5597*4bdc9457SAndroid Build Coastguard Worker } 5598*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,qmin)5599*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, qmin) { 5600*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5601*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5602*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5603*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5604*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5605*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5606*4bdc9457SAndroid Build Coastguard Worker .m(4) 5607*4bdc9457SAndroid Build Coastguard Worker .n(8) 5608*4bdc9457SAndroid Build Coastguard Worker .k(4) 5609*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 5610*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5611*4bdc9457SAndroid Build Coastguard Worker } 5612*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,qmax)5613*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, qmax) { 5614*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5615*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5616*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5617*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5618*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5619*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5620*4bdc9457SAndroid Build Coastguard Worker .m(4) 5621*4bdc9457SAndroid Build Coastguard Worker .n(8) 5622*4bdc9457SAndroid Build Coastguard Worker .k(4) 5623*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 5624*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5625*4bdc9457SAndroid Build Coastguard Worker } 5626*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64,strided_cm)5627*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__NEONFP16ARITH_LD64, strided_cm) { 5628*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5629*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5630*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5631*4bdc9457SAndroid Build Coastguard Worker .nr(8) 5632*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5633*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5634*4bdc9457SAndroid Build Coastguard Worker .m(4) 5635*4bdc9457SAndroid Build Coastguard Worker .n(8) 5636*4bdc9457SAndroid Build Coastguard Worker .k(4) 5637*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 5638*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5639*4bdc9457SAndroid Build Coastguard Worker } 5640*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 5641*4bdc9457SAndroid Build Coastguard Worker 5642*4bdc9457SAndroid Build Coastguard Worker 5643*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4)5644*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4) { 5645*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5646*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5647*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5648*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5649*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5650*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5651*4bdc9457SAndroid Build Coastguard Worker .m(4) 5652*4bdc9457SAndroid Build Coastguard Worker .n(16) 5653*4bdc9457SAndroid Build Coastguard Worker .k(4) 5654*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5655*4bdc9457SAndroid Build Coastguard Worker } 5656*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,strided_cn)5657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, strided_cn) { 5658*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5659*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5660*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5661*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5662*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5663*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5664*4bdc9457SAndroid Build Coastguard Worker .m(4) 5665*4bdc9457SAndroid Build Coastguard Worker .n(16) 5666*4bdc9457SAndroid Build Coastguard Worker .k(4) 5667*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 5668*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5669*4bdc9457SAndroid Build Coastguard Worker } 5670*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4_subtile)5671*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4_subtile) { 5672*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5673*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5674*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5675*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5676*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5677*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5678*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5679*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5680*4bdc9457SAndroid Build Coastguard Worker .m(m) 5681*4bdc9457SAndroid Build Coastguard Worker .n(n) 5682*4bdc9457SAndroid Build Coastguard Worker .k(4) 5683*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5684*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5685*4bdc9457SAndroid Build Coastguard Worker } 5686*4bdc9457SAndroid Build Coastguard Worker } 5687*4bdc9457SAndroid Build Coastguard Worker } 5688*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4_subtile_m)5689*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 5690*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5691*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5692*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5693*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5694*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5695*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5696*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5697*4bdc9457SAndroid Build Coastguard Worker .m(m) 5698*4bdc9457SAndroid Build Coastguard Worker .n(16) 5699*4bdc9457SAndroid Build Coastguard Worker .k(4) 5700*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5701*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5702*4bdc9457SAndroid Build Coastguard Worker } 5703*4bdc9457SAndroid Build Coastguard Worker } 5704*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_eq_4_subtile_n)5705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 5706*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5707*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5708*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5709*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5710*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5711*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5712*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5713*4bdc9457SAndroid Build Coastguard Worker .m(4) 5714*4bdc9457SAndroid Build Coastguard Worker .n(n) 5715*4bdc9457SAndroid Build Coastguard Worker .k(4) 5716*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5717*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5718*4bdc9457SAndroid Build Coastguard Worker } 5719*4bdc9457SAndroid Build Coastguard Worker } 5720*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_lt_4)5721*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_lt_4) { 5722*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5723*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5724*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5725*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5726*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5727*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5728*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5729*4bdc9457SAndroid Build Coastguard Worker .m(4) 5730*4bdc9457SAndroid Build Coastguard Worker .n(16) 5731*4bdc9457SAndroid Build Coastguard Worker .k(k) 5732*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5733*4bdc9457SAndroid Build Coastguard Worker } 5734*4bdc9457SAndroid Build Coastguard Worker } 5735*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_lt_4_subtile)5736*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_lt_4_subtile) { 5737*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5738*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 5739*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5740*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5741*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5742*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5743*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5744*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5745*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5746*4bdc9457SAndroid Build Coastguard Worker .m(m) 5747*4bdc9457SAndroid Build Coastguard Worker .n(n) 5748*4bdc9457SAndroid Build Coastguard Worker .k(k) 5749*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5750*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5751*4bdc9457SAndroid Build Coastguard Worker } 5752*4bdc9457SAndroid Build Coastguard Worker } 5753*4bdc9457SAndroid Build Coastguard Worker } 5754*4bdc9457SAndroid Build Coastguard Worker } 5755*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_gt_4)5756*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_gt_4) { 5757*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5758*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5759*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5760*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5761*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5762*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5763*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5764*4bdc9457SAndroid Build Coastguard Worker .m(4) 5765*4bdc9457SAndroid Build Coastguard Worker .n(16) 5766*4bdc9457SAndroid Build Coastguard Worker .k(k) 5767*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5768*4bdc9457SAndroid Build Coastguard Worker } 5769*4bdc9457SAndroid Build Coastguard Worker } 5770*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_gt_4_subtile)5771*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_gt_4_subtile) { 5772*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5773*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 5774*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5775*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5776*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5777*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5778*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5779*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5780*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5781*4bdc9457SAndroid Build Coastguard Worker .m(m) 5782*4bdc9457SAndroid Build Coastguard Worker .n(n) 5783*4bdc9457SAndroid Build Coastguard Worker .k(k) 5784*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5785*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5786*4bdc9457SAndroid Build Coastguard Worker } 5787*4bdc9457SAndroid Build Coastguard Worker } 5788*4bdc9457SAndroid Build Coastguard Worker } 5789*4bdc9457SAndroid Build Coastguard Worker } 5790*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_div_4)5791*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_div_4) { 5792*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5793*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5794*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5795*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5796*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5797*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5798*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5799*4bdc9457SAndroid Build Coastguard Worker .m(4) 5800*4bdc9457SAndroid Build Coastguard Worker .n(16) 5801*4bdc9457SAndroid Build Coastguard Worker .k(k) 5802*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5803*4bdc9457SAndroid Build Coastguard Worker } 5804*4bdc9457SAndroid Build Coastguard Worker } 5805*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,k_div_4_subtile)5806*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, k_div_4_subtile) { 5807*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5808*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 5809*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5810*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5811*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5812*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5813*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5814*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5815*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5816*4bdc9457SAndroid Build Coastguard Worker .m(m) 5817*4bdc9457SAndroid Build Coastguard Worker .n(n) 5818*4bdc9457SAndroid Build Coastguard Worker .k(k) 5819*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5820*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5821*4bdc9457SAndroid Build Coastguard Worker } 5822*4bdc9457SAndroid Build Coastguard Worker } 5823*4bdc9457SAndroid Build Coastguard Worker } 5824*4bdc9457SAndroid Build Coastguard Worker } 5825*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_gt_16)5826*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_gt_16) { 5827*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5828*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5829*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5830*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5831*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5832*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5833*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5834*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5835*4bdc9457SAndroid Build Coastguard Worker .m(4) 5836*4bdc9457SAndroid Build Coastguard Worker .n(n) 5837*4bdc9457SAndroid Build Coastguard Worker .k(k) 5838*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5839*4bdc9457SAndroid Build Coastguard Worker } 5840*4bdc9457SAndroid Build Coastguard Worker } 5841*4bdc9457SAndroid Build Coastguard Worker } 5842*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_gt_16_strided_cn)5843*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 5844*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5845*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5846*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5847*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5848*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5849*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5850*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5851*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5852*4bdc9457SAndroid Build Coastguard Worker .m(4) 5853*4bdc9457SAndroid Build Coastguard Worker .n(n) 5854*4bdc9457SAndroid Build Coastguard Worker .k(k) 5855*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 5856*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5857*4bdc9457SAndroid Build Coastguard Worker } 5858*4bdc9457SAndroid Build Coastguard Worker } 5859*4bdc9457SAndroid Build Coastguard Worker } 5860*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_gt_16_subtile)5861*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_gt_16_subtile) { 5862*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5863*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5864*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5865*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5866*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5867*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5868*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5869*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5870*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5871*4bdc9457SAndroid Build Coastguard Worker .m(m) 5872*4bdc9457SAndroid Build Coastguard Worker .n(n) 5873*4bdc9457SAndroid Build Coastguard Worker .k(k) 5874*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5875*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5876*4bdc9457SAndroid Build Coastguard Worker } 5877*4bdc9457SAndroid Build Coastguard Worker } 5878*4bdc9457SAndroid Build Coastguard Worker } 5879*4bdc9457SAndroid Build Coastguard Worker } 5880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_div_16)5881*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_div_16) { 5882*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5883*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5884*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5885*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5886*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5887*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5888*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5889*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5890*4bdc9457SAndroid Build Coastguard Worker .m(4) 5891*4bdc9457SAndroid Build Coastguard Worker .n(n) 5892*4bdc9457SAndroid Build Coastguard Worker .k(k) 5893*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5894*4bdc9457SAndroid Build Coastguard Worker } 5895*4bdc9457SAndroid Build Coastguard Worker } 5896*4bdc9457SAndroid Build Coastguard Worker } 5897*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_div_16_strided_cn)5898*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_div_16_strided_cn) { 5899*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5900*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5901*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5902*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5903*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5904*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5905*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5906*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5907*4bdc9457SAndroid Build Coastguard Worker .m(4) 5908*4bdc9457SAndroid Build Coastguard Worker .n(n) 5909*4bdc9457SAndroid Build Coastguard Worker .k(k) 5910*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 5911*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5912*4bdc9457SAndroid Build Coastguard Worker } 5913*4bdc9457SAndroid Build Coastguard Worker } 5914*4bdc9457SAndroid Build Coastguard Worker } 5915*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_div_16_subtile)5916*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_div_16_subtile) { 5917*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5918*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5919*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5920*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5921*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5922*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5923*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5924*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5925*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5926*4bdc9457SAndroid Build Coastguard Worker .m(m) 5927*4bdc9457SAndroid Build Coastguard Worker .n(n) 5928*4bdc9457SAndroid Build Coastguard Worker .k(k) 5929*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5930*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5931*4bdc9457SAndroid Build Coastguard Worker } 5932*4bdc9457SAndroid Build Coastguard Worker } 5933*4bdc9457SAndroid Build Coastguard Worker } 5934*4bdc9457SAndroid Build Coastguard Worker } 5935*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,small_kernel)5936*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, small_kernel) { 5937*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5938*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5939*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5940*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5941*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5942*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5943*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5944*4bdc9457SAndroid Build Coastguard Worker .m(4) 5945*4bdc9457SAndroid Build Coastguard Worker .n(16) 5946*4bdc9457SAndroid Build Coastguard Worker .k(k) 5947*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5948*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5949*4bdc9457SAndroid Build Coastguard Worker } 5950*4bdc9457SAndroid Build Coastguard Worker } 5951*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,small_kernel_subtile)5952*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, small_kernel_subtile) { 5953*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5954*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5955*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 5956*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 5957*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5958*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5959*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5960*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5961*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5962*4bdc9457SAndroid Build Coastguard Worker .m(m) 5963*4bdc9457SAndroid Build Coastguard Worker .n(n) 5964*4bdc9457SAndroid Build Coastguard Worker .k(k) 5965*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5966*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 5967*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5968*4bdc9457SAndroid Build Coastguard Worker } 5969*4bdc9457SAndroid Build Coastguard Worker } 5970*4bdc9457SAndroid Build Coastguard Worker } 5971*4bdc9457SAndroid Build Coastguard Worker } 5972*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_gt_16_small_kernel)5973*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_gt_16_small_kernel) { 5974*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5975*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 5976*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5977*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5978*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5979*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5980*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5981*4bdc9457SAndroid Build Coastguard Worker .sr(1) 5982*4bdc9457SAndroid Build Coastguard Worker .m(4) 5983*4bdc9457SAndroid Build Coastguard Worker .n(n) 5984*4bdc9457SAndroid Build Coastguard Worker .k(k) 5985*4bdc9457SAndroid Build Coastguard Worker .ks(3) 5986*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 5987*4bdc9457SAndroid Build Coastguard Worker } 5988*4bdc9457SAndroid Build Coastguard Worker } 5989*4bdc9457SAndroid Build Coastguard Worker } 5990*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,n_div_16_small_kernel)5991*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, n_div_16_small_kernel) { 5992*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 5993*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 5994*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 5995*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 5996*4bdc9457SAndroid Build Coastguard Worker .mr(4) 5997*4bdc9457SAndroid Build Coastguard Worker .nr(16) 5998*4bdc9457SAndroid Build Coastguard Worker .kr(1) 5999*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6000*4bdc9457SAndroid Build Coastguard Worker .m(4) 6001*4bdc9457SAndroid Build Coastguard Worker .n(n) 6002*4bdc9457SAndroid Build Coastguard Worker .k(k) 6003*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6004*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6005*4bdc9457SAndroid Build Coastguard Worker } 6006*4bdc9457SAndroid Build Coastguard Worker } 6007*4bdc9457SAndroid Build Coastguard Worker } 6008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,strided_cm_subtile)6009*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, strided_cm_subtile) { 6010*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6011*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6012*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6013*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 6014*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6015*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6016*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6017*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6018*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6019*4bdc9457SAndroid Build Coastguard Worker .m(m) 6020*4bdc9457SAndroid Build Coastguard Worker .n(n) 6021*4bdc9457SAndroid Build Coastguard Worker .k(k) 6022*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 6023*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6024*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6025*4bdc9457SAndroid Build Coastguard Worker } 6026*4bdc9457SAndroid Build Coastguard Worker } 6027*4bdc9457SAndroid Build Coastguard Worker } 6028*4bdc9457SAndroid Build Coastguard Worker } 6029*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,a_offset)6030*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, a_offset) { 6031*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6032*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6033*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6034*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6035*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6036*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6037*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6038*4bdc9457SAndroid Build Coastguard Worker .m(4) 6039*4bdc9457SAndroid Build Coastguard Worker .n(16) 6040*4bdc9457SAndroid Build Coastguard Worker .k(k) 6041*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6042*4bdc9457SAndroid Build Coastguard Worker .a_offset(83) 6043*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__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_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,zero)6047*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, zero) { 6048*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6049*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6050*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 6051*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6052*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6053*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6054*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6055*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6056*4bdc9457SAndroid Build Coastguard Worker .m(4) 6057*4bdc9457SAndroid Build Coastguard Worker .n(16) 6058*4bdc9457SAndroid Build Coastguard Worker .k(k) 6059*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6060*4bdc9457SAndroid Build Coastguard Worker .a_offset(83) 6061*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 6062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6063*4bdc9457SAndroid Build Coastguard Worker } 6064*4bdc9457SAndroid Build Coastguard Worker } 6065*4bdc9457SAndroid Build Coastguard Worker } 6066*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,qmin)6067*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, qmin) { 6068*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6069*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6070*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6071*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6072*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6073*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6074*4bdc9457SAndroid Build Coastguard Worker .m(4) 6075*4bdc9457SAndroid Build Coastguard Worker .n(16) 6076*4bdc9457SAndroid Build Coastguard Worker .k(4) 6077*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6078*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6079*4bdc9457SAndroid Build Coastguard Worker } 6080*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,qmax)6081*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, qmax) { 6082*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6083*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6084*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6085*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6086*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6087*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6088*4bdc9457SAndroid Build Coastguard Worker .m(4) 6089*4bdc9457SAndroid Build Coastguard Worker .n(16) 6090*4bdc9457SAndroid Build Coastguard Worker .k(4) 6091*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6092*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6093*4bdc9457SAndroid Build Coastguard Worker } 6094*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64,strided_cm)6095*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__NEONFP16ARITH_LD64, strided_cm) { 6096*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6097*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6098*4bdc9457SAndroid Build Coastguard Worker .mr(4) 6099*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6100*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6101*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6102*4bdc9457SAndroid Build Coastguard Worker .m(4) 6103*4bdc9457SAndroid Build Coastguard Worker .n(16) 6104*4bdc9457SAndroid Build Coastguard Worker .k(4) 6105*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 6106*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6107*4bdc9457SAndroid Build Coastguard Worker } 6108*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 6109*4bdc9457SAndroid Build Coastguard Worker 6110*4bdc9457SAndroid Build Coastguard Worker 6111*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4)6112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4) { 6113*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6114*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6115*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6116*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6117*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6118*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6119*4bdc9457SAndroid Build Coastguard Worker .m(6) 6120*4bdc9457SAndroid Build Coastguard Worker .n(8) 6121*4bdc9457SAndroid Build Coastguard Worker .k(4) 6122*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6123*4bdc9457SAndroid Build Coastguard Worker } 6124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,strided_cn)6125*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, strided_cn) { 6126*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6127*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6128*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6129*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6130*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6131*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6132*4bdc9457SAndroid Build Coastguard Worker .m(6) 6133*4bdc9457SAndroid Build Coastguard Worker .n(8) 6134*4bdc9457SAndroid Build Coastguard Worker .k(4) 6135*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 6136*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6137*4bdc9457SAndroid Build Coastguard Worker } 6138*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4_subtile)6139*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4_subtile) { 6140*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6141*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6142*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6143*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6144*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6145*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6146*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6147*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6148*4bdc9457SAndroid Build Coastguard Worker .m(m) 6149*4bdc9457SAndroid Build Coastguard Worker .n(n) 6150*4bdc9457SAndroid Build Coastguard Worker .k(4) 6151*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6152*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6153*4bdc9457SAndroid Build Coastguard Worker } 6154*4bdc9457SAndroid Build Coastguard Worker } 6155*4bdc9457SAndroid Build Coastguard Worker } 6156*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4_subtile_m)6157*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 6158*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6159*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6160*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6161*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6162*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6163*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6164*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6165*4bdc9457SAndroid Build Coastguard Worker .m(m) 6166*4bdc9457SAndroid Build Coastguard Worker .n(8) 6167*4bdc9457SAndroid Build Coastguard Worker .k(4) 6168*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6169*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6170*4bdc9457SAndroid Build Coastguard Worker } 6171*4bdc9457SAndroid Build Coastguard Worker } 6172*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_eq_4_subtile_n)6173*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 6174*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6175*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6176*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6177*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6178*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6179*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6180*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6181*4bdc9457SAndroid Build Coastguard Worker .m(6) 6182*4bdc9457SAndroid Build Coastguard Worker .n(n) 6183*4bdc9457SAndroid Build Coastguard Worker .k(4) 6184*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6185*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6186*4bdc9457SAndroid Build Coastguard Worker } 6187*4bdc9457SAndroid Build Coastguard Worker } 6188*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_lt_4)6189*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_lt_4) { 6190*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6191*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6192*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6193*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6194*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6195*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6196*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6197*4bdc9457SAndroid Build Coastguard Worker .m(6) 6198*4bdc9457SAndroid Build Coastguard Worker .n(8) 6199*4bdc9457SAndroid Build Coastguard Worker .k(k) 6200*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6201*4bdc9457SAndroid Build Coastguard Worker } 6202*4bdc9457SAndroid Build Coastguard Worker } 6203*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_lt_4_subtile)6204*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_lt_4_subtile) { 6205*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6206*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6207*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6208*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6209*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6210*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6211*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6212*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6213*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6214*4bdc9457SAndroid Build Coastguard Worker .m(m) 6215*4bdc9457SAndroid Build Coastguard Worker .n(n) 6216*4bdc9457SAndroid Build Coastguard Worker .k(k) 6217*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6218*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6219*4bdc9457SAndroid Build Coastguard Worker } 6220*4bdc9457SAndroid Build Coastguard Worker } 6221*4bdc9457SAndroid Build Coastguard Worker } 6222*4bdc9457SAndroid Build Coastguard Worker } 6223*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_gt_4)6224*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_gt_4) { 6225*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6226*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6227*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6228*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6229*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6230*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6231*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6232*4bdc9457SAndroid Build Coastguard Worker .m(6) 6233*4bdc9457SAndroid Build Coastguard Worker .n(8) 6234*4bdc9457SAndroid Build Coastguard Worker .k(k) 6235*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6236*4bdc9457SAndroid Build Coastguard Worker } 6237*4bdc9457SAndroid Build Coastguard Worker } 6238*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_gt_4_subtile)6239*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_gt_4_subtile) { 6240*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6241*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6242*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6243*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6244*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6245*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6246*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6247*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6248*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6249*4bdc9457SAndroid Build Coastguard Worker .m(m) 6250*4bdc9457SAndroid Build Coastguard Worker .n(n) 6251*4bdc9457SAndroid Build Coastguard Worker .k(k) 6252*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6253*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6254*4bdc9457SAndroid Build Coastguard Worker } 6255*4bdc9457SAndroid Build Coastguard Worker } 6256*4bdc9457SAndroid Build Coastguard Worker } 6257*4bdc9457SAndroid Build Coastguard Worker } 6258*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_div_4)6259*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_div_4) { 6260*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6261*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6262*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6263*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6264*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6265*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6266*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6267*4bdc9457SAndroid Build Coastguard Worker .m(6) 6268*4bdc9457SAndroid Build Coastguard Worker .n(8) 6269*4bdc9457SAndroid Build Coastguard Worker .k(k) 6270*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6271*4bdc9457SAndroid Build Coastguard Worker } 6272*4bdc9457SAndroid Build Coastguard Worker } 6273*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,k_div_4_subtile)6274*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, k_div_4_subtile) { 6275*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6276*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6277*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6278*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6279*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6280*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6281*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6282*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6283*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6284*4bdc9457SAndroid Build Coastguard Worker .m(m) 6285*4bdc9457SAndroid Build Coastguard Worker .n(n) 6286*4bdc9457SAndroid Build Coastguard Worker .k(k) 6287*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6288*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6289*4bdc9457SAndroid Build Coastguard Worker } 6290*4bdc9457SAndroid Build Coastguard Worker } 6291*4bdc9457SAndroid Build Coastguard Worker } 6292*4bdc9457SAndroid Build Coastguard Worker } 6293*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_gt_8)6294*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_gt_8) { 6295*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6296*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 6297*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6298*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6299*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6300*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6301*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6302*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6303*4bdc9457SAndroid Build Coastguard Worker .m(6) 6304*4bdc9457SAndroid Build Coastguard Worker .n(n) 6305*4bdc9457SAndroid Build Coastguard Worker .k(k) 6306*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6307*4bdc9457SAndroid Build Coastguard Worker } 6308*4bdc9457SAndroid Build Coastguard Worker } 6309*4bdc9457SAndroid Build Coastguard Worker } 6310*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_gt_8_strided_cn)6311*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 6312*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6313*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 6314*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6315*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6316*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6317*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6318*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6319*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6320*4bdc9457SAndroid Build Coastguard Worker .m(6) 6321*4bdc9457SAndroid Build Coastguard Worker .n(n) 6322*4bdc9457SAndroid Build Coastguard Worker .k(k) 6323*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 6324*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6325*4bdc9457SAndroid Build Coastguard Worker } 6326*4bdc9457SAndroid Build Coastguard Worker } 6327*4bdc9457SAndroid Build Coastguard Worker } 6328*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_gt_8_subtile)6329*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_gt_8_subtile) { 6330*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6331*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 6332*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6333*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6334*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6335*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6336*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6337*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6338*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6339*4bdc9457SAndroid Build Coastguard Worker .m(m) 6340*4bdc9457SAndroid Build Coastguard Worker .n(n) 6341*4bdc9457SAndroid Build Coastguard Worker .k(k) 6342*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6343*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6344*4bdc9457SAndroid Build Coastguard Worker } 6345*4bdc9457SAndroid Build Coastguard Worker } 6346*4bdc9457SAndroid Build Coastguard Worker } 6347*4bdc9457SAndroid Build Coastguard Worker } 6348*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_div_8)6349*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_div_8) { 6350*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6351*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 6352*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6353*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6354*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6355*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6356*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6357*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6358*4bdc9457SAndroid Build Coastguard Worker .m(6) 6359*4bdc9457SAndroid Build Coastguard Worker .n(n) 6360*4bdc9457SAndroid Build Coastguard Worker .k(k) 6361*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__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 TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_div_8_strided_cn)6366*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_div_8_strided_cn) { 6367*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6368*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 6369*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6370*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6371*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6372*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6373*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6374*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6375*4bdc9457SAndroid Build Coastguard Worker .m(6) 6376*4bdc9457SAndroid Build Coastguard Worker .n(n) 6377*4bdc9457SAndroid Build Coastguard Worker .k(k) 6378*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 6379*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6380*4bdc9457SAndroid Build Coastguard Worker } 6381*4bdc9457SAndroid Build Coastguard Worker } 6382*4bdc9457SAndroid Build Coastguard Worker } 6383*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_div_8_subtile)6384*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_div_8_subtile) { 6385*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6386*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 6387*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6388*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6389*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6390*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6391*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6392*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6393*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6394*4bdc9457SAndroid Build Coastguard Worker .m(m) 6395*4bdc9457SAndroid Build Coastguard Worker .n(n) 6396*4bdc9457SAndroid Build Coastguard Worker .k(k) 6397*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6398*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6399*4bdc9457SAndroid Build Coastguard Worker } 6400*4bdc9457SAndroid Build Coastguard Worker } 6401*4bdc9457SAndroid Build Coastguard Worker } 6402*4bdc9457SAndroid Build Coastguard Worker } 6403*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,small_kernel)6404*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, small_kernel) { 6405*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6406*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6407*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6408*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6409*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6410*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6411*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6412*4bdc9457SAndroid Build Coastguard Worker .m(6) 6413*4bdc9457SAndroid Build Coastguard Worker .n(8) 6414*4bdc9457SAndroid Build Coastguard Worker .k(k) 6415*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6416*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6417*4bdc9457SAndroid Build Coastguard Worker } 6418*4bdc9457SAndroid Build Coastguard Worker } 6419*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,small_kernel_subtile)6420*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, small_kernel_subtile) { 6421*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6422*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6423*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6424*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6425*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6426*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6427*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6428*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6429*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6430*4bdc9457SAndroid Build Coastguard Worker .m(m) 6431*4bdc9457SAndroid Build Coastguard Worker .n(n) 6432*4bdc9457SAndroid Build Coastguard Worker .k(k) 6433*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6434*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6435*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6436*4bdc9457SAndroid Build Coastguard Worker } 6437*4bdc9457SAndroid Build Coastguard Worker } 6438*4bdc9457SAndroid Build Coastguard Worker } 6439*4bdc9457SAndroid Build Coastguard Worker } 6440*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_gt_8_small_kernel)6441*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_gt_8_small_kernel) { 6442*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6443*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 6444*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6445*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6446*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6447*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6448*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6449*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6450*4bdc9457SAndroid Build Coastguard Worker .m(6) 6451*4bdc9457SAndroid Build Coastguard Worker .n(n) 6452*4bdc9457SAndroid Build Coastguard Worker .k(k) 6453*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6454*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6455*4bdc9457SAndroid Build Coastguard Worker } 6456*4bdc9457SAndroid Build Coastguard Worker } 6457*4bdc9457SAndroid Build Coastguard Worker } 6458*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,n_div_8_small_kernel)6459*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, n_div_8_small_kernel) { 6460*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6461*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 6462*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6463*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6464*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6465*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6466*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6467*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6468*4bdc9457SAndroid Build Coastguard Worker .m(6) 6469*4bdc9457SAndroid Build Coastguard Worker .n(n) 6470*4bdc9457SAndroid Build Coastguard Worker .k(k) 6471*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6472*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6473*4bdc9457SAndroid Build Coastguard Worker } 6474*4bdc9457SAndroid Build Coastguard Worker } 6475*4bdc9457SAndroid Build Coastguard Worker } 6476*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,strided_cm_subtile)6477*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, strided_cm_subtile) { 6478*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6479*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6480*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 6481*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6482*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6483*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6484*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6485*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6486*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6487*4bdc9457SAndroid Build Coastguard Worker .m(m) 6488*4bdc9457SAndroid Build Coastguard Worker .n(n) 6489*4bdc9457SAndroid Build Coastguard Worker .k(k) 6490*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 6491*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6493*4bdc9457SAndroid Build Coastguard Worker } 6494*4bdc9457SAndroid Build Coastguard Worker } 6495*4bdc9457SAndroid Build Coastguard Worker } 6496*4bdc9457SAndroid Build Coastguard Worker } 6497*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,a_offset)6498*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, a_offset) { 6499*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6500*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6501*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6502*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6503*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6504*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6505*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6506*4bdc9457SAndroid Build Coastguard Worker .m(6) 6507*4bdc9457SAndroid Build Coastguard Worker .n(8) 6508*4bdc9457SAndroid Build Coastguard Worker .k(k) 6509*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6510*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 6511*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6512*4bdc9457SAndroid Build Coastguard Worker } 6513*4bdc9457SAndroid Build Coastguard Worker } 6514*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,zero)6515*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, zero) { 6516*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6517*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6518*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 6; mz++) { 6519*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6520*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6521*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6522*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6523*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6524*4bdc9457SAndroid Build Coastguard Worker .m(6) 6525*4bdc9457SAndroid Build Coastguard Worker .n(8) 6526*4bdc9457SAndroid Build Coastguard Worker .k(k) 6527*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6528*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 6529*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 6530*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6531*4bdc9457SAndroid Build Coastguard Worker } 6532*4bdc9457SAndroid Build Coastguard Worker } 6533*4bdc9457SAndroid Build Coastguard Worker } 6534*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,qmin)6535*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, qmin) { 6536*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6537*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6538*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6539*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6540*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6541*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6542*4bdc9457SAndroid Build Coastguard Worker .m(6) 6543*4bdc9457SAndroid Build Coastguard Worker .n(8) 6544*4bdc9457SAndroid Build Coastguard Worker .k(4) 6545*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 6546*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6547*4bdc9457SAndroid Build Coastguard Worker } 6548*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,qmax)6549*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, qmax) { 6550*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6551*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6552*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6553*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6554*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6555*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6556*4bdc9457SAndroid Build Coastguard Worker .m(6) 6557*4bdc9457SAndroid Build Coastguard Worker .n(8) 6558*4bdc9457SAndroid Build Coastguard Worker .k(4) 6559*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 6560*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6561*4bdc9457SAndroid Build Coastguard Worker } 6562*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64,strided_cm)6563*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__NEONFP16ARITH_LD64, strided_cm) { 6564*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6565*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6566*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6567*4bdc9457SAndroid Build Coastguard Worker .nr(8) 6568*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6569*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6570*4bdc9457SAndroid Build Coastguard Worker .m(6) 6571*4bdc9457SAndroid Build Coastguard Worker .n(8) 6572*4bdc9457SAndroid Build Coastguard Worker .k(4) 6573*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 6574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6575*4bdc9457SAndroid Build Coastguard Worker } 6576*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 6577*4bdc9457SAndroid Build Coastguard Worker 6578*4bdc9457SAndroid Build Coastguard Worker 6579*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4)6580*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4) { 6581*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6582*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6583*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6584*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6585*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6586*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6587*4bdc9457SAndroid Build Coastguard Worker .m(6) 6588*4bdc9457SAndroid Build Coastguard Worker .n(16) 6589*4bdc9457SAndroid Build Coastguard Worker .k(4) 6590*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6591*4bdc9457SAndroid Build Coastguard Worker } 6592*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,strided_cn)6593*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, strided_cn) { 6594*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6595*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6596*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6597*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6598*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6599*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6600*4bdc9457SAndroid Build Coastguard Worker .m(6) 6601*4bdc9457SAndroid Build Coastguard Worker .n(16) 6602*4bdc9457SAndroid Build Coastguard Worker .k(4) 6603*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6604*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6605*4bdc9457SAndroid Build Coastguard Worker } 6606*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4_subtile)6607*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4_subtile) { 6608*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6609*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6610*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6611*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6612*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6613*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6614*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6615*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6616*4bdc9457SAndroid Build Coastguard Worker .m(m) 6617*4bdc9457SAndroid Build Coastguard Worker .n(n) 6618*4bdc9457SAndroid Build Coastguard Worker .k(4) 6619*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6620*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6621*4bdc9457SAndroid Build Coastguard Worker } 6622*4bdc9457SAndroid Build Coastguard Worker } 6623*4bdc9457SAndroid Build Coastguard Worker } 6624*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4_subtile_m)6625*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 6626*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6627*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6628*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6629*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6630*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6631*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6632*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6633*4bdc9457SAndroid Build Coastguard Worker .m(m) 6634*4bdc9457SAndroid Build Coastguard Worker .n(16) 6635*4bdc9457SAndroid Build Coastguard Worker .k(4) 6636*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6637*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6638*4bdc9457SAndroid Build Coastguard Worker } 6639*4bdc9457SAndroid Build Coastguard Worker } 6640*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_eq_4_subtile_n)6641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 6642*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6643*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6644*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6645*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6646*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6647*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6648*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6649*4bdc9457SAndroid Build Coastguard Worker .m(6) 6650*4bdc9457SAndroid Build Coastguard Worker .n(n) 6651*4bdc9457SAndroid Build Coastguard Worker .k(4) 6652*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6653*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6654*4bdc9457SAndroid Build Coastguard Worker } 6655*4bdc9457SAndroid Build Coastguard Worker } 6656*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_lt_4)6657*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_lt_4) { 6658*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6659*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6660*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6661*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 6666*4bdc9457SAndroid Build Coastguard Worker .n(16) 6667*4bdc9457SAndroid Build Coastguard Worker .k(k) 6668*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6669*4bdc9457SAndroid Build Coastguard Worker } 6670*4bdc9457SAndroid Build Coastguard Worker } 6671*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_lt_4_subtile)6672*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_lt_4_subtile) { 6673*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6674*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 6675*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6676*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6677*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6678*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(m) 6683*4bdc9457SAndroid Build Coastguard Worker .n(n) 6684*4bdc9457SAndroid Build Coastguard Worker .k(k) 6685*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6686*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__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 } 6691*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_gt_4)6692*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_gt_4) { 6693*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6694*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6695*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6696*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(6) 6701*4bdc9457SAndroid Build Coastguard Worker .n(16) 6702*4bdc9457SAndroid Build Coastguard Worker .k(k) 6703*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6704*4bdc9457SAndroid Build Coastguard Worker } 6705*4bdc9457SAndroid Build Coastguard Worker } 6706*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_gt_4_subtile)6707*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_gt_4_subtile) { 6708*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6709*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 6710*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6711*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6712*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6713*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6714*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6715*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6716*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6717*4bdc9457SAndroid Build Coastguard Worker .m(m) 6718*4bdc9457SAndroid Build Coastguard Worker .n(n) 6719*4bdc9457SAndroid Build Coastguard Worker .k(k) 6720*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6721*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6722*4bdc9457SAndroid Build Coastguard Worker } 6723*4bdc9457SAndroid Build Coastguard Worker } 6724*4bdc9457SAndroid Build Coastguard Worker } 6725*4bdc9457SAndroid Build Coastguard Worker } 6726*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_div_4)6727*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_div_4) { 6728*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6729*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6730*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6731*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6732*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6733*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6734*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6735*4bdc9457SAndroid Build Coastguard Worker .m(6) 6736*4bdc9457SAndroid Build Coastguard Worker .n(16) 6737*4bdc9457SAndroid Build Coastguard Worker .k(k) 6738*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6739*4bdc9457SAndroid Build Coastguard Worker } 6740*4bdc9457SAndroid Build Coastguard Worker } 6741*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,k_div_4_subtile)6742*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, k_div_4_subtile) { 6743*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6744*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 6745*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6746*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6747*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6748*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6749*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6750*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6751*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6752*4bdc9457SAndroid Build Coastguard Worker .m(m) 6753*4bdc9457SAndroid Build Coastguard Worker .n(n) 6754*4bdc9457SAndroid Build Coastguard Worker .k(k) 6755*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6756*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6757*4bdc9457SAndroid Build Coastguard Worker } 6758*4bdc9457SAndroid Build Coastguard Worker } 6759*4bdc9457SAndroid Build Coastguard Worker } 6760*4bdc9457SAndroid Build Coastguard Worker } 6761*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_gt_16)6762*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_gt_16) { 6763*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6764*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6765*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6766*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6767*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6768*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6769*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6770*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6771*4bdc9457SAndroid Build Coastguard Worker .m(6) 6772*4bdc9457SAndroid Build Coastguard Worker .n(n) 6773*4bdc9457SAndroid Build Coastguard Worker .k(k) 6774*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6775*4bdc9457SAndroid Build Coastguard Worker } 6776*4bdc9457SAndroid Build Coastguard Worker } 6777*4bdc9457SAndroid Build Coastguard Worker } 6778*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_gt_16_strided_cn)6779*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 6780*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6781*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6782*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6783*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6784*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6785*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6786*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6787*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6788*4bdc9457SAndroid Build Coastguard Worker .m(6) 6789*4bdc9457SAndroid Build Coastguard Worker .n(n) 6790*4bdc9457SAndroid Build Coastguard Worker .k(k) 6791*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6792*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6793*4bdc9457SAndroid Build Coastguard Worker } 6794*4bdc9457SAndroid Build Coastguard Worker } 6795*4bdc9457SAndroid Build Coastguard Worker } 6796*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_gt_16_subtile)6797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_gt_16_subtile) { 6798*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6799*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6800*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6801*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6802*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6803*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6804*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6805*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6806*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6807*4bdc9457SAndroid Build Coastguard Worker .m(m) 6808*4bdc9457SAndroid Build Coastguard Worker .n(n) 6809*4bdc9457SAndroid Build Coastguard Worker .k(k) 6810*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6811*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6812*4bdc9457SAndroid Build Coastguard Worker } 6813*4bdc9457SAndroid Build Coastguard Worker } 6814*4bdc9457SAndroid Build Coastguard Worker } 6815*4bdc9457SAndroid Build Coastguard Worker } 6816*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_div_16)6817*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_div_16) { 6818*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6819*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6820*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6821*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6822*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6823*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6824*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6825*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6826*4bdc9457SAndroid Build Coastguard Worker .m(6) 6827*4bdc9457SAndroid Build Coastguard Worker .n(n) 6828*4bdc9457SAndroid Build Coastguard Worker .k(k) 6829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6830*4bdc9457SAndroid Build Coastguard Worker } 6831*4bdc9457SAndroid Build Coastguard Worker } 6832*4bdc9457SAndroid Build Coastguard Worker } 6833*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_div_16_strided_cn)6834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_div_16_strided_cn) { 6835*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6836*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6837*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6838*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6839*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6840*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6841*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6842*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6843*4bdc9457SAndroid Build Coastguard Worker .m(6) 6844*4bdc9457SAndroid Build Coastguard Worker .n(n) 6845*4bdc9457SAndroid Build Coastguard Worker .k(k) 6846*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 6847*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6848*4bdc9457SAndroid Build Coastguard Worker } 6849*4bdc9457SAndroid Build Coastguard Worker } 6850*4bdc9457SAndroid Build Coastguard Worker } 6851*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_div_16_subtile)6852*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_div_16_subtile) { 6853*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6854*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6855*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6856*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6857*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6858*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6859*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6860*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6861*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6862*4bdc9457SAndroid Build Coastguard Worker .m(m) 6863*4bdc9457SAndroid Build Coastguard Worker .n(n) 6864*4bdc9457SAndroid Build Coastguard Worker .k(k) 6865*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6867*4bdc9457SAndroid Build Coastguard Worker } 6868*4bdc9457SAndroid Build Coastguard Worker } 6869*4bdc9457SAndroid Build Coastguard Worker } 6870*4bdc9457SAndroid Build Coastguard Worker } 6871*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,small_kernel)6872*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, small_kernel) { 6873*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6874*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6875*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6876*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6877*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6878*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6879*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6880*4bdc9457SAndroid Build Coastguard Worker .m(6) 6881*4bdc9457SAndroid Build Coastguard Worker .n(16) 6882*4bdc9457SAndroid Build Coastguard Worker .k(k) 6883*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6884*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6885*4bdc9457SAndroid Build Coastguard Worker } 6886*4bdc9457SAndroid Build Coastguard Worker } 6887*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,small_kernel_subtile)6888*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, small_kernel_subtile) { 6889*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6890*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6891*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6892*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6893*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6894*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6895*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6896*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6897*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6898*4bdc9457SAndroid Build Coastguard Worker .m(m) 6899*4bdc9457SAndroid Build Coastguard Worker .n(n) 6900*4bdc9457SAndroid Build Coastguard Worker .k(k) 6901*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6902*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6903*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6904*4bdc9457SAndroid Build Coastguard Worker } 6905*4bdc9457SAndroid Build Coastguard Worker } 6906*4bdc9457SAndroid Build Coastguard Worker } 6907*4bdc9457SAndroid Build Coastguard Worker } 6908*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_gt_16_small_kernel)6909*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_gt_16_small_kernel) { 6910*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6911*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 6912*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6913*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6914*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6915*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6916*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6917*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6918*4bdc9457SAndroid Build Coastguard Worker .m(6) 6919*4bdc9457SAndroid Build Coastguard Worker .n(n) 6920*4bdc9457SAndroid Build Coastguard Worker .k(k) 6921*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__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_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,n_div_16_small_kernel)6927*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, n_div_16_small_kernel) { 6928*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6929*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 6930*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6931*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6932*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6933*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6934*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6935*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6936*4bdc9457SAndroid Build Coastguard Worker .m(6) 6937*4bdc9457SAndroid Build Coastguard Worker .n(n) 6938*4bdc9457SAndroid Build Coastguard Worker .k(k) 6939*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6940*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6941*4bdc9457SAndroid Build Coastguard Worker } 6942*4bdc9457SAndroid Build Coastguard Worker } 6943*4bdc9457SAndroid Build Coastguard Worker } 6944*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,strided_cm_subtile)6945*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, strided_cm_subtile) { 6946*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6947*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6948*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 6949*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 6950*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6951*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6952*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6953*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6954*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6955*4bdc9457SAndroid Build Coastguard Worker .m(m) 6956*4bdc9457SAndroid Build Coastguard Worker .n(n) 6957*4bdc9457SAndroid Build Coastguard Worker .k(k) 6958*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 6959*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 6960*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6961*4bdc9457SAndroid Build Coastguard Worker } 6962*4bdc9457SAndroid Build Coastguard Worker } 6963*4bdc9457SAndroid Build Coastguard Worker } 6964*4bdc9457SAndroid Build Coastguard Worker } 6965*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,a_offset)6966*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, a_offset) { 6967*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6968*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6969*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6970*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6971*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6972*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6973*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6974*4bdc9457SAndroid Build Coastguard Worker .m(6) 6975*4bdc9457SAndroid Build Coastguard Worker .n(16) 6976*4bdc9457SAndroid Build Coastguard Worker .k(k) 6977*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6978*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 6979*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6980*4bdc9457SAndroid Build Coastguard Worker } 6981*4bdc9457SAndroid Build Coastguard Worker } 6982*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,zero)6983*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, zero) { 6984*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 6985*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 6986*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 6; mz++) { 6987*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 6988*4bdc9457SAndroid Build Coastguard Worker .mr(6) 6989*4bdc9457SAndroid Build Coastguard Worker .nr(16) 6990*4bdc9457SAndroid Build Coastguard Worker .kr(1) 6991*4bdc9457SAndroid Build Coastguard Worker .sr(1) 6992*4bdc9457SAndroid Build Coastguard Worker .m(6) 6993*4bdc9457SAndroid Build Coastguard Worker .n(16) 6994*4bdc9457SAndroid Build Coastguard Worker .k(k) 6995*4bdc9457SAndroid Build Coastguard Worker .ks(3) 6996*4bdc9457SAndroid Build Coastguard Worker .a_offset(127) 6997*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 6998*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 6999*4bdc9457SAndroid Build Coastguard Worker } 7000*4bdc9457SAndroid Build Coastguard Worker } 7001*4bdc9457SAndroid Build Coastguard Worker } 7002*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,qmin)7003*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, qmin) { 7004*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7005*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7006*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7007*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7008*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7009*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7010*4bdc9457SAndroid Build Coastguard Worker .m(6) 7011*4bdc9457SAndroid Build Coastguard Worker .n(16) 7012*4bdc9457SAndroid Build Coastguard Worker .k(4) 7013*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7014*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7015*4bdc9457SAndroid Build Coastguard Worker } 7016*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,qmax)7017*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, qmax) { 7018*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7019*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7020*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7021*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7022*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7023*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7024*4bdc9457SAndroid Build Coastguard Worker .m(6) 7025*4bdc9457SAndroid Build Coastguard Worker .n(16) 7026*4bdc9457SAndroid Build Coastguard Worker .k(4) 7027*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7028*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7029*4bdc9457SAndroid Build Coastguard Worker } 7030*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64,strided_cm)7031*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X16__NEONFP16ARITH_LD64, strided_cm) { 7032*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7033*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7034*4bdc9457SAndroid Build Coastguard Worker .mr(6) 7035*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7036*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7037*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7038*4bdc9457SAndroid Build Coastguard Worker .m(6) 7039*4bdc9457SAndroid Build Coastguard Worker .n(16) 7040*4bdc9457SAndroid Build Coastguard Worker .k(4) 7041*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 7042*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7043*4bdc9457SAndroid Build Coastguard Worker } 7044*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 7045*4bdc9457SAndroid Build Coastguard Worker 7046*4bdc9457SAndroid Build Coastguard Worker 7047*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4)7048*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4) { 7049*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7050*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7051*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7052*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7053*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7054*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7055*4bdc9457SAndroid Build Coastguard Worker .m(8) 7056*4bdc9457SAndroid Build Coastguard Worker .n(8) 7057*4bdc9457SAndroid Build Coastguard Worker .k(4) 7058*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7059*4bdc9457SAndroid Build Coastguard Worker } 7060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,strided_cn)7061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, strided_cn) { 7062*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7063*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7064*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7065*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7066*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7067*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7068*4bdc9457SAndroid Build Coastguard Worker .m(8) 7069*4bdc9457SAndroid Build Coastguard Worker .n(8) 7070*4bdc9457SAndroid Build Coastguard Worker .k(4) 7071*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 7072*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7073*4bdc9457SAndroid Build Coastguard Worker } 7074*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4_subtile)7075*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4_subtile) { 7076*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7077*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7078*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7079*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7080*4bdc9457SAndroid Build Coastguard Worker .mr(8) 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(m) 7085*4bdc9457SAndroid Build Coastguard Worker .n(n) 7086*4bdc9457SAndroid Build Coastguard Worker .k(4) 7087*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7088*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7089*4bdc9457SAndroid Build Coastguard Worker } 7090*4bdc9457SAndroid Build Coastguard Worker } 7091*4bdc9457SAndroid Build Coastguard Worker } 7092*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4_subtile_m)7093*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 7094*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7095*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7096*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7097*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7098*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7099*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7100*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7101*4bdc9457SAndroid Build Coastguard Worker .m(m) 7102*4bdc9457SAndroid Build Coastguard Worker .n(8) 7103*4bdc9457SAndroid Build Coastguard Worker .k(4) 7104*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7105*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7106*4bdc9457SAndroid Build Coastguard Worker } 7107*4bdc9457SAndroid Build Coastguard Worker } 7108*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_eq_4_subtile_n)7109*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 7110*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7111*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7112*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7113*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7114*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7115*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7116*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7117*4bdc9457SAndroid Build Coastguard Worker .m(8) 7118*4bdc9457SAndroid Build Coastguard Worker .n(n) 7119*4bdc9457SAndroid Build Coastguard Worker .k(4) 7120*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7121*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7122*4bdc9457SAndroid Build Coastguard Worker } 7123*4bdc9457SAndroid Build Coastguard Worker } 7124*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_lt_4)7125*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_lt_4) { 7126*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7127*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7128*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7129*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7130*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7131*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7132*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7133*4bdc9457SAndroid Build Coastguard Worker .m(8) 7134*4bdc9457SAndroid Build Coastguard Worker .n(8) 7135*4bdc9457SAndroid Build Coastguard Worker .k(k) 7136*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7137*4bdc9457SAndroid Build Coastguard Worker } 7138*4bdc9457SAndroid Build Coastguard Worker } 7139*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_lt_4_subtile)7140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_lt_4_subtile) { 7141*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7142*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7143*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7144*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7145*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7146*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7147*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7148*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7149*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7150*4bdc9457SAndroid Build Coastguard Worker .m(m) 7151*4bdc9457SAndroid Build Coastguard Worker .n(n) 7152*4bdc9457SAndroid Build Coastguard Worker .k(k) 7153*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7154*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7155*4bdc9457SAndroid Build Coastguard Worker } 7156*4bdc9457SAndroid Build Coastguard Worker } 7157*4bdc9457SAndroid Build Coastguard Worker } 7158*4bdc9457SAndroid Build Coastguard Worker } 7159*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_gt_4)7160*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_gt_4) { 7161*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7162*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7163*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7164*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7165*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7166*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7167*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7168*4bdc9457SAndroid Build Coastguard Worker .m(8) 7169*4bdc9457SAndroid Build Coastguard Worker .n(8) 7170*4bdc9457SAndroid Build Coastguard Worker .k(k) 7171*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7172*4bdc9457SAndroid Build Coastguard Worker } 7173*4bdc9457SAndroid Build Coastguard Worker } 7174*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_gt_4_subtile)7175*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_gt_4_subtile) { 7176*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7177*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7178*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7179*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7180*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7181*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7182*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7183*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7184*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7185*4bdc9457SAndroid Build Coastguard Worker .m(m) 7186*4bdc9457SAndroid Build Coastguard Worker .n(n) 7187*4bdc9457SAndroid Build Coastguard Worker .k(k) 7188*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7189*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7190*4bdc9457SAndroid Build Coastguard Worker } 7191*4bdc9457SAndroid Build Coastguard Worker } 7192*4bdc9457SAndroid Build Coastguard Worker } 7193*4bdc9457SAndroid Build Coastguard Worker } 7194*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_div_4)7195*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_div_4) { 7196*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7197*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7198*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7199*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7200*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7201*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7202*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7203*4bdc9457SAndroid Build Coastguard Worker .m(8) 7204*4bdc9457SAndroid Build Coastguard Worker .n(8) 7205*4bdc9457SAndroid Build Coastguard Worker .k(k) 7206*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7207*4bdc9457SAndroid Build Coastguard Worker } 7208*4bdc9457SAndroid Build Coastguard Worker } 7209*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,k_div_4_subtile)7210*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, k_div_4_subtile) { 7211*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7212*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7213*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7214*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7215*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7216*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7217*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7218*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7219*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7220*4bdc9457SAndroid Build Coastguard Worker .m(m) 7221*4bdc9457SAndroid Build Coastguard Worker .n(n) 7222*4bdc9457SAndroid Build Coastguard Worker .k(k) 7223*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7224*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7225*4bdc9457SAndroid Build Coastguard Worker } 7226*4bdc9457SAndroid Build Coastguard Worker } 7227*4bdc9457SAndroid Build Coastguard Worker } 7228*4bdc9457SAndroid Build Coastguard Worker } 7229*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_gt_8)7230*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_gt_8) { 7231*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7232*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 7233*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7234*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7235*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7236*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7237*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7238*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7239*4bdc9457SAndroid Build Coastguard Worker .m(8) 7240*4bdc9457SAndroid Build Coastguard Worker .n(n) 7241*4bdc9457SAndroid Build Coastguard Worker .k(k) 7242*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7243*4bdc9457SAndroid Build Coastguard Worker } 7244*4bdc9457SAndroid Build Coastguard Worker } 7245*4bdc9457SAndroid Build Coastguard Worker } 7246*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_gt_8_strided_cn)7247*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_gt_8_strided_cn) { 7248*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7249*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 7250*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7251*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7252*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7253*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7254*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7255*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7256*4bdc9457SAndroid Build Coastguard Worker .m(8) 7257*4bdc9457SAndroid Build Coastguard Worker .n(n) 7258*4bdc9457SAndroid Build Coastguard Worker .k(k) 7259*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 7260*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7261*4bdc9457SAndroid Build Coastguard Worker } 7262*4bdc9457SAndroid Build Coastguard Worker } 7263*4bdc9457SAndroid Build Coastguard Worker } 7264*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_gt_8_subtile)7265*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_gt_8_subtile) { 7266*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7267*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 7268*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7269*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7270*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7271*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7272*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7273*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7274*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7275*4bdc9457SAndroid Build Coastguard Worker .m(m) 7276*4bdc9457SAndroid Build Coastguard Worker .n(n) 7277*4bdc9457SAndroid Build Coastguard Worker .k(k) 7278*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7279*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7280*4bdc9457SAndroid Build Coastguard Worker } 7281*4bdc9457SAndroid Build Coastguard Worker } 7282*4bdc9457SAndroid Build Coastguard Worker } 7283*4bdc9457SAndroid Build Coastguard Worker } 7284*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_div_8)7285*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_div_8) { 7286*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7287*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 7288*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7289*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7290*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7291*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7292*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7293*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7294*4bdc9457SAndroid Build Coastguard Worker .m(8) 7295*4bdc9457SAndroid Build Coastguard Worker .n(n) 7296*4bdc9457SAndroid Build Coastguard Worker .k(k) 7297*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7298*4bdc9457SAndroid Build Coastguard Worker } 7299*4bdc9457SAndroid Build Coastguard Worker } 7300*4bdc9457SAndroid Build Coastguard Worker } 7301*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_div_8_strided_cn)7302*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_div_8_strided_cn) { 7303*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7304*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 7305*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7306*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7307*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7308*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7309*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7310*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7311*4bdc9457SAndroid Build Coastguard Worker .m(8) 7312*4bdc9457SAndroid Build Coastguard Worker .n(n) 7313*4bdc9457SAndroid Build Coastguard Worker .k(k) 7314*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 7315*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7316*4bdc9457SAndroid Build Coastguard Worker } 7317*4bdc9457SAndroid Build Coastguard Worker } 7318*4bdc9457SAndroid Build Coastguard Worker } 7319*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_div_8_subtile)7320*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_div_8_subtile) { 7321*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7322*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 7323*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7324*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7325*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7326*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7327*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7328*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7329*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7330*4bdc9457SAndroid Build Coastguard Worker .m(m) 7331*4bdc9457SAndroid Build Coastguard Worker .n(n) 7332*4bdc9457SAndroid Build Coastguard Worker .k(k) 7333*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7334*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7335*4bdc9457SAndroid Build Coastguard Worker } 7336*4bdc9457SAndroid Build Coastguard Worker } 7337*4bdc9457SAndroid Build Coastguard Worker } 7338*4bdc9457SAndroid Build Coastguard Worker } 7339*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,small_kernel)7340*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, small_kernel) { 7341*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7342*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7343*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7344*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7345*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7346*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7347*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7348*4bdc9457SAndroid Build Coastguard Worker .m(8) 7349*4bdc9457SAndroid Build Coastguard Worker .n(8) 7350*4bdc9457SAndroid Build Coastguard Worker .k(k) 7351*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7352*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7353*4bdc9457SAndroid Build Coastguard Worker } 7354*4bdc9457SAndroid Build Coastguard Worker } 7355*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,small_kernel_subtile)7356*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, small_kernel_subtile) { 7357*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7358*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7359*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7360*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7361*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7362*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7363*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7364*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7365*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7366*4bdc9457SAndroid Build Coastguard Worker .m(m) 7367*4bdc9457SAndroid Build Coastguard Worker .n(n) 7368*4bdc9457SAndroid Build Coastguard Worker .k(k) 7369*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7370*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7371*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7372*4bdc9457SAndroid Build Coastguard Worker } 7373*4bdc9457SAndroid Build Coastguard Worker } 7374*4bdc9457SAndroid Build Coastguard Worker } 7375*4bdc9457SAndroid Build Coastguard Worker } 7376*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_gt_8_small_kernel)7377*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_gt_8_small_kernel) { 7378*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7379*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 7380*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7381*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7382*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7383*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7384*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7385*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7386*4bdc9457SAndroid Build Coastguard Worker .m(8) 7387*4bdc9457SAndroid Build Coastguard Worker .n(n) 7388*4bdc9457SAndroid Build Coastguard Worker .k(k) 7389*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7390*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7391*4bdc9457SAndroid Build Coastguard Worker } 7392*4bdc9457SAndroid Build Coastguard Worker } 7393*4bdc9457SAndroid Build Coastguard Worker } 7394*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,n_div_8_small_kernel)7395*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, n_div_8_small_kernel) { 7396*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7397*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 7398*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7399*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7400*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7401*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7402*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7403*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7404*4bdc9457SAndroid Build Coastguard Worker .m(8) 7405*4bdc9457SAndroid Build Coastguard Worker .n(n) 7406*4bdc9457SAndroid Build Coastguard Worker .k(k) 7407*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7408*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7409*4bdc9457SAndroid Build Coastguard Worker } 7410*4bdc9457SAndroid Build Coastguard Worker } 7411*4bdc9457SAndroid Build Coastguard Worker } 7412*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,strided_cm_subtile)7413*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, strided_cm_subtile) { 7414*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7415*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7416*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 7417*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7418*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7419*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7420*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7421*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7422*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7423*4bdc9457SAndroid Build Coastguard Worker .m(m) 7424*4bdc9457SAndroid Build Coastguard Worker .n(n) 7425*4bdc9457SAndroid Build Coastguard Worker .k(k) 7426*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 7427*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7428*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7429*4bdc9457SAndroid Build Coastguard Worker } 7430*4bdc9457SAndroid Build Coastguard Worker } 7431*4bdc9457SAndroid Build Coastguard Worker } 7432*4bdc9457SAndroid Build Coastguard Worker } 7433*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,a_offset)7434*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, a_offset) { 7435*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7436*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7437*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7438*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7439*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7440*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7441*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7442*4bdc9457SAndroid Build Coastguard Worker .m(8) 7443*4bdc9457SAndroid Build Coastguard Worker .n(8) 7444*4bdc9457SAndroid Build Coastguard Worker .k(k) 7445*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7446*4bdc9457SAndroid Build Coastguard Worker .a_offset(163) 7447*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7448*4bdc9457SAndroid Build Coastguard Worker } 7449*4bdc9457SAndroid Build Coastguard Worker } 7450*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,zero)7451*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, zero) { 7452*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7453*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7454*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 8; mz++) { 7455*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7456*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7457*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7458*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7459*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7460*4bdc9457SAndroid Build Coastguard Worker .m(8) 7461*4bdc9457SAndroid Build Coastguard Worker .n(8) 7462*4bdc9457SAndroid Build Coastguard Worker .k(k) 7463*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7464*4bdc9457SAndroid Build Coastguard Worker .a_offset(163) 7465*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 7466*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7467*4bdc9457SAndroid Build Coastguard Worker } 7468*4bdc9457SAndroid Build Coastguard Worker } 7469*4bdc9457SAndroid Build Coastguard Worker } 7470*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,qmin)7471*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, qmin) { 7472*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7473*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7474*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7475*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7476*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7477*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7478*4bdc9457SAndroid Build Coastguard Worker .m(8) 7479*4bdc9457SAndroid Build Coastguard Worker .n(8) 7480*4bdc9457SAndroid Build Coastguard Worker .k(4) 7481*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7482*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7483*4bdc9457SAndroid Build Coastguard Worker } 7484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,qmax)7485*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, qmax) { 7486*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7487*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7488*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7489*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7490*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7491*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7492*4bdc9457SAndroid Build Coastguard Worker .m(8) 7493*4bdc9457SAndroid Build Coastguard Worker .n(8) 7494*4bdc9457SAndroid Build Coastguard Worker .k(4) 7495*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7496*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7497*4bdc9457SAndroid Build Coastguard Worker } 7498*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64,strided_cm)7499*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X8__NEONFP16ARITH_LD64, strided_cm) { 7500*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7501*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7502*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7503*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7504*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7505*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7506*4bdc9457SAndroid Build Coastguard Worker .m(8) 7507*4bdc9457SAndroid Build Coastguard Worker .n(8) 7508*4bdc9457SAndroid Build Coastguard Worker .k(4) 7509*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 7510*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7511*4bdc9457SAndroid Build Coastguard Worker } 7512*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 7513*4bdc9457SAndroid Build Coastguard Worker 7514*4bdc9457SAndroid Build Coastguard Worker 7515*4bdc9457SAndroid Build Coastguard Worker #if XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4)7516*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4) { 7517*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7518*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7519*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7520*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7521*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7522*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7523*4bdc9457SAndroid Build Coastguard Worker .m(8) 7524*4bdc9457SAndroid Build Coastguard Worker .n(16) 7525*4bdc9457SAndroid Build Coastguard Worker .k(4) 7526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7527*4bdc9457SAndroid Build Coastguard Worker } 7528*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,strided_cn)7529*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, strided_cn) { 7530*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7531*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7532*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7533*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7534*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7535*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7536*4bdc9457SAndroid Build Coastguard Worker .m(8) 7537*4bdc9457SAndroid Build Coastguard Worker .n(16) 7538*4bdc9457SAndroid Build Coastguard Worker .k(4) 7539*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7540*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7541*4bdc9457SAndroid Build Coastguard Worker } 7542*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4_subtile)7543*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4_subtile) { 7544*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7545*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7546*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7547*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7548*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7549*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7550*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7551*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7552*4bdc9457SAndroid Build Coastguard Worker .m(m) 7553*4bdc9457SAndroid Build Coastguard Worker .n(n) 7554*4bdc9457SAndroid Build Coastguard Worker .k(4) 7555*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7556*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7557*4bdc9457SAndroid Build Coastguard Worker } 7558*4bdc9457SAndroid Build Coastguard Worker } 7559*4bdc9457SAndroid Build Coastguard Worker } 7560*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4_subtile_m)7561*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4_subtile_m) { 7562*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7563*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7564*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7565*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7566*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7567*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7568*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7569*4bdc9457SAndroid Build Coastguard Worker .m(m) 7570*4bdc9457SAndroid Build Coastguard Worker .n(16) 7571*4bdc9457SAndroid Build Coastguard Worker .k(4) 7572*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7573*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7574*4bdc9457SAndroid Build Coastguard Worker } 7575*4bdc9457SAndroid Build Coastguard Worker } 7576*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_eq_4_subtile_n)7577*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_eq_4_subtile_n) { 7578*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7579*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7580*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7581*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7582*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7583*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7584*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7585*4bdc9457SAndroid Build Coastguard Worker .m(8) 7586*4bdc9457SAndroid Build Coastguard Worker .n(n) 7587*4bdc9457SAndroid Build Coastguard Worker .k(4) 7588*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7589*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7590*4bdc9457SAndroid Build Coastguard Worker } 7591*4bdc9457SAndroid Build Coastguard Worker } 7592*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_lt_4)7593*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_lt_4) { 7594*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7595*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7596*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7597*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7598*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7599*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7600*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7601*4bdc9457SAndroid Build Coastguard Worker .m(8) 7602*4bdc9457SAndroid Build Coastguard Worker .n(16) 7603*4bdc9457SAndroid Build Coastguard Worker .k(k) 7604*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7605*4bdc9457SAndroid Build Coastguard Worker } 7606*4bdc9457SAndroid Build Coastguard Worker } 7607*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_lt_4_subtile)7608*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_lt_4_subtile) { 7609*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7610*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k < 4; k++) { 7611*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7612*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7613*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7614*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7615*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7616*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7617*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7618*4bdc9457SAndroid Build Coastguard Worker .m(m) 7619*4bdc9457SAndroid Build Coastguard Worker .n(n) 7620*4bdc9457SAndroid Build Coastguard Worker .k(k) 7621*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7622*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7623*4bdc9457SAndroid Build Coastguard Worker } 7624*4bdc9457SAndroid Build Coastguard Worker } 7625*4bdc9457SAndroid Build Coastguard Worker } 7626*4bdc9457SAndroid Build Coastguard Worker } 7627*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_gt_4)7628*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_gt_4) { 7629*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7630*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7631*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7632*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7633*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7634*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7635*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7636*4bdc9457SAndroid Build Coastguard Worker .m(8) 7637*4bdc9457SAndroid Build Coastguard Worker .n(16) 7638*4bdc9457SAndroid Build Coastguard Worker .k(k) 7639*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7640*4bdc9457SAndroid Build Coastguard Worker } 7641*4bdc9457SAndroid Build Coastguard Worker } 7642*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_gt_4_subtile)7643*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_gt_4_subtile) { 7644*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7645*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 5; k < 8; k++) { 7646*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7647*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7648*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7649*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7650*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7651*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7652*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7653*4bdc9457SAndroid Build Coastguard Worker .m(m) 7654*4bdc9457SAndroid Build Coastguard Worker .n(n) 7655*4bdc9457SAndroid Build Coastguard Worker .k(k) 7656*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7657*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7658*4bdc9457SAndroid Build Coastguard Worker } 7659*4bdc9457SAndroid Build Coastguard Worker } 7660*4bdc9457SAndroid Build Coastguard Worker } 7661*4bdc9457SAndroid Build Coastguard Worker } 7662*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_div_4)7663*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_div_4) { 7664*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7665*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7666*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7667*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7668*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7669*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7670*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7671*4bdc9457SAndroid Build Coastguard Worker .m(8) 7672*4bdc9457SAndroid Build Coastguard Worker .n(16) 7673*4bdc9457SAndroid Build Coastguard Worker .k(k) 7674*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7675*4bdc9457SAndroid Build Coastguard Worker } 7676*4bdc9457SAndroid Build Coastguard Worker } 7677*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,k_div_4_subtile)7678*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, k_div_4_subtile) { 7679*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7680*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 8; k <= 40; k += 4) { 7681*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7682*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7683*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7684*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7685*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7686*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7687*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7688*4bdc9457SAndroid Build Coastguard Worker .m(m) 7689*4bdc9457SAndroid Build Coastguard Worker .n(n) 7690*4bdc9457SAndroid Build Coastguard Worker .k(k) 7691*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7692*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7693*4bdc9457SAndroid Build Coastguard Worker } 7694*4bdc9457SAndroid Build Coastguard Worker } 7695*4bdc9457SAndroid Build Coastguard Worker } 7696*4bdc9457SAndroid Build Coastguard Worker } 7697*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_gt_16)7698*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_gt_16) { 7699*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7700*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7701*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7702*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7703*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7704*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7705*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7706*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7707*4bdc9457SAndroid Build Coastguard Worker .m(8) 7708*4bdc9457SAndroid Build Coastguard Worker .n(n) 7709*4bdc9457SAndroid Build Coastguard Worker .k(k) 7710*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7711*4bdc9457SAndroid Build Coastguard Worker } 7712*4bdc9457SAndroid Build Coastguard Worker } 7713*4bdc9457SAndroid Build Coastguard Worker } 7714*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_gt_16_strided_cn)7715*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_gt_16_strided_cn) { 7716*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7717*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7718*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7719*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7720*4bdc9457SAndroid Build Coastguard Worker .mr(8) 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(8) 7725*4bdc9457SAndroid Build Coastguard Worker .n(n) 7726*4bdc9457SAndroid Build Coastguard Worker .k(k) 7727*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7728*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7729*4bdc9457SAndroid Build Coastguard Worker } 7730*4bdc9457SAndroid Build Coastguard Worker } 7731*4bdc9457SAndroid Build Coastguard Worker } 7732*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_gt_16_subtile)7733*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_gt_16_subtile) { 7734*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7735*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7736*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7737*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7738*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7739*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7740*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7741*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7742*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7743*4bdc9457SAndroid Build Coastguard Worker .m(m) 7744*4bdc9457SAndroid Build Coastguard Worker .n(n) 7745*4bdc9457SAndroid Build Coastguard Worker .k(k) 7746*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7747*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7748*4bdc9457SAndroid Build Coastguard Worker } 7749*4bdc9457SAndroid Build Coastguard Worker } 7750*4bdc9457SAndroid Build Coastguard Worker } 7751*4bdc9457SAndroid Build Coastguard Worker } 7752*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_div_16)7753*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_div_16) { 7754*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7755*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7756*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7757*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7758*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7759*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7760*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7761*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7762*4bdc9457SAndroid Build Coastguard Worker .m(8) 7763*4bdc9457SAndroid Build Coastguard Worker .n(n) 7764*4bdc9457SAndroid Build Coastguard Worker .k(k) 7765*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7766*4bdc9457SAndroid Build Coastguard Worker } 7767*4bdc9457SAndroid Build Coastguard Worker } 7768*4bdc9457SAndroid Build Coastguard Worker } 7769*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_div_16_strided_cn)7770*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_div_16_strided_cn) { 7771*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7772*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7773*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7774*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7775*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7776*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7777*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7778*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7779*4bdc9457SAndroid Build Coastguard Worker .m(8) 7780*4bdc9457SAndroid Build Coastguard Worker .n(n) 7781*4bdc9457SAndroid Build Coastguard Worker .k(k) 7782*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 7783*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7784*4bdc9457SAndroid Build Coastguard Worker } 7785*4bdc9457SAndroid Build Coastguard Worker } 7786*4bdc9457SAndroid Build Coastguard Worker } 7787*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_div_16_subtile)7788*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_div_16_subtile) { 7789*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7790*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7791*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7792*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7793*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7794*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7795*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7796*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7797*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7798*4bdc9457SAndroid Build Coastguard Worker .m(m) 7799*4bdc9457SAndroid Build Coastguard Worker .n(n) 7800*4bdc9457SAndroid Build Coastguard Worker .k(k) 7801*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7802*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7803*4bdc9457SAndroid Build Coastguard Worker } 7804*4bdc9457SAndroid Build Coastguard Worker } 7805*4bdc9457SAndroid Build Coastguard Worker } 7806*4bdc9457SAndroid Build Coastguard Worker } 7807*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,small_kernel)7808*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, small_kernel) { 7809*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7810*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7811*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7812*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7813*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7814*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7815*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7816*4bdc9457SAndroid Build Coastguard Worker .m(8) 7817*4bdc9457SAndroid Build Coastguard Worker .n(16) 7818*4bdc9457SAndroid Build Coastguard Worker .k(k) 7819*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7820*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7821*4bdc9457SAndroid Build Coastguard Worker } 7822*4bdc9457SAndroid Build Coastguard Worker } 7823*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,small_kernel_subtile)7824*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, small_kernel_subtile) { 7825*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7826*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7827*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7828*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7829*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7830*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7831*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7832*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7833*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7834*4bdc9457SAndroid Build Coastguard Worker .m(m) 7835*4bdc9457SAndroid Build Coastguard Worker .n(n) 7836*4bdc9457SAndroid Build Coastguard Worker .k(k) 7837*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7838*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7839*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7840*4bdc9457SAndroid Build Coastguard Worker } 7841*4bdc9457SAndroid Build Coastguard Worker } 7842*4bdc9457SAndroid Build Coastguard Worker } 7843*4bdc9457SAndroid Build Coastguard Worker } 7844*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_gt_16_small_kernel)7845*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_gt_16_small_kernel) { 7846*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7847*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 7848*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7849*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7850*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7851*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7852*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7853*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7854*4bdc9457SAndroid Build Coastguard Worker .m(8) 7855*4bdc9457SAndroid Build Coastguard Worker .n(n) 7856*4bdc9457SAndroid Build Coastguard Worker .k(k) 7857*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7858*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7859*4bdc9457SAndroid Build Coastguard Worker } 7860*4bdc9457SAndroid Build Coastguard Worker } 7861*4bdc9457SAndroid Build Coastguard Worker } 7862*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,n_div_16_small_kernel)7863*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, n_div_16_small_kernel) { 7864*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7865*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 7866*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7867*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7868*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7869*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7870*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7871*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7872*4bdc9457SAndroid Build Coastguard Worker .m(8) 7873*4bdc9457SAndroid Build Coastguard Worker .n(n) 7874*4bdc9457SAndroid Build Coastguard Worker .k(k) 7875*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7877*4bdc9457SAndroid Build Coastguard Worker } 7878*4bdc9457SAndroid Build Coastguard Worker } 7879*4bdc9457SAndroid Build Coastguard Worker } 7880*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,strided_cm_subtile)7881*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, strided_cm_subtile) { 7882*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7883*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7884*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 7885*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 8; m++) { 7886*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7887*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7888*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7889*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7890*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7891*4bdc9457SAndroid Build Coastguard Worker .m(m) 7892*4bdc9457SAndroid Build Coastguard Worker .n(n) 7893*4bdc9457SAndroid Build Coastguard Worker .k(k) 7894*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 7895*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 7896*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7897*4bdc9457SAndroid Build Coastguard Worker } 7898*4bdc9457SAndroid Build Coastguard Worker } 7899*4bdc9457SAndroid Build Coastguard Worker } 7900*4bdc9457SAndroid Build Coastguard Worker } 7901*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,a_offset)7902*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, a_offset) { 7903*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7904*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7905*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7906*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7907*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7908*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7909*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7910*4bdc9457SAndroid Build Coastguard Worker .m(8) 7911*4bdc9457SAndroid Build Coastguard Worker .n(16) 7912*4bdc9457SAndroid Build Coastguard Worker .k(k) 7913*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7914*4bdc9457SAndroid Build Coastguard Worker .a_offset(163) 7915*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7916*4bdc9457SAndroid Build Coastguard Worker } 7917*4bdc9457SAndroid Build Coastguard Worker } 7918*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,zero)7919*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, zero) { 7920*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7921*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 20; k += 5) { 7922*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 8; mz++) { 7923*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7924*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7925*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7926*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7927*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7928*4bdc9457SAndroid Build Coastguard Worker .m(8) 7929*4bdc9457SAndroid Build Coastguard Worker .n(16) 7930*4bdc9457SAndroid Build Coastguard Worker .k(k) 7931*4bdc9457SAndroid Build Coastguard Worker .ks(3) 7932*4bdc9457SAndroid Build Coastguard Worker .a_offset(163) 7933*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 7934*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7935*4bdc9457SAndroid Build Coastguard Worker } 7936*4bdc9457SAndroid Build Coastguard Worker } 7937*4bdc9457SAndroid Build Coastguard Worker } 7938*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,qmin)7939*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, qmin) { 7940*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7941*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7942*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7943*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7944*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7945*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7946*4bdc9457SAndroid Build Coastguard Worker .m(8) 7947*4bdc9457SAndroid Build Coastguard Worker .n(16) 7948*4bdc9457SAndroid Build Coastguard Worker .k(4) 7949*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 7950*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7951*4bdc9457SAndroid Build Coastguard Worker } 7952*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,qmax)7953*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, qmax) { 7954*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7955*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7956*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7957*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7958*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7959*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7960*4bdc9457SAndroid Build Coastguard Worker .m(8) 7961*4bdc9457SAndroid Build Coastguard Worker .n(16) 7962*4bdc9457SAndroid Build Coastguard Worker .k(4) 7963*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 7964*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7965*4bdc9457SAndroid Build Coastguard Worker } 7966*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64,strided_cm)7967*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_8X16__NEONFP16ARITH_LD64, strided_cm) { 7968*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FP16_ARITH; 7969*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7970*4bdc9457SAndroid Build Coastguard Worker .mr(8) 7971*4bdc9457SAndroid Build Coastguard Worker .nr(16) 7972*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7973*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7974*4bdc9457SAndroid Build Coastguard Worker .m(8) 7975*4bdc9457SAndroid Build Coastguard Worker .n(16) 7976*4bdc9457SAndroid Build Coastguard Worker .k(4) 7977*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 7978*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64, xnn_init_f16_minmax_neon_params); 7979*4bdc9457SAndroid Build Coastguard Worker } 7980*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ENABLE_ARM_FP16 && (XNN_ARCH_ARM || XNN_ARCH_ARM64) 7981*4bdc9457SAndroid Build Coastguard Worker 7982*4bdc9457SAndroid Build Coastguard Worker 7983*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1)7984*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1) { 7985*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 7986*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 7987*4bdc9457SAndroid Build Coastguard Worker .mr(1) 7988*4bdc9457SAndroid Build Coastguard Worker .nr(8) 7989*4bdc9457SAndroid Build Coastguard Worker .kr(1) 7990*4bdc9457SAndroid Build Coastguard Worker .sr(1) 7991*4bdc9457SAndroid Build Coastguard Worker .m(1) 7992*4bdc9457SAndroid Build Coastguard Worker .n(8) 7993*4bdc9457SAndroid Build Coastguard Worker .k(1) 7994*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 7995*4bdc9457SAndroid Build Coastguard Worker } 7996*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,strided_cn)7997*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, strided_cn) { 7998*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 7999*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8000*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8001*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8002*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8003*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8004*4bdc9457SAndroid Build Coastguard Worker .m(1) 8005*4bdc9457SAndroid Build Coastguard Worker .n(8) 8006*4bdc9457SAndroid Build Coastguard Worker .k(1) 8007*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8008*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8009*4bdc9457SAndroid Build Coastguard Worker } 8010*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1_subtile)8011*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1_subtile) { 8012*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8013*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8014*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8015*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8016*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8017*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8018*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8019*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8020*4bdc9457SAndroid Build Coastguard Worker .m(m) 8021*4bdc9457SAndroid Build Coastguard Worker .n(n) 8022*4bdc9457SAndroid Build Coastguard Worker .k(1) 8023*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8024*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8025*4bdc9457SAndroid Build Coastguard Worker } 8026*4bdc9457SAndroid Build Coastguard Worker } 8027*4bdc9457SAndroid Build Coastguard Worker } 8028*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1_subtile_m)8029*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 8030*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8031*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8032*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8033*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8034*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8035*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8036*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8037*4bdc9457SAndroid Build Coastguard Worker .m(m) 8038*4bdc9457SAndroid Build Coastguard Worker .n(8) 8039*4bdc9457SAndroid Build Coastguard Worker .k(1) 8040*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8041*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8042*4bdc9457SAndroid Build Coastguard Worker } 8043*4bdc9457SAndroid Build Coastguard Worker } 8044*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,k_eq_1_subtile_n)8045*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 8046*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8047*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8048*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8049*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8050*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8051*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8052*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8053*4bdc9457SAndroid Build Coastguard Worker .m(1) 8054*4bdc9457SAndroid Build Coastguard Worker .n(n) 8055*4bdc9457SAndroid Build Coastguard Worker .k(1) 8056*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8057*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8058*4bdc9457SAndroid Build Coastguard Worker } 8059*4bdc9457SAndroid Build Coastguard Worker } 8060*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,k_gt_1)8061*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, k_gt_1) { 8062*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8063*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 8064*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8065*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8066*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8067*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8068*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8069*4bdc9457SAndroid Build Coastguard Worker .m(1) 8070*4bdc9457SAndroid Build Coastguard Worker .n(8) 8071*4bdc9457SAndroid Build Coastguard Worker .k(k) 8072*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8073*4bdc9457SAndroid Build Coastguard Worker } 8074*4bdc9457SAndroid Build Coastguard Worker } 8075*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,k_gt_1_subtile)8076*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, k_gt_1_subtile) { 8077*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8078*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 8079*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8080*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8081*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8082*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8083*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8084*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8085*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8086*4bdc9457SAndroid Build Coastguard Worker .m(m) 8087*4bdc9457SAndroid Build Coastguard Worker .n(n) 8088*4bdc9457SAndroid Build Coastguard Worker .k(k) 8089*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8090*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8091*4bdc9457SAndroid Build Coastguard Worker } 8092*4bdc9457SAndroid Build Coastguard Worker } 8093*4bdc9457SAndroid Build Coastguard Worker } 8094*4bdc9457SAndroid Build Coastguard Worker } 8095*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,n_gt_8)8096*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, n_gt_8) { 8097*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8098*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8099*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8100*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8101*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8102*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8103*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8104*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8105*4bdc9457SAndroid Build Coastguard Worker .m(1) 8106*4bdc9457SAndroid Build Coastguard Worker .n(n) 8107*4bdc9457SAndroid Build Coastguard Worker .k(k) 8108*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8109*4bdc9457SAndroid Build Coastguard Worker } 8110*4bdc9457SAndroid Build Coastguard Worker } 8111*4bdc9457SAndroid Build Coastguard Worker } 8112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,n_gt_8_strided_cn)8113*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 8114*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8115*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8116*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8117*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8118*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8119*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8120*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8121*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8122*4bdc9457SAndroid Build Coastguard Worker .m(1) 8123*4bdc9457SAndroid Build Coastguard Worker .n(n) 8124*4bdc9457SAndroid Build Coastguard Worker .k(k) 8125*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8126*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8127*4bdc9457SAndroid Build Coastguard Worker } 8128*4bdc9457SAndroid Build Coastguard Worker } 8129*4bdc9457SAndroid Build Coastguard Worker } 8130*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,n_gt_8_subtile)8131*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, n_gt_8_subtile) { 8132*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8133*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8134*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8135*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8136*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8137*4bdc9457SAndroid Build Coastguard Worker .mr(1) 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(m) 8142*4bdc9457SAndroid Build Coastguard Worker .n(n) 8143*4bdc9457SAndroid Build Coastguard Worker .k(k) 8144*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8145*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8146*4bdc9457SAndroid Build Coastguard Worker } 8147*4bdc9457SAndroid Build Coastguard Worker } 8148*4bdc9457SAndroid Build Coastguard Worker } 8149*4bdc9457SAndroid Build Coastguard Worker } 8150*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,n_div_8)8151*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, n_div_8) { 8152*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8153*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8154*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8155*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8156*4bdc9457SAndroid Build Coastguard Worker .mr(1) 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(1) 8161*4bdc9457SAndroid Build Coastguard Worker .n(n) 8162*4bdc9457SAndroid Build Coastguard Worker .k(k) 8163*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8164*4bdc9457SAndroid Build Coastguard Worker } 8165*4bdc9457SAndroid Build Coastguard Worker } 8166*4bdc9457SAndroid Build Coastguard Worker } 8167*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,n_div_8_strided_cn)8168*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, n_div_8_strided_cn) { 8169*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8170*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8171*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8172*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8173*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8174*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8175*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8176*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8177*4bdc9457SAndroid Build Coastguard Worker .m(1) 8178*4bdc9457SAndroid Build Coastguard Worker .n(n) 8179*4bdc9457SAndroid Build Coastguard Worker .k(k) 8180*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 8181*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8182*4bdc9457SAndroid Build Coastguard Worker } 8183*4bdc9457SAndroid Build Coastguard Worker } 8184*4bdc9457SAndroid Build Coastguard Worker } 8185*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,n_div_8_subtile)8186*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, n_div_8_subtile) { 8187*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8188*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8189*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8190*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8191*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8192*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8193*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8194*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8195*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8196*4bdc9457SAndroid Build Coastguard Worker .m(m) 8197*4bdc9457SAndroid Build Coastguard Worker .n(n) 8198*4bdc9457SAndroid Build Coastguard Worker .k(k) 8199*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8200*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8201*4bdc9457SAndroid Build Coastguard Worker } 8202*4bdc9457SAndroid Build Coastguard Worker } 8203*4bdc9457SAndroid Build Coastguard Worker } 8204*4bdc9457SAndroid Build Coastguard Worker } 8205*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,small_kernel)8206*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, small_kernel) { 8207*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8208*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8209*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8210*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8211*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8212*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8213*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8214*4bdc9457SAndroid Build Coastguard Worker .m(1) 8215*4bdc9457SAndroid Build Coastguard Worker .n(8) 8216*4bdc9457SAndroid Build Coastguard Worker .k(k) 8217*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8218*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8219*4bdc9457SAndroid Build Coastguard Worker } 8220*4bdc9457SAndroid Build Coastguard Worker } 8221*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,small_kernel_subtile)8222*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, small_kernel_subtile) { 8223*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8224*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8225*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8226*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8227*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8228*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8229*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8230*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8231*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8232*4bdc9457SAndroid Build Coastguard Worker .m(m) 8233*4bdc9457SAndroid Build Coastguard Worker .n(n) 8234*4bdc9457SAndroid Build Coastguard Worker .k(k) 8235*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8236*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8237*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8238*4bdc9457SAndroid Build Coastguard Worker } 8239*4bdc9457SAndroid Build Coastguard Worker } 8240*4bdc9457SAndroid Build Coastguard Worker } 8241*4bdc9457SAndroid Build Coastguard Worker } 8242*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,n_gt_8_small_kernel)8243*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, n_gt_8_small_kernel) { 8244*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8245*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 8246*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8247*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8248*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8249*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8250*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8251*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8252*4bdc9457SAndroid Build Coastguard Worker .m(1) 8253*4bdc9457SAndroid Build Coastguard Worker .n(n) 8254*4bdc9457SAndroid Build Coastguard Worker .k(k) 8255*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8256*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8257*4bdc9457SAndroid Build Coastguard Worker } 8258*4bdc9457SAndroid Build Coastguard Worker } 8259*4bdc9457SAndroid Build Coastguard Worker } 8260*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,n_div_8_small_kernel)8261*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, n_div_8_small_kernel) { 8262*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8263*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 8264*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8265*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8266*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8267*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8268*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8269*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8270*4bdc9457SAndroid Build Coastguard Worker .m(1) 8271*4bdc9457SAndroid Build Coastguard Worker .n(n) 8272*4bdc9457SAndroid Build Coastguard Worker .k(k) 8273*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8274*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8275*4bdc9457SAndroid Build Coastguard Worker } 8276*4bdc9457SAndroid Build Coastguard Worker } 8277*4bdc9457SAndroid Build Coastguard Worker } 8278*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,strided_cm_subtile)8279*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, strided_cm_subtile) { 8280*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8281*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8282*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 8283*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8284*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8285*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8286*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8287*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8288*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8289*4bdc9457SAndroid Build Coastguard Worker .m(m) 8290*4bdc9457SAndroid Build Coastguard Worker .n(n) 8291*4bdc9457SAndroid Build Coastguard Worker .k(k) 8292*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 8293*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8294*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8295*4bdc9457SAndroid Build Coastguard Worker } 8296*4bdc9457SAndroid Build Coastguard Worker } 8297*4bdc9457SAndroid Build Coastguard Worker } 8298*4bdc9457SAndroid Build Coastguard Worker } 8299*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,a_offset)8300*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, a_offset) { 8301*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8302*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8303*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8304*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8305*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8306*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8307*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8308*4bdc9457SAndroid Build Coastguard Worker .m(1) 8309*4bdc9457SAndroid Build Coastguard Worker .n(8) 8310*4bdc9457SAndroid Build Coastguard Worker .k(k) 8311*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8312*4bdc9457SAndroid Build Coastguard Worker .a_offset(7) 8313*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8314*4bdc9457SAndroid Build Coastguard Worker } 8315*4bdc9457SAndroid Build Coastguard Worker } 8316*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,zero)8317*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, zero) { 8318*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8319*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8320*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 1; mz++) { 8321*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8322*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8323*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8324*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8325*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8326*4bdc9457SAndroid Build Coastguard Worker .m(1) 8327*4bdc9457SAndroid Build Coastguard Worker .n(8) 8328*4bdc9457SAndroid Build Coastguard Worker .k(k) 8329*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8330*4bdc9457SAndroid Build Coastguard Worker .a_offset(7) 8331*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 8332*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8333*4bdc9457SAndroid Build Coastguard Worker } 8334*4bdc9457SAndroid Build Coastguard Worker } 8335*4bdc9457SAndroid Build Coastguard Worker } 8336*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,qmin)8337*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, qmin) { 8338*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8339*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8340*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8341*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8342*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8343*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8344*4bdc9457SAndroid Build Coastguard Worker .m(1) 8345*4bdc9457SAndroid Build Coastguard Worker .n(8) 8346*4bdc9457SAndroid Build Coastguard Worker .k(1) 8347*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8348*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8349*4bdc9457SAndroid Build Coastguard Worker } 8350*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,qmax)8351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, qmax) { 8352*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8353*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8354*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8355*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8356*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8357*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8358*4bdc9457SAndroid Build Coastguard Worker .m(1) 8359*4bdc9457SAndroid Build Coastguard Worker .n(8) 8360*4bdc9457SAndroid Build Coastguard Worker .k(1) 8361*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8362*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8363*4bdc9457SAndroid Build Coastguard Worker } 8364*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST,strided_cm)8365*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X8__AVX2_BROADCAST, strided_cm) { 8366*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8367*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8368*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8369*4bdc9457SAndroid Build Coastguard Worker .nr(8) 8370*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8371*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8372*4bdc9457SAndroid Build Coastguard Worker .m(1) 8373*4bdc9457SAndroid Build Coastguard Worker .n(8) 8374*4bdc9457SAndroid Build Coastguard Worker .k(1) 8375*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 8376*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8377*4bdc9457SAndroid Build Coastguard Worker } 8378*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 8379*4bdc9457SAndroid Build Coastguard Worker 8380*4bdc9457SAndroid Build Coastguard Worker 8381*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1)8382*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1) { 8383*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8384*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8385*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8386*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8387*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8388*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8389*4bdc9457SAndroid Build Coastguard Worker .m(1) 8390*4bdc9457SAndroid Build Coastguard Worker .n(16) 8391*4bdc9457SAndroid Build Coastguard Worker .k(1) 8392*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8393*4bdc9457SAndroid Build Coastguard Worker } 8394*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,strided_cn)8395*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, strided_cn) { 8396*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8397*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8398*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8399*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8400*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8401*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8402*4bdc9457SAndroid Build Coastguard Worker .m(1) 8403*4bdc9457SAndroid Build Coastguard Worker .n(16) 8404*4bdc9457SAndroid Build Coastguard Worker .k(1) 8405*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8406*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8407*4bdc9457SAndroid Build Coastguard Worker } 8408*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1_subtile)8409*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1_subtile) { 8410*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8411*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8412*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8413*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8414*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8415*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8416*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8417*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8418*4bdc9457SAndroid Build Coastguard Worker .m(m) 8419*4bdc9457SAndroid Build Coastguard Worker .n(n) 8420*4bdc9457SAndroid Build Coastguard Worker .k(1) 8421*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8422*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8423*4bdc9457SAndroid Build Coastguard Worker } 8424*4bdc9457SAndroid Build Coastguard Worker } 8425*4bdc9457SAndroid Build Coastguard Worker } 8426*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1_subtile_m)8427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1_subtile_m) { 8428*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8429*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8430*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8431*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8432*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8433*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8434*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8435*4bdc9457SAndroid Build Coastguard Worker .m(m) 8436*4bdc9457SAndroid Build Coastguard Worker .n(16) 8437*4bdc9457SAndroid Build Coastguard Worker .k(1) 8438*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8439*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8440*4bdc9457SAndroid Build Coastguard Worker } 8441*4bdc9457SAndroid Build Coastguard Worker } 8442*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,k_eq_1_subtile_n)8443*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, k_eq_1_subtile_n) { 8444*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8445*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8446*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8447*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8448*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8449*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8450*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8451*4bdc9457SAndroid Build Coastguard Worker .m(1) 8452*4bdc9457SAndroid Build Coastguard Worker .n(n) 8453*4bdc9457SAndroid Build Coastguard Worker .k(1) 8454*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8455*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8456*4bdc9457SAndroid Build Coastguard Worker } 8457*4bdc9457SAndroid Build Coastguard Worker } 8458*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,k_gt_1)8459*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, k_gt_1) { 8460*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8461*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 8462*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8463*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8464*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8465*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8466*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8467*4bdc9457SAndroid Build Coastguard Worker .m(1) 8468*4bdc9457SAndroid Build Coastguard Worker .n(16) 8469*4bdc9457SAndroid Build Coastguard Worker .k(k) 8470*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8471*4bdc9457SAndroid Build Coastguard Worker } 8472*4bdc9457SAndroid Build Coastguard Worker } 8473*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,k_gt_1_subtile)8474*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, k_gt_1_subtile) { 8475*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8476*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 8477*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8478*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8479*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8480*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8481*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8482*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8483*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8484*4bdc9457SAndroid Build Coastguard Worker .m(m) 8485*4bdc9457SAndroid Build Coastguard Worker .n(n) 8486*4bdc9457SAndroid Build Coastguard Worker .k(k) 8487*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8488*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8489*4bdc9457SAndroid Build Coastguard Worker } 8490*4bdc9457SAndroid Build Coastguard Worker } 8491*4bdc9457SAndroid Build Coastguard Worker } 8492*4bdc9457SAndroid Build Coastguard Worker } 8493*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,n_gt_16)8494*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, n_gt_16) { 8495*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8496*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8497*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8498*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8499*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8500*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8501*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8502*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8503*4bdc9457SAndroid Build Coastguard Worker .m(1) 8504*4bdc9457SAndroid Build Coastguard Worker .n(n) 8505*4bdc9457SAndroid Build Coastguard Worker .k(k) 8506*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8507*4bdc9457SAndroid Build Coastguard Worker } 8508*4bdc9457SAndroid Build Coastguard Worker } 8509*4bdc9457SAndroid Build Coastguard Worker } 8510*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,n_gt_16_strided_cn)8511*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, n_gt_16_strided_cn) { 8512*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8513*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8514*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8515*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8516*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8517*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8518*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8519*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8520*4bdc9457SAndroid Build Coastguard Worker .m(1) 8521*4bdc9457SAndroid Build Coastguard Worker .n(n) 8522*4bdc9457SAndroid Build Coastguard Worker .k(k) 8523*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8524*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8525*4bdc9457SAndroid Build Coastguard Worker } 8526*4bdc9457SAndroid Build Coastguard Worker } 8527*4bdc9457SAndroid Build Coastguard Worker } 8528*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,n_gt_16_subtile)8529*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, n_gt_16_subtile) { 8530*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8531*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8532*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8533*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8534*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8535*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8536*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8537*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8538*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8539*4bdc9457SAndroid Build Coastguard Worker .m(m) 8540*4bdc9457SAndroid Build Coastguard Worker .n(n) 8541*4bdc9457SAndroid Build Coastguard Worker .k(k) 8542*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8543*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8544*4bdc9457SAndroid Build Coastguard Worker } 8545*4bdc9457SAndroid Build Coastguard Worker } 8546*4bdc9457SAndroid Build Coastguard Worker } 8547*4bdc9457SAndroid Build Coastguard Worker } 8548*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,n_div_16)8549*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, n_div_16) { 8550*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8551*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8552*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8553*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8554*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8555*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8556*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8557*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8558*4bdc9457SAndroid Build Coastguard Worker .m(1) 8559*4bdc9457SAndroid Build Coastguard Worker .n(n) 8560*4bdc9457SAndroid Build Coastguard Worker .k(k) 8561*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8562*4bdc9457SAndroid Build Coastguard Worker } 8563*4bdc9457SAndroid Build Coastguard Worker } 8564*4bdc9457SAndroid Build Coastguard Worker } 8565*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,n_div_16_strided_cn)8566*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, n_div_16_strided_cn) { 8567*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8568*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8569*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8570*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8571*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8572*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8573*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8574*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8575*4bdc9457SAndroid Build Coastguard Worker .m(1) 8576*4bdc9457SAndroid Build Coastguard Worker .n(n) 8577*4bdc9457SAndroid Build Coastguard Worker .k(k) 8578*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8579*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8580*4bdc9457SAndroid Build Coastguard Worker } 8581*4bdc9457SAndroid Build Coastguard Worker } 8582*4bdc9457SAndroid Build Coastguard Worker } 8583*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,n_div_16_subtile)8584*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, n_div_16_subtile) { 8585*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8586*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8587*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8588*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8589*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8590*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8591*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8592*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8593*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8594*4bdc9457SAndroid Build Coastguard Worker .m(m) 8595*4bdc9457SAndroid Build Coastguard Worker .n(n) 8596*4bdc9457SAndroid Build Coastguard Worker .k(k) 8597*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8598*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8599*4bdc9457SAndroid Build Coastguard Worker } 8600*4bdc9457SAndroid Build Coastguard Worker } 8601*4bdc9457SAndroid Build Coastguard Worker } 8602*4bdc9457SAndroid Build Coastguard Worker } 8603*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,small_kernel)8604*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, small_kernel) { 8605*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8606*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8607*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8608*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8609*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8610*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8611*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8612*4bdc9457SAndroid Build Coastguard Worker .m(1) 8613*4bdc9457SAndroid Build Coastguard Worker .n(16) 8614*4bdc9457SAndroid Build Coastguard Worker .k(k) 8615*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8616*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8617*4bdc9457SAndroid Build Coastguard Worker } 8618*4bdc9457SAndroid Build Coastguard Worker } 8619*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,small_kernel_subtile)8620*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, small_kernel_subtile) { 8621*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8622*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8623*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8624*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8625*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8626*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8627*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8628*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8629*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8630*4bdc9457SAndroid Build Coastguard Worker .m(m) 8631*4bdc9457SAndroid Build Coastguard Worker .n(n) 8632*4bdc9457SAndroid Build Coastguard Worker .k(k) 8633*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8634*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8635*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8636*4bdc9457SAndroid Build Coastguard Worker } 8637*4bdc9457SAndroid Build Coastguard Worker } 8638*4bdc9457SAndroid Build Coastguard Worker } 8639*4bdc9457SAndroid Build Coastguard Worker } 8640*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,n_gt_16_small_kernel)8641*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, n_gt_16_small_kernel) { 8642*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8643*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8644*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8645*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8646*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8647*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8648*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8649*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8650*4bdc9457SAndroid Build Coastguard Worker .m(1) 8651*4bdc9457SAndroid Build Coastguard Worker .n(n) 8652*4bdc9457SAndroid Build Coastguard Worker .k(k) 8653*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8654*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8655*4bdc9457SAndroid Build Coastguard Worker } 8656*4bdc9457SAndroid Build Coastguard Worker } 8657*4bdc9457SAndroid Build Coastguard Worker } 8658*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,n_div_16_small_kernel)8659*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, n_div_16_small_kernel) { 8660*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8661*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8662*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8663*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8664*4bdc9457SAndroid Build Coastguard Worker .mr(1) 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(1) 8669*4bdc9457SAndroid Build Coastguard Worker .n(n) 8670*4bdc9457SAndroid Build Coastguard Worker .k(k) 8671*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8672*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8673*4bdc9457SAndroid Build Coastguard Worker } 8674*4bdc9457SAndroid Build Coastguard Worker } 8675*4bdc9457SAndroid Build Coastguard Worker } 8676*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,strided_cm_subtile)8677*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, strided_cm_subtile) { 8678*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8679*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8680*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8681*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 1; m++) { 8682*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8683*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8684*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8685*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8686*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8687*4bdc9457SAndroid Build Coastguard Worker .m(m) 8688*4bdc9457SAndroid Build Coastguard Worker .n(n) 8689*4bdc9457SAndroid Build Coastguard Worker .k(k) 8690*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 8691*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8692*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8693*4bdc9457SAndroid Build Coastguard Worker } 8694*4bdc9457SAndroid Build Coastguard Worker } 8695*4bdc9457SAndroid Build Coastguard Worker } 8696*4bdc9457SAndroid Build Coastguard Worker } 8697*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,a_offset)8698*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, a_offset) { 8699*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8700*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8701*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8702*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8703*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8704*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8705*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8706*4bdc9457SAndroid Build Coastguard Worker .m(1) 8707*4bdc9457SAndroid Build Coastguard Worker .n(16) 8708*4bdc9457SAndroid Build Coastguard Worker .k(k) 8709*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8710*4bdc9457SAndroid Build Coastguard Worker .a_offset(7) 8711*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8712*4bdc9457SAndroid Build Coastguard Worker } 8713*4bdc9457SAndroid Build Coastguard Worker } 8714*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,zero)8715*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, zero) { 8716*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8717*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8718*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 1; mz++) { 8719*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8720*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8721*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8722*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8723*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8724*4bdc9457SAndroid Build Coastguard Worker .m(1) 8725*4bdc9457SAndroid Build Coastguard Worker .n(16) 8726*4bdc9457SAndroid Build Coastguard Worker .k(k) 8727*4bdc9457SAndroid Build Coastguard Worker .ks(3) 8728*4bdc9457SAndroid Build Coastguard Worker .a_offset(7) 8729*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 8730*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8731*4bdc9457SAndroid Build Coastguard Worker } 8732*4bdc9457SAndroid Build Coastguard Worker } 8733*4bdc9457SAndroid Build Coastguard Worker } 8734*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,qmin)8735*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, qmin) { 8736*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8737*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8738*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8739*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8740*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8741*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8742*4bdc9457SAndroid Build Coastguard Worker .m(1) 8743*4bdc9457SAndroid Build Coastguard Worker .n(16) 8744*4bdc9457SAndroid Build Coastguard Worker .k(1) 8745*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 8746*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8747*4bdc9457SAndroid Build Coastguard Worker } 8748*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,qmax)8749*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, qmax) { 8750*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8751*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8752*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8753*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8754*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8755*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8756*4bdc9457SAndroid Build Coastguard Worker .m(1) 8757*4bdc9457SAndroid Build Coastguard Worker .n(16) 8758*4bdc9457SAndroid Build Coastguard Worker .k(1) 8759*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 8760*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8761*4bdc9457SAndroid Build Coastguard Worker } 8762*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST,strided_cm)8763*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_1X16__AVX2_BROADCAST, strided_cm) { 8764*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8765*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8766*4bdc9457SAndroid Build Coastguard Worker .mr(1) 8767*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8768*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8769*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8770*4bdc9457SAndroid Build Coastguard Worker .m(1) 8771*4bdc9457SAndroid Build Coastguard Worker .n(16) 8772*4bdc9457SAndroid Build Coastguard Worker .k(1) 8773*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 8774*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8775*4bdc9457SAndroid Build Coastguard Worker } 8776*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 8777*4bdc9457SAndroid Build Coastguard Worker 8778*4bdc9457SAndroid Build Coastguard Worker 8779*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1)8780*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1) { 8781*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8782*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8783*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8784*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8785*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8786*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8787*4bdc9457SAndroid Build Coastguard Worker .m(3) 8788*4bdc9457SAndroid Build Coastguard Worker .n(16) 8789*4bdc9457SAndroid Build Coastguard Worker .k(1) 8790*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8791*4bdc9457SAndroid Build Coastguard Worker } 8792*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,strided_cn)8793*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, strided_cn) { 8794*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8795*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8796*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8797*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8798*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8799*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8800*4bdc9457SAndroid Build Coastguard Worker .m(3) 8801*4bdc9457SAndroid Build Coastguard Worker .n(16) 8802*4bdc9457SAndroid Build Coastguard Worker .k(1) 8803*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8804*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8805*4bdc9457SAndroid Build Coastguard Worker } 8806*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1_subtile)8807*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1_subtile) { 8808*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8809*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8810*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8811*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8812*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8813*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8814*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8815*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8816*4bdc9457SAndroid Build Coastguard Worker .m(m) 8817*4bdc9457SAndroid Build Coastguard Worker .n(n) 8818*4bdc9457SAndroid Build Coastguard Worker .k(1) 8819*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8820*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8821*4bdc9457SAndroid Build Coastguard Worker } 8822*4bdc9457SAndroid Build Coastguard Worker } 8823*4bdc9457SAndroid Build Coastguard Worker } 8824*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1_subtile_m)8825*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1_subtile_m) { 8826*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8827*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8828*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8829*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8830*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8831*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8832*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8833*4bdc9457SAndroid Build Coastguard Worker .m(m) 8834*4bdc9457SAndroid Build Coastguard Worker .n(16) 8835*4bdc9457SAndroid Build Coastguard Worker .k(1) 8836*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8837*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8838*4bdc9457SAndroid Build Coastguard Worker } 8839*4bdc9457SAndroid Build Coastguard Worker } 8840*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,k_eq_1_subtile_n)8841*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, k_eq_1_subtile_n) { 8842*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8843*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8844*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8845*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8846*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8847*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8848*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8849*4bdc9457SAndroid Build Coastguard Worker .m(3) 8850*4bdc9457SAndroid Build Coastguard Worker .n(n) 8851*4bdc9457SAndroid Build Coastguard Worker .k(1) 8852*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8853*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8854*4bdc9457SAndroid Build Coastguard Worker } 8855*4bdc9457SAndroid Build Coastguard Worker } 8856*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,k_gt_1)8857*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, k_gt_1) { 8858*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8859*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 8860*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8861*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8862*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8863*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8864*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8865*4bdc9457SAndroid Build Coastguard Worker .m(3) 8866*4bdc9457SAndroid Build Coastguard Worker .n(16) 8867*4bdc9457SAndroid Build Coastguard Worker .k(k) 8868*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8869*4bdc9457SAndroid Build Coastguard Worker } 8870*4bdc9457SAndroid Build Coastguard Worker } 8871*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,k_gt_1_subtile)8872*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, k_gt_1_subtile) { 8873*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8874*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 8875*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 8876*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8877*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8878*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8879*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8880*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8881*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8882*4bdc9457SAndroid Build Coastguard Worker .m(m) 8883*4bdc9457SAndroid Build Coastguard Worker .n(n) 8884*4bdc9457SAndroid Build Coastguard Worker .k(k) 8885*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8886*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8887*4bdc9457SAndroid Build Coastguard Worker } 8888*4bdc9457SAndroid Build Coastguard Worker } 8889*4bdc9457SAndroid Build Coastguard Worker } 8890*4bdc9457SAndroid Build Coastguard Worker } 8891*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,n_gt_16)8892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, n_gt_16) { 8893*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8894*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8895*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8896*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8897*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8898*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8899*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8900*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8901*4bdc9457SAndroid Build Coastguard Worker .m(3) 8902*4bdc9457SAndroid Build Coastguard Worker .n(n) 8903*4bdc9457SAndroid Build Coastguard Worker .k(k) 8904*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8905*4bdc9457SAndroid Build Coastguard Worker } 8906*4bdc9457SAndroid Build Coastguard Worker } 8907*4bdc9457SAndroid Build Coastguard Worker } 8908*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,n_gt_16_strided_cn)8909*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, n_gt_16_strided_cn) { 8910*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8911*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8912*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8913*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8914*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8915*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8916*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8917*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8918*4bdc9457SAndroid Build Coastguard Worker .m(3) 8919*4bdc9457SAndroid Build Coastguard Worker .n(n) 8920*4bdc9457SAndroid Build Coastguard Worker .k(k) 8921*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8922*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8923*4bdc9457SAndroid Build Coastguard Worker } 8924*4bdc9457SAndroid Build Coastguard Worker } 8925*4bdc9457SAndroid Build Coastguard Worker } 8926*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,n_gt_16_subtile)8927*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, n_gt_16_subtile) { 8928*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8929*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 8930*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8931*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8932*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8933*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8934*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8935*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8936*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8937*4bdc9457SAndroid Build Coastguard Worker .m(m) 8938*4bdc9457SAndroid Build Coastguard Worker .n(n) 8939*4bdc9457SAndroid Build Coastguard Worker .k(k) 8940*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8941*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8942*4bdc9457SAndroid Build Coastguard Worker } 8943*4bdc9457SAndroid Build Coastguard Worker } 8944*4bdc9457SAndroid Build Coastguard Worker } 8945*4bdc9457SAndroid Build Coastguard Worker } 8946*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,n_div_16)8947*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, n_div_16) { 8948*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8949*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8950*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8951*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8952*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8953*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8954*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8955*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8956*4bdc9457SAndroid Build Coastguard Worker .m(3) 8957*4bdc9457SAndroid Build Coastguard Worker .n(n) 8958*4bdc9457SAndroid Build Coastguard Worker .k(k) 8959*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8960*4bdc9457SAndroid Build Coastguard Worker } 8961*4bdc9457SAndroid Build Coastguard Worker } 8962*4bdc9457SAndroid Build Coastguard Worker } 8963*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,n_div_16_strided_cn)8964*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, n_div_16_strided_cn) { 8965*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8966*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8967*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8968*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8969*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8970*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8971*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8972*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8973*4bdc9457SAndroid Build Coastguard Worker .m(3) 8974*4bdc9457SAndroid Build Coastguard Worker .n(n) 8975*4bdc9457SAndroid Build Coastguard Worker .k(k) 8976*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 8977*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8978*4bdc9457SAndroid Build Coastguard Worker } 8979*4bdc9457SAndroid Build Coastguard Worker } 8980*4bdc9457SAndroid Build Coastguard Worker } 8981*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,n_div_16_subtile)8982*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, n_div_16_subtile) { 8983*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 8984*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 8985*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 8986*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 8987*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 8988*4bdc9457SAndroid Build Coastguard Worker .mr(3) 8989*4bdc9457SAndroid Build Coastguard Worker .nr(16) 8990*4bdc9457SAndroid Build Coastguard Worker .kr(1) 8991*4bdc9457SAndroid Build Coastguard Worker .sr(1) 8992*4bdc9457SAndroid Build Coastguard Worker .m(m) 8993*4bdc9457SAndroid Build Coastguard Worker .n(n) 8994*4bdc9457SAndroid Build Coastguard Worker .k(k) 8995*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 8996*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 8997*4bdc9457SAndroid Build Coastguard Worker } 8998*4bdc9457SAndroid Build Coastguard Worker } 8999*4bdc9457SAndroid Build Coastguard Worker } 9000*4bdc9457SAndroid Build Coastguard Worker } 9001*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,small_kernel)9002*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, small_kernel) { 9003*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9004*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9005*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9006*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9007*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9008*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9009*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9010*4bdc9457SAndroid Build Coastguard Worker .m(3) 9011*4bdc9457SAndroid Build Coastguard Worker .n(16) 9012*4bdc9457SAndroid Build Coastguard Worker .k(k) 9013*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9014*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9015*4bdc9457SAndroid Build Coastguard Worker } 9016*4bdc9457SAndroid Build Coastguard Worker } 9017*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,small_kernel_subtile)9018*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, small_kernel_subtile) { 9019*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9020*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9021*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9022*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 9023*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9024*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9025*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9026*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9027*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9028*4bdc9457SAndroid Build Coastguard Worker .m(m) 9029*4bdc9457SAndroid Build Coastguard Worker .n(n) 9030*4bdc9457SAndroid Build Coastguard Worker .k(k) 9031*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9032*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9033*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9034*4bdc9457SAndroid Build Coastguard Worker } 9035*4bdc9457SAndroid Build Coastguard Worker } 9036*4bdc9457SAndroid Build Coastguard Worker } 9037*4bdc9457SAndroid Build Coastguard Worker } 9038*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,n_gt_16_small_kernel)9039*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, n_gt_16_small_kernel) { 9040*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9041*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9042*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9043*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9044*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9045*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9046*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9047*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9048*4bdc9457SAndroid Build Coastguard Worker .m(3) 9049*4bdc9457SAndroid Build Coastguard Worker .n(n) 9050*4bdc9457SAndroid Build Coastguard Worker .k(k) 9051*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9052*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9053*4bdc9457SAndroid Build Coastguard Worker } 9054*4bdc9457SAndroid Build Coastguard Worker } 9055*4bdc9457SAndroid Build Coastguard Worker } 9056*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,n_div_16_small_kernel)9057*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, n_div_16_small_kernel) { 9058*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9059*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9060*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9061*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9062*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9063*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9064*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9065*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9066*4bdc9457SAndroid Build Coastguard Worker .m(3) 9067*4bdc9457SAndroid Build Coastguard Worker .n(n) 9068*4bdc9457SAndroid Build Coastguard Worker .k(k) 9069*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9070*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9071*4bdc9457SAndroid Build Coastguard Worker } 9072*4bdc9457SAndroid Build Coastguard Worker } 9073*4bdc9457SAndroid Build Coastguard Worker } 9074*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,strided_cm_subtile)9075*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, strided_cm_subtile) { 9076*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9077*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9078*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9079*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 3; m++) { 9080*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9081*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9082*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9083*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9084*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9085*4bdc9457SAndroid Build Coastguard Worker .m(m) 9086*4bdc9457SAndroid Build Coastguard Worker .n(n) 9087*4bdc9457SAndroid Build Coastguard Worker .k(k) 9088*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 9089*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9090*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9091*4bdc9457SAndroid Build Coastguard Worker } 9092*4bdc9457SAndroid Build Coastguard Worker } 9093*4bdc9457SAndroid Build Coastguard Worker } 9094*4bdc9457SAndroid Build Coastguard Worker } 9095*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,a_offset)9096*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, a_offset) { 9097*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9098*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9099*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9100*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9101*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9102*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9103*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9104*4bdc9457SAndroid Build Coastguard Worker .m(3) 9105*4bdc9457SAndroid Build Coastguard Worker .n(16) 9106*4bdc9457SAndroid Build Coastguard Worker .k(k) 9107*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9108*4bdc9457SAndroid Build Coastguard Worker .a_offset(17) 9109*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9110*4bdc9457SAndroid Build Coastguard Worker } 9111*4bdc9457SAndroid Build Coastguard Worker } 9112*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,zero)9113*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, zero) { 9114*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9115*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9116*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 3; mz++) { 9117*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9118*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9119*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9120*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9121*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9122*4bdc9457SAndroid Build Coastguard Worker .m(3) 9123*4bdc9457SAndroid Build Coastguard Worker .n(16) 9124*4bdc9457SAndroid Build Coastguard Worker .k(k) 9125*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9126*4bdc9457SAndroid Build Coastguard Worker .a_offset(17) 9127*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 9128*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9129*4bdc9457SAndroid Build Coastguard Worker } 9130*4bdc9457SAndroid Build Coastguard Worker } 9131*4bdc9457SAndroid Build Coastguard Worker } 9132*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,qmin)9133*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, qmin) { 9134*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9135*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9136*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9137*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9138*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9139*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9140*4bdc9457SAndroid Build Coastguard Worker .m(3) 9141*4bdc9457SAndroid Build Coastguard Worker .n(16) 9142*4bdc9457SAndroid Build Coastguard Worker .k(1) 9143*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 9144*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9145*4bdc9457SAndroid Build Coastguard Worker } 9146*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,qmax)9147*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, qmax) { 9148*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9149*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9150*4bdc9457SAndroid Build Coastguard Worker .mr(3) 9151*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9152*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9153*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9154*4bdc9457SAndroid Build Coastguard Worker .m(3) 9155*4bdc9457SAndroid Build Coastguard Worker .n(16) 9156*4bdc9457SAndroid Build Coastguard Worker .k(1) 9157*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 9158*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9159*4bdc9457SAndroid Build Coastguard Worker } 9160*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST,strided_cm)9161*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_3X16__AVX2_BROADCAST, strided_cm) { 9162*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9163*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9164*4bdc9457SAndroid Build Coastguard Worker .mr(3) 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(3) 9169*4bdc9457SAndroid Build Coastguard Worker .n(16) 9170*4bdc9457SAndroid Build Coastguard Worker .k(1) 9171*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 9172*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9173*4bdc9457SAndroid Build Coastguard Worker } 9174*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 9175*4bdc9457SAndroid Build Coastguard Worker 9176*4bdc9457SAndroid Build Coastguard Worker 9177*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1)9178*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1) { 9179*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9180*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9181*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9182*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9183*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9184*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9185*4bdc9457SAndroid Build Coastguard Worker .m(4) 9186*4bdc9457SAndroid Build Coastguard Worker .n(8) 9187*4bdc9457SAndroid Build Coastguard Worker .k(1) 9188*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9189*4bdc9457SAndroid Build Coastguard Worker } 9190*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,strided_cn)9191*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, strided_cn) { 9192*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9193*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9194*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9195*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9196*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9197*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9198*4bdc9457SAndroid Build Coastguard Worker .m(4) 9199*4bdc9457SAndroid Build Coastguard Worker .n(8) 9200*4bdc9457SAndroid Build Coastguard Worker .k(1) 9201*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9203*4bdc9457SAndroid Build Coastguard Worker } 9204*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1_subtile)9205*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1_subtile) { 9206*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9207*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9208*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9209*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9210*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9211*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9212*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9213*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9214*4bdc9457SAndroid Build Coastguard Worker .m(m) 9215*4bdc9457SAndroid Build Coastguard Worker .n(n) 9216*4bdc9457SAndroid Build Coastguard Worker .k(1) 9217*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9218*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9219*4bdc9457SAndroid Build Coastguard Worker } 9220*4bdc9457SAndroid Build Coastguard Worker } 9221*4bdc9457SAndroid Build Coastguard Worker } 9222*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1_subtile_m)9223*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 9224*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9225*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9226*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9227*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9228*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9229*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9230*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9231*4bdc9457SAndroid Build Coastguard Worker .m(m) 9232*4bdc9457SAndroid Build Coastguard Worker .n(8) 9233*4bdc9457SAndroid Build Coastguard Worker .k(1) 9234*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9235*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9236*4bdc9457SAndroid Build Coastguard Worker } 9237*4bdc9457SAndroid Build Coastguard Worker } 9238*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,k_eq_1_subtile_n)9239*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 9240*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9241*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9242*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9243*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9244*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9245*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9246*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9247*4bdc9457SAndroid Build Coastguard Worker .m(4) 9248*4bdc9457SAndroid Build Coastguard Worker .n(n) 9249*4bdc9457SAndroid Build Coastguard Worker .k(1) 9250*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9251*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9252*4bdc9457SAndroid Build Coastguard Worker } 9253*4bdc9457SAndroid Build Coastguard Worker } 9254*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,k_gt_1)9255*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, k_gt_1) { 9256*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9257*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 9258*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9259*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9260*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9261*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9262*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9263*4bdc9457SAndroid Build Coastguard Worker .m(4) 9264*4bdc9457SAndroid Build Coastguard Worker .n(8) 9265*4bdc9457SAndroid Build Coastguard Worker .k(k) 9266*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9267*4bdc9457SAndroid Build Coastguard Worker } 9268*4bdc9457SAndroid Build Coastguard Worker } 9269*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,k_gt_1_subtile)9270*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, k_gt_1_subtile) { 9271*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9272*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 9273*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9274*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9275*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9276*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9277*4bdc9457SAndroid Build Coastguard Worker .nr(8) 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_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_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_IGEMM_MINMAX_4X8__AVX2_BROADCAST,n_gt_8)9290*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, n_gt_8) { 9291*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9292*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9293*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9294*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9295*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9296*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9297*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9298*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9299*4bdc9457SAndroid Build Coastguard Worker .m(4) 9300*4bdc9457SAndroid Build Coastguard Worker .n(n) 9301*4bdc9457SAndroid Build Coastguard Worker .k(k) 9302*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9303*4bdc9457SAndroid Build Coastguard Worker } 9304*4bdc9457SAndroid Build Coastguard Worker } 9305*4bdc9457SAndroid Build Coastguard Worker } 9306*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,n_gt_8_strided_cn)9307*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 9308*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9309*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9310*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9311*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9312*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9313*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9314*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9315*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9316*4bdc9457SAndroid Build Coastguard Worker .m(4) 9317*4bdc9457SAndroid Build Coastguard Worker .n(n) 9318*4bdc9457SAndroid Build Coastguard Worker .k(k) 9319*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9320*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9321*4bdc9457SAndroid Build Coastguard Worker } 9322*4bdc9457SAndroid Build Coastguard Worker } 9323*4bdc9457SAndroid Build Coastguard Worker } 9324*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,n_gt_8_subtile)9325*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, n_gt_8_subtile) { 9326*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9327*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9328*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9329*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9330*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9331*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9332*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9333*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9334*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9335*4bdc9457SAndroid Build Coastguard Worker .m(m) 9336*4bdc9457SAndroid Build Coastguard Worker .n(n) 9337*4bdc9457SAndroid Build Coastguard Worker .k(k) 9338*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9339*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9340*4bdc9457SAndroid Build Coastguard Worker } 9341*4bdc9457SAndroid Build Coastguard Worker } 9342*4bdc9457SAndroid Build Coastguard Worker } 9343*4bdc9457SAndroid Build Coastguard Worker } 9344*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,n_div_8)9345*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, n_div_8) { 9346*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9347*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9348*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9349*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9350*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9351*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9352*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9353*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9354*4bdc9457SAndroid Build Coastguard Worker .m(4) 9355*4bdc9457SAndroid Build Coastguard Worker .n(n) 9356*4bdc9457SAndroid Build Coastguard Worker .k(k) 9357*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9358*4bdc9457SAndroid Build Coastguard Worker } 9359*4bdc9457SAndroid Build Coastguard Worker } 9360*4bdc9457SAndroid Build Coastguard Worker } 9361*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,n_div_8_strided_cn)9362*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, n_div_8_strided_cn) { 9363*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9364*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9365*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9366*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9367*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9368*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9369*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9370*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9371*4bdc9457SAndroid Build Coastguard Worker .m(4) 9372*4bdc9457SAndroid Build Coastguard Worker .n(n) 9373*4bdc9457SAndroid Build Coastguard Worker .k(k) 9374*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9375*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9376*4bdc9457SAndroid Build Coastguard Worker } 9377*4bdc9457SAndroid Build Coastguard Worker } 9378*4bdc9457SAndroid Build Coastguard Worker } 9379*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,n_div_8_subtile)9380*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, n_div_8_subtile) { 9381*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9382*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9383*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9384*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9385*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9386*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9387*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9388*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9389*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9390*4bdc9457SAndroid Build Coastguard Worker .m(m) 9391*4bdc9457SAndroid Build Coastguard Worker .n(n) 9392*4bdc9457SAndroid Build Coastguard Worker .k(k) 9393*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9394*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9395*4bdc9457SAndroid Build Coastguard Worker } 9396*4bdc9457SAndroid Build Coastguard Worker } 9397*4bdc9457SAndroid Build Coastguard Worker } 9398*4bdc9457SAndroid Build Coastguard Worker } 9399*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,small_kernel)9400*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, small_kernel) { 9401*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9402*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9403*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9404*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9405*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9406*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9407*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9408*4bdc9457SAndroid Build Coastguard Worker .m(4) 9409*4bdc9457SAndroid Build Coastguard Worker .n(8) 9410*4bdc9457SAndroid Build Coastguard Worker .k(k) 9411*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9413*4bdc9457SAndroid Build Coastguard Worker } 9414*4bdc9457SAndroid Build Coastguard Worker } 9415*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,small_kernel_subtile)9416*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, small_kernel_subtile) { 9417*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9418*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9419*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9420*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9421*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9422*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9423*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9424*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9425*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9426*4bdc9457SAndroid Build Coastguard Worker .m(m) 9427*4bdc9457SAndroid Build Coastguard Worker .n(n) 9428*4bdc9457SAndroid Build Coastguard Worker .k(k) 9429*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9430*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9431*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9432*4bdc9457SAndroid Build Coastguard Worker } 9433*4bdc9457SAndroid Build Coastguard Worker } 9434*4bdc9457SAndroid Build Coastguard Worker } 9435*4bdc9457SAndroid Build Coastguard Worker } 9436*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,n_gt_8_small_kernel)9437*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, n_gt_8_small_kernel) { 9438*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9439*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 9440*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9441*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9442*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9443*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9444*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9445*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9446*4bdc9457SAndroid Build Coastguard Worker .m(4) 9447*4bdc9457SAndroid Build Coastguard Worker .n(n) 9448*4bdc9457SAndroid Build Coastguard Worker .k(k) 9449*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9450*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9451*4bdc9457SAndroid Build Coastguard Worker } 9452*4bdc9457SAndroid Build Coastguard Worker } 9453*4bdc9457SAndroid Build Coastguard Worker } 9454*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,n_div_8_small_kernel)9455*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, n_div_8_small_kernel) { 9456*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9457*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 9458*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9459*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9460*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9461*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9462*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9463*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9464*4bdc9457SAndroid Build Coastguard Worker .m(4) 9465*4bdc9457SAndroid Build Coastguard Worker .n(n) 9466*4bdc9457SAndroid Build Coastguard Worker .k(k) 9467*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9468*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9469*4bdc9457SAndroid Build Coastguard Worker } 9470*4bdc9457SAndroid Build Coastguard Worker } 9471*4bdc9457SAndroid Build Coastguard Worker } 9472*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,strided_cm_subtile)9473*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, strided_cm_subtile) { 9474*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9475*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9476*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 9477*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9478*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9479*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9480*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9481*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9482*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9483*4bdc9457SAndroid Build Coastguard Worker .m(m) 9484*4bdc9457SAndroid Build Coastguard Worker .n(n) 9485*4bdc9457SAndroid Build Coastguard Worker .k(k) 9486*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9487*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9488*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9489*4bdc9457SAndroid Build Coastguard Worker } 9490*4bdc9457SAndroid Build Coastguard Worker } 9491*4bdc9457SAndroid Build Coastguard Worker } 9492*4bdc9457SAndroid Build Coastguard Worker } 9493*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,a_offset)9494*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, a_offset) { 9495*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9496*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9497*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9498*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9499*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9500*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9501*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9502*4bdc9457SAndroid Build Coastguard Worker .m(4) 9503*4bdc9457SAndroid Build Coastguard Worker .n(8) 9504*4bdc9457SAndroid Build Coastguard Worker .k(k) 9505*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9506*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 9507*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9508*4bdc9457SAndroid Build Coastguard Worker } 9509*4bdc9457SAndroid Build Coastguard Worker } 9510*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,zero)9511*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, zero) { 9512*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9513*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9514*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 9515*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9516*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9517*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9518*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9519*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9520*4bdc9457SAndroid Build Coastguard Worker .m(4) 9521*4bdc9457SAndroid Build Coastguard Worker .n(8) 9522*4bdc9457SAndroid Build Coastguard Worker .k(k) 9523*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9524*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 9525*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 9526*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9527*4bdc9457SAndroid Build Coastguard Worker } 9528*4bdc9457SAndroid Build Coastguard Worker } 9529*4bdc9457SAndroid Build Coastguard Worker } 9530*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,qmin)9531*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, qmin) { 9532*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9533*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9534*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9535*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9536*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9537*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9538*4bdc9457SAndroid Build Coastguard Worker .m(4) 9539*4bdc9457SAndroid Build Coastguard Worker .n(8) 9540*4bdc9457SAndroid Build Coastguard Worker .k(1) 9541*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 9542*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9543*4bdc9457SAndroid Build Coastguard Worker } 9544*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,qmax)9545*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, qmax) { 9546*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9547*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9548*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9549*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9550*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9551*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9552*4bdc9457SAndroid Build Coastguard Worker .m(4) 9553*4bdc9457SAndroid Build Coastguard Worker .n(8) 9554*4bdc9457SAndroid Build Coastguard Worker .k(1) 9555*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 9556*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9557*4bdc9457SAndroid Build Coastguard Worker } 9558*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST,strided_cm)9559*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X8__AVX2_BROADCAST, strided_cm) { 9560*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9561*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9562*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9563*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9564*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9565*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9566*4bdc9457SAndroid Build Coastguard Worker .m(4) 9567*4bdc9457SAndroid Build Coastguard Worker .n(8) 9568*4bdc9457SAndroid Build Coastguard Worker .k(1) 9569*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 9570*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9571*4bdc9457SAndroid Build Coastguard Worker } 9572*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 9573*4bdc9457SAndroid Build Coastguard Worker 9574*4bdc9457SAndroid Build Coastguard Worker 9575*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1)9576*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1) { 9577*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9578*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9579*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9580*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9581*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9582*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9583*4bdc9457SAndroid Build Coastguard Worker .m(4) 9584*4bdc9457SAndroid Build Coastguard Worker .n(16) 9585*4bdc9457SAndroid Build Coastguard Worker .k(1) 9586*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9587*4bdc9457SAndroid Build Coastguard Worker } 9588*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,strided_cn)9589*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, strided_cn) { 9590*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9591*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9592*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9593*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9594*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9595*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9596*4bdc9457SAndroid Build Coastguard Worker .m(4) 9597*4bdc9457SAndroid Build Coastguard Worker .n(16) 9598*4bdc9457SAndroid Build Coastguard Worker .k(1) 9599*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 9600*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9601*4bdc9457SAndroid Build Coastguard Worker } 9602*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1_subtile)9603*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1_subtile) { 9604*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9605*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9606*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9607*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9608*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9609*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9610*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9611*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9612*4bdc9457SAndroid Build Coastguard Worker .m(m) 9613*4bdc9457SAndroid Build Coastguard Worker .n(n) 9614*4bdc9457SAndroid Build Coastguard Worker .k(1) 9615*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9616*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9617*4bdc9457SAndroid Build Coastguard Worker } 9618*4bdc9457SAndroid Build Coastguard Worker } 9619*4bdc9457SAndroid Build Coastguard Worker } 9620*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1_subtile_m)9621*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1_subtile_m) { 9622*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9623*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9624*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9625*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9626*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9627*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9628*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9629*4bdc9457SAndroid Build Coastguard Worker .m(m) 9630*4bdc9457SAndroid Build Coastguard Worker .n(16) 9631*4bdc9457SAndroid Build Coastguard Worker .k(1) 9632*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9633*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9634*4bdc9457SAndroid Build Coastguard Worker } 9635*4bdc9457SAndroid Build Coastguard Worker } 9636*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,k_eq_1_subtile_n)9637*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, k_eq_1_subtile_n) { 9638*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9639*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9640*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9641*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9642*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9643*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9644*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9645*4bdc9457SAndroid Build Coastguard Worker .m(4) 9646*4bdc9457SAndroid Build Coastguard Worker .n(n) 9647*4bdc9457SAndroid Build Coastguard Worker .k(1) 9648*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9649*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9650*4bdc9457SAndroid Build Coastguard Worker } 9651*4bdc9457SAndroid Build Coastguard Worker } 9652*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,k_gt_1)9653*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, k_gt_1) { 9654*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9655*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 9656*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9657*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9658*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9659*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9660*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9661*4bdc9457SAndroid Build Coastguard Worker .m(4) 9662*4bdc9457SAndroid Build Coastguard Worker .n(16) 9663*4bdc9457SAndroid Build Coastguard Worker .k(k) 9664*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9665*4bdc9457SAndroid Build Coastguard Worker } 9666*4bdc9457SAndroid Build Coastguard Worker } 9667*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,k_gt_1_subtile)9668*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, k_gt_1_subtile) { 9669*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9670*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 9671*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9672*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9673*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9674*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9675*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9676*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9677*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9678*4bdc9457SAndroid Build Coastguard Worker .m(m) 9679*4bdc9457SAndroid Build Coastguard Worker .n(n) 9680*4bdc9457SAndroid Build Coastguard Worker .k(k) 9681*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9682*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9683*4bdc9457SAndroid Build Coastguard Worker } 9684*4bdc9457SAndroid Build Coastguard Worker } 9685*4bdc9457SAndroid Build Coastguard Worker } 9686*4bdc9457SAndroid Build Coastguard Worker } 9687*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,n_gt_16)9688*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, n_gt_16) { 9689*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9690*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9691*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9692*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9693*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9694*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9695*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9696*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9697*4bdc9457SAndroid Build Coastguard Worker .m(4) 9698*4bdc9457SAndroid Build Coastguard Worker .n(n) 9699*4bdc9457SAndroid Build Coastguard Worker .k(k) 9700*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9701*4bdc9457SAndroid Build Coastguard Worker } 9702*4bdc9457SAndroid Build Coastguard Worker } 9703*4bdc9457SAndroid Build Coastguard Worker } 9704*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,n_gt_16_strided_cn)9705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, n_gt_16_strided_cn) { 9706*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9707*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9708*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9709*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9710*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9711*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9712*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9713*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9714*4bdc9457SAndroid Build Coastguard Worker .m(4) 9715*4bdc9457SAndroid Build Coastguard Worker .n(n) 9716*4bdc9457SAndroid Build Coastguard Worker .k(k) 9717*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 9718*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9719*4bdc9457SAndroid Build Coastguard Worker } 9720*4bdc9457SAndroid Build Coastguard Worker } 9721*4bdc9457SAndroid Build Coastguard Worker } 9722*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,n_gt_16_subtile)9723*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, n_gt_16_subtile) { 9724*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9725*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9726*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9727*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9728*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9729*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9730*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9731*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9732*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9733*4bdc9457SAndroid Build Coastguard Worker .m(m) 9734*4bdc9457SAndroid Build Coastguard Worker .n(n) 9735*4bdc9457SAndroid Build Coastguard Worker .k(k) 9736*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9737*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9738*4bdc9457SAndroid Build Coastguard Worker } 9739*4bdc9457SAndroid Build Coastguard Worker } 9740*4bdc9457SAndroid Build Coastguard Worker } 9741*4bdc9457SAndroid Build Coastguard Worker } 9742*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,n_div_16)9743*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, n_div_16) { 9744*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9745*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9746*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9747*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9748*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9749*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9750*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9751*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9752*4bdc9457SAndroid Build Coastguard Worker .m(4) 9753*4bdc9457SAndroid Build Coastguard Worker .n(n) 9754*4bdc9457SAndroid Build Coastguard Worker .k(k) 9755*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9756*4bdc9457SAndroid Build Coastguard Worker } 9757*4bdc9457SAndroid Build Coastguard Worker } 9758*4bdc9457SAndroid Build Coastguard Worker } 9759*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,n_div_16_strided_cn)9760*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, n_div_16_strided_cn) { 9761*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9762*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9763*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9764*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9765*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9766*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9767*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9768*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9769*4bdc9457SAndroid Build Coastguard Worker .m(4) 9770*4bdc9457SAndroid Build Coastguard Worker .n(n) 9771*4bdc9457SAndroid Build Coastguard Worker .k(k) 9772*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 9773*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9774*4bdc9457SAndroid Build Coastguard Worker } 9775*4bdc9457SAndroid Build Coastguard Worker } 9776*4bdc9457SAndroid Build Coastguard Worker } 9777*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,n_div_16_subtile)9778*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, n_div_16_subtile) { 9779*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9780*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9781*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9782*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9783*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9784*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9785*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9786*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9787*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9788*4bdc9457SAndroid Build Coastguard Worker .m(m) 9789*4bdc9457SAndroid Build Coastguard Worker .n(n) 9790*4bdc9457SAndroid Build Coastguard Worker .k(k) 9791*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9792*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9793*4bdc9457SAndroid Build Coastguard Worker } 9794*4bdc9457SAndroid Build Coastguard Worker } 9795*4bdc9457SAndroid Build Coastguard Worker } 9796*4bdc9457SAndroid Build Coastguard Worker } 9797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,small_kernel)9798*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, small_kernel) { 9799*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9800*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9801*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9802*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9803*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9804*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9805*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9806*4bdc9457SAndroid Build Coastguard Worker .m(4) 9807*4bdc9457SAndroid Build Coastguard Worker .n(16) 9808*4bdc9457SAndroid Build Coastguard Worker .k(k) 9809*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9810*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9811*4bdc9457SAndroid Build Coastguard Worker } 9812*4bdc9457SAndroid Build Coastguard Worker } 9813*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,small_kernel_subtile)9814*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, small_kernel_subtile) { 9815*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9816*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9817*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9818*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9819*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9820*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9821*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9822*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9823*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9824*4bdc9457SAndroid Build Coastguard Worker .m(m) 9825*4bdc9457SAndroid Build Coastguard Worker .n(n) 9826*4bdc9457SAndroid Build Coastguard Worker .k(k) 9827*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9828*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9830*4bdc9457SAndroid Build Coastguard Worker } 9831*4bdc9457SAndroid Build Coastguard Worker } 9832*4bdc9457SAndroid Build Coastguard Worker } 9833*4bdc9457SAndroid Build Coastguard Worker } 9834*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,n_gt_16_small_kernel)9835*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, n_gt_16_small_kernel) { 9836*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9837*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 9838*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9839*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9840*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9841*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9842*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9843*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9844*4bdc9457SAndroid Build Coastguard Worker .m(4) 9845*4bdc9457SAndroid Build Coastguard Worker .n(n) 9846*4bdc9457SAndroid Build Coastguard Worker .k(k) 9847*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9848*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9849*4bdc9457SAndroid Build Coastguard Worker } 9850*4bdc9457SAndroid Build Coastguard Worker } 9851*4bdc9457SAndroid Build Coastguard Worker } 9852*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,n_div_16_small_kernel)9853*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, n_div_16_small_kernel) { 9854*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9855*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 9856*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9857*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9858*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9859*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9860*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9861*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9862*4bdc9457SAndroid Build Coastguard Worker .m(4) 9863*4bdc9457SAndroid Build Coastguard Worker .n(n) 9864*4bdc9457SAndroid Build Coastguard Worker .k(k) 9865*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9867*4bdc9457SAndroid Build Coastguard Worker } 9868*4bdc9457SAndroid Build Coastguard Worker } 9869*4bdc9457SAndroid Build Coastguard Worker } 9870*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,strided_cm_subtile)9871*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, strided_cm_subtile) { 9872*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9873*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9874*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 9875*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 4; m++) { 9876*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9877*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9878*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9879*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9880*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9881*4bdc9457SAndroid Build Coastguard Worker .m(m) 9882*4bdc9457SAndroid Build Coastguard Worker .n(n) 9883*4bdc9457SAndroid Build Coastguard Worker .k(k) 9884*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 9885*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 9886*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__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_IGEMM_MINMAX_4X16__AVX2_BROADCAST,a_offset)9892*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, a_offset) { 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 GemmMicrokernelTester() 9896*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9897*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9898*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9899*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9900*4bdc9457SAndroid Build Coastguard Worker .m(4) 9901*4bdc9457SAndroid Build Coastguard Worker .n(16) 9902*4bdc9457SAndroid Build Coastguard Worker .k(k) 9903*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9904*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 9905*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9906*4bdc9457SAndroid Build Coastguard Worker } 9907*4bdc9457SAndroid Build Coastguard Worker } 9908*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,zero)9909*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, zero) { 9910*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9911*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 9912*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 4; mz++) { 9913*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9914*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9915*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9916*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9917*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9918*4bdc9457SAndroid Build Coastguard Worker .m(4) 9919*4bdc9457SAndroid Build Coastguard Worker .n(16) 9920*4bdc9457SAndroid Build Coastguard Worker .k(k) 9921*4bdc9457SAndroid Build Coastguard Worker .ks(3) 9922*4bdc9457SAndroid Build Coastguard Worker .a_offset(23) 9923*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 9924*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9925*4bdc9457SAndroid Build Coastguard Worker } 9926*4bdc9457SAndroid Build Coastguard Worker } 9927*4bdc9457SAndroid Build Coastguard Worker } 9928*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,qmin)9929*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, qmin) { 9930*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9931*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9932*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9933*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9934*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9935*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9936*4bdc9457SAndroid Build Coastguard Worker .m(4) 9937*4bdc9457SAndroid Build Coastguard Worker .n(16) 9938*4bdc9457SAndroid Build Coastguard Worker .k(1) 9939*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 9940*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9941*4bdc9457SAndroid Build Coastguard Worker } 9942*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,qmax)9943*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, qmax) { 9944*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9945*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9946*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9947*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9948*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9949*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9950*4bdc9457SAndroid Build Coastguard Worker .m(4) 9951*4bdc9457SAndroid Build Coastguard Worker .n(16) 9952*4bdc9457SAndroid Build Coastguard Worker .k(1) 9953*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 9954*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9955*4bdc9457SAndroid Build Coastguard Worker } 9956*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST,strided_cm)9957*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_4X16__AVX2_BROADCAST, strided_cm) { 9958*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9959*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9960*4bdc9457SAndroid Build Coastguard Worker .mr(4) 9961*4bdc9457SAndroid Build Coastguard Worker .nr(16) 9962*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9963*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9964*4bdc9457SAndroid Build Coastguard Worker .m(4) 9965*4bdc9457SAndroid Build Coastguard Worker .n(16) 9966*4bdc9457SAndroid Build Coastguard Worker .k(1) 9967*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 9968*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9969*4bdc9457SAndroid Build Coastguard Worker } 9970*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 9971*4bdc9457SAndroid Build Coastguard Worker 9972*4bdc9457SAndroid Build Coastguard Worker 9973*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1)9974*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1) { 9975*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9976*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9977*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9978*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9979*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9980*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9981*4bdc9457SAndroid Build Coastguard Worker .m(5) 9982*4bdc9457SAndroid Build Coastguard Worker .n(8) 9983*4bdc9457SAndroid Build Coastguard Worker .k(1) 9984*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9985*4bdc9457SAndroid Build Coastguard Worker } 9986*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,strided_cn)9987*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, strided_cn) { 9988*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 9989*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 9990*4bdc9457SAndroid Build Coastguard Worker .mr(5) 9991*4bdc9457SAndroid Build Coastguard Worker .nr(8) 9992*4bdc9457SAndroid Build Coastguard Worker .kr(1) 9993*4bdc9457SAndroid Build Coastguard Worker .sr(1) 9994*4bdc9457SAndroid Build Coastguard Worker .m(5) 9995*4bdc9457SAndroid Build Coastguard Worker .n(8) 9996*4bdc9457SAndroid Build Coastguard Worker .k(1) 9997*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 9998*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 9999*4bdc9457SAndroid Build Coastguard Worker } 10000*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1_subtile)10001*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1_subtile) { 10002*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10003*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10004*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10005*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10006*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10007*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10008*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10009*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10010*4bdc9457SAndroid Build Coastguard Worker .m(m) 10011*4bdc9457SAndroid Build Coastguard Worker .n(n) 10012*4bdc9457SAndroid Build Coastguard Worker .k(1) 10013*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10014*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10015*4bdc9457SAndroid Build Coastguard Worker } 10016*4bdc9457SAndroid Build Coastguard Worker } 10017*4bdc9457SAndroid Build Coastguard Worker } 10018*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1_subtile_m)10019*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 10020*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10021*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10022*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10023*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10024*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10025*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10026*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10027*4bdc9457SAndroid Build Coastguard Worker .m(m) 10028*4bdc9457SAndroid Build Coastguard Worker .n(8) 10029*4bdc9457SAndroid Build Coastguard Worker .k(1) 10030*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10031*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10032*4bdc9457SAndroid Build Coastguard Worker } 10033*4bdc9457SAndroid Build Coastguard Worker } 10034*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,k_eq_1_subtile_n)10035*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 10036*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10037*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10038*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10039*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10040*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10041*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10042*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10043*4bdc9457SAndroid Build Coastguard Worker .m(5) 10044*4bdc9457SAndroid Build Coastguard Worker .n(n) 10045*4bdc9457SAndroid Build Coastguard Worker .k(1) 10046*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10047*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10048*4bdc9457SAndroid Build Coastguard Worker } 10049*4bdc9457SAndroid Build Coastguard Worker } 10050*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,k_gt_1)10051*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, k_gt_1) { 10052*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10053*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10054*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10055*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10056*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10057*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10058*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10059*4bdc9457SAndroid Build Coastguard Worker .m(5) 10060*4bdc9457SAndroid Build Coastguard Worker .n(8) 10061*4bdc9457SAndroid Build Coastguard Worker .k(k) 10062*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10063*4bdc9457SAndroid Build Coastguard Worker } 10064*4bdc9457SAndroid Build Coastguard Worker } 10065*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,k_gt_1_subtile)10066*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, k_gt_1_subtile) { 10067*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10068*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10069*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10070*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10071*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10072*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10073*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10074*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10075*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10076*4bdc9457SAndroid Build Coastguard Worker .m(m) 10077*4bdc9457SAndroid Build Coastguard Worker .n(n) 10078*4bdc9457SAndroid Build Coastguard Worker .k(k) 10079*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10080*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10081*4bdc9457SAndroid Build Coastguard Worker } 10082*4bdc9457SAndroid Build Coastguard Worker } 10083*4bdc9457SAndroid Build Coastguard Worker } 10084*4bdc9457SAndroid Build Coastguard Worker } 10085*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,n_gt_8)10086*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, n_gt_8) { 10087*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10088*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10089*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10090*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10091*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10092*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10093*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10094*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10095*4bdc9457SAndroid Build Coastguard Worker .m(5) 10096*4bdc9457SAndroid Build Coastguard Worker .n(n) 10097*4bdc9457SAndroid Build Coastguard Worker .k(k) 10098*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10099*4bdc9457SAndroid Build Coastguard Worker } 10100*4bdc9457SAndroid Build Coastguard Worker } 10101*4bdc9457SAndroid Build Coastguard Worker } 10102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,n_gt_8_strided_cn)10103*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 10104*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10105*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10106*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10107*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10108*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10109*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10110*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10111*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10112*4bdc9457SAndroid Build Coastguard Worker .m(5) 10113*4bdc9457SAndroid Build Coastguard Worker .n(n) 10114*4bdc9457SAndroid Build Coastguard Worker .k(k) 10115*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 10116*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10117*4bdc9457SAndroid Build Coastguard Worker } 10118*4bdc9457SAndroid Build Coastguard Worker } 10119*4bdc9457SAndroid Build Coastguard Worker } 10120*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,n_gt_8_subtile)10121*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, n_gt_8_subtile) { 10122*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10123*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10124*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10125*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10126*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10127*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10128*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10129*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10130*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10131*4bdc9457SAndroid Build Coastguard Worker .m(m) 10132*4bdc9457SAndroid Build Coastguard Worker .n(n) 10133*4bdc9457SAndroid Build Coastguard Worker .k(k) 10134*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10135*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10136*4bdc9457SAndroid Build Coastguard Worker } 10137*4bdc9457SAndroid Build Coastguard Worker } 10138*4bdc9457SAndroid Build Coastguard Worker } 10139*4bdc9457SAndroid Build Coastguard Worker } 10140*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,n_div_8)10141*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, n_div_8) { 10142*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10143*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10144*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10145*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10146*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10147*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10148*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10149*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10150*4bdc9457SAndroid Build Coastguard Worker .m(5) 10151*4bdc9457SAndroid Build Coastguard Worker .n(n) 10152*4bdc9457SAndroid Build Coastguard Worker .k(k) 10153*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10154*4bdc9457SAndroid Build Coastguard Worker } 10155*4bdc9457SAndroid Build Coastguard Worker } 10156*4bdc9457SAndroid Build Coastguard Worker } 10157*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,n_div_8_strided_cn)10158*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, n_div_8_strided_cn) { 10159*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10160*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10161*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10162*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10163*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10164*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10165*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10166*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10167*4bdc9457SAndroid Build Coastguard Worker .m(5) 10168*4bdc9457SAndroid Build Coastguard Worker .n(n) 10169*4bdc9457SAndroid Build Coastguard Worker .k(k) 10170*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 10171*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10172*4bdc9457SAndroid Build Coastguard Worker } 10173*4bdc9457SAndroid Build Coastguard Worker } 10174*4bdc9457SAndroid Build Coastguard Worker } 10175*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,n_div_8_subtile)10176*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, n_div_8_subtile) { 10177*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10178*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10179*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10180*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10181*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10182*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10183*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10184*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10185*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10186*4bdc9457SAndroid Build Coastguard Worker .m(m) 10187*4bdc9457SAndroid Build Coastguard Worker .n(n) 10188*4bdc9457SAndroid Build Coastguard Worker .k(k) 10189*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10190*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10191*4bdc9457SAndroid Build Coastguard Worker } 10192*4bdc9457SAndroid Build Coastguard Worker } 10193*4bdc9457SAndroid Build Coastguard Worker } 10194*4bdc9457SAndroid Build Coastguard Worker } 10195*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,small_kernel)10196*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, small_kernel) { 10197*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10198*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10199*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10200*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10201*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10202*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10203*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10204*4bdc9457SAndroid Build Coastguard Worker .m(5) 10205*4bdc9457SAndroid Build Coastguard Worker .n(8) 10206*4bdc9457SAndroid Build Coastguard Worker .k(k) 10207*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10208*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10209*4bdc9457SAndroid Build Coastguard Worker } 10210*4bdc9457SAndroid Build Coastguard Worker } 10211*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,small_kernel_subtile)10212*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, small_kernel_subtile) { 10213*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10214*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10215*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10216*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10217*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10218*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10219*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10220*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10221*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10222*4bdc9457SAndroid Build Coastguard Worker .m(m) 10223*4bdc9457SAndroid Build Coastguard Worker .n(n) 10224*4bdc9457SAndroid Build Coastguard Worker .k(k) 10225*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10226*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10227*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10228*4bdc9457SAndroid Build Coastguard Worker } 10229*4bdc9457SAndroid Build Coastguard Worker } 10230*4bdc9457SAndroid Build Coastguard Worker } 10231*4bdc9457SAndroid Build Coastguard Worker } 10232*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,n_gt_8_small_kernel)10233*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, n_gt_8_small_kernel) { 10234*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10235*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10236*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10237*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10238*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10239*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10240*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10241*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10242*4bdc9457SAndroid Build Coastguard Worker .m(5) 10243*4bdc9457SAndroid Build Coastguard Worker .n(n) 10244*4bdc9457SAndroid Build Coastguard Worker .k(k) 10245*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10246*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10247*4bdc9457SAndroid Build Coastguard Worker } 10248*4bdc9457SAndroid Build Coastguard Worker } 10249*4bdc9457SAndroid Build Coastguard Worker } 10250*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,n_div_8_small_kernel)10251*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, n_div_8_small_kernel) { 10252*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10253*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10254*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10255*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10256*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10257*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10258*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10259*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10260*4bdc9457SAndroid Build Coastguard Worker .m(5) 10261*4bdc9457SAndroid Build Coastguard Worker .n(n) 10262*4bdc9457SAndroid Build Coastguard Worker .k(k) 10263*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10264*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10265*4bdc9457SAndroid Build Coastguard Worker } 10266*4bdc9457SAndroid Build Coastguard Worker } 10267*4bdc9457SAndroid Build Coastguard Worker } 10268*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,strided_cm_subtile)10269*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, strided_cm_subtile) { 10270*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10271*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10272*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10273*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10274*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10275*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10276*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10277*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10278*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10279*4bdc9457SAndroid Build Coastguard Worker .m(m) 10280*4bdc9457SAndroid Build Coastguard Worker .n(n) 10281*4bdc9457SAndroid Build Coastguard Worker .k(k) 10282*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 10283*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10284*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10285*4bdc9457SAndroid Build Coastguard Worker } 10286*4bdc9457SAndroid Build Coastguard Worker } 10287*4bdc9457SAndroid Build Coastguard Worker } 10288*4bdc9457SAndroid Build Coastguard Worker } 10289*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,a_offset)10290*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, a_offset) { 10291*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10292*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10293*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10294*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10295*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10296*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10297*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10298*4bdc9457SAndroid Build Coastguard Worker .m(5) 10299*4bdc9457SAndroid Build Coastguard Worker .n(8) 10300*4bdc9457SAndroid Build Coastguard Worker .k(k) 10301*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10302*4bdc9457SAndroid Build Coastguard Worker .a_offset(29) 10303*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10304*4bdc9457SAndroid Build Coastguard Worker } 10305*4bdc9457SAndroid Build Coastguard Worker } 10306*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,zero)10307*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, zero) { 10308*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10309*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10310*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 5; mz++) { 10311*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10312*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10313*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10314*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10315*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10316*4bdc9457SAndroid Build Coastguard Worker .m(5) 10317*4bdc9457SAndroid Build Coastguard Worker .n(8) 10318*4bdc9457SAndroid Build Coastguard Worker .k(k) 10319*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10320*4bdc9457SAndroid Build Coastguard Worker .a_offset(29) 10321*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 10322*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10323*4bdc9457SAndroid Build Coastguard Worker } 10324*4bdc9457SAndroid Build Coastguard Worker } 10325*4bdc9457SAndroid Build Coastguard Worker } 10326*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,qmin)10327*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, qmin) { 10328*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10329*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10330*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10331*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10332*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10333*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10334*4bdc9457SAndroid Build Coastguard Worker .m(5) 10335*4bdc9457SAndroid Build Coastguard Worker .n(8) 10336*4bdc9457SAndroid Build Coastguard Worker .k(1) 10337*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 10338*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10339*4bdc9457SAndroid Build Coastguard Worker } 10340*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,qmax)10341*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, qmax) { 10342*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10343*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10344*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10345*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10346*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10347*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10348*4bdc9457SAndroid Build Coastguard Worker .m(5) 10349*4bdc9457SAndroid Build Coastguard Worker .n(8) 10350*4bdc9457SAndroid Build Coastguard Worker .k(1) 10351*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 10352*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10353*4bdc9457SAndroid Build Coastguard Worker } 10354*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST,strided_cm)10355*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X8__AVX2_BROADCAST, strided_cm) { 10356*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10357*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10358*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10359*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10360*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10361*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10362*4bdc9457SAndroid Build Coastguard Worker .m(5) 10363*4bdc9457SAndroid Build Coastguard Worker .n(8) 10364*4bdc9457SAndroid Build Coastguard Worker .k(1) 10365*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 10366*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10367*4bdc9457SAndroid Build Coastguard Worker } 10368*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 10369*4bdc9457SAndroid Build Coastguard Worker 10370*4bdc9457SAndroid Build Coastguard Worker 10371*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1)10372*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1) { 10373*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10374*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10375*4bdc9457SAndroid Build Coastguard Worker .mr(5) 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(5) 10380*4bdc9457SAndroid Build Coastguard Worker .n(16) 10381*4bdc9457SAndroid Build Coastguard Worker .k(1) 10382*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10383*4bdc9457SAndroid Build Coastguard Worker } 10384*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,strided_cn)10385*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, strided_cn) { 10386*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10387*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10388*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10389*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10390*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10391*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10392*4bdc9457SAndroid Build Coastguard Worker .m(5) 10393*4bdc9457SAndroid Build Coastguard Worker .n(16) 10394*4bdc9457SAndroid Build Coastguard Worker .k(1) 10395*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10396*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10397*4bdc9457SAndroid Build Coastguard Worker } 10398*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1_subtile)10399*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1_subtile) { 10400*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10401*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10402*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10403*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10404*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10405*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10406*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10407*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10408*4bdc9457SAndroid Build Coastguard Worker .m(m) 10409*4bdc9457SAndroid Build Coastguard Worker .n(n) 10410*4bdc9457SAndroid Build Coastguard Worker .k(1) 10411*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10412*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10413*4bdc9457SAndroid Build Coastguard Worker } 10414*4bdc9457SAndroid Build Coastguard Worker } 10415*4bdc9457SAndroid Build Coastguard Worker } 10416*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1_subtile_m)10417*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1_subtile_m) { 10418*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10419*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10420*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10421*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10422*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10423*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10424*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10425*4bdc9457SAndroid Build Coastguard Worker .m(m) 10426*4bdc9457SAndroid Build Coastguard Worker .n(16) 10427*4bdc9457SAndroid Build Coastguard Worker .k(1) 10428*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10429*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10430*4bdc9457SAndroid Build Coastguard Worker } 10431*4bdc9457SAndroid Build Coastguard Worker } 10432*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,k_eq_1_subtile_n)10433*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, k_eq_1_subtile_n) { 10434*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10435*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10436*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10437*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10438*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10439*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10440*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10441*4bdc9457SAndroid Build Coastguard Worker .m(5) 10442*4bdc9457SAndroid Build Coastguard Worker .n(n) 10443*4bdc9457SAndroid Build Coastguard Worker .k(1) 10444*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10445*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10446*4bdc9457SAndroid Build Coastguard Worker } 10447*4bdc9457SAndroid Build Coastguard Worker } 10448*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,k_gt_1)10449*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, k_gt_1) { 10450*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10451*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10452*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10453*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10454*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10455*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10456*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10457*4bdc9457SAndroid Build Coastguard Worker .m(5) 10458*4bdc9457SAndroid Build Coastguard Worker .n(16) 10459*4bdc9457SAndroid Build Coastguard Worker .k(k) 10460*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10461*4bdc9457SAndroid Build Coastguard Worker } 10462*4bdc9457SAndroid Build Coastguard Worker } 10463*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,k_gt_1_subtile)10464*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, k_gt_1_subtile) { 10465*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10466*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10467*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10468*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10469*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10470*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10471*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10472*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10473*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10474*4bdc9457SAndroid Build Coastguard Worker .m(m) 10475*4bdc9457SAndroid Build Coastguard Worker .n(n) 10476*4bdc9457SAndroid Build Coastguard Worker .k(k) 10477*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10478*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10479*4bdc9457SAndroid Build Coastguard Worker } 10480*4bdc9457SAndroid Build Coastguard Worker } 10481*4bdc9457SAndroid Build Coastguard Worker } 10482*4bdc9457SAndroid Build Coastguard Worker } 10483*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,n_gt_16)10484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, n_gt_16) { 10485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10486*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10487*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10488*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10489*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10490*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10491*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10492*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10493*4bdc9457SAndroid Build Coastguard Worker .m(5) 10494*4bdc9457SAndroid Build Coastguard Worker .n(n) 10495*4bdc9457SAndroid Build Coastguard Worker .k(k) 10496*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10497*4bdc9457SAndroid Build Coastguard Worker } 10498*4bdc9457SAndroid Build Coastguard Worker } 10499*4bdc9457SAndroid Build Coastguard Worker } 10500*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,n_gt_16_strided_cn)10501*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, n_gt_16_strided_cn) { 10502*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10503*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10504*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10505*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10506*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10507*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10508*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10509*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10510*4bdc9457SAndroid Build Coastguard Worker .m(5) 10511*4bdc9457SAndroid Build Coastguard Worker .n(n) 10512*4bdc9457SAndroid Build Coastguard Worker .k(k) 10513*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10514*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10515*4bdc9457SAndroid Build Coastguard Worker } 10516*4bdc9457SAndroid Build Coastguard Worker } 10517*4bdc9457SAndroid Build Coastguard Worker } 10518*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,n_gt_16_subtile)10519*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, n_gt_16_subtile) { 10520*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10521*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10522*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10523*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10524*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10525*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10526*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10527*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10528*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10529*4bdc9457SAndroid Build Coastguard Worker .m(m) 10530*4bdc9457SAndroid Build Coastguard Worker .n(n) 10531*4bdc9457SAndroid Build Coastguard Worker .k(k) 10532*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10533*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10534*4bdc9457SAndroid Build Coastguard Worker } 10535*4bdc9457SAndroid Build Coastguard Worker } 10536*4bdc9457SAndroid Build Coastguard Worker } 10537*4bdc9457SAndroid Build Coastguard Worker } 10538*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,n_div_16)10539*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, n_div_16) { 10540*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10541*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10542*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10543*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10544*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10545*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10546*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10547*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10548*4bdc9457SAndroid Build Coastguard Worker .m(5) 10549*4bdc9457SAndroid Build Coastguard Worker .n(n) 10550*4bdc9457SAndroid Build Coastguard Worker .k(k) 10551*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10552*4bdc9457SAndroid Build Coastguard Worker } 10553*4bdc9457SAndroid Build Coastguard Worker } 10554*4bdc9457SAndroid Build Coastguard Worker } 10555*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,n_div_16_strided_cn)10556*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, n_div_16_strided_cn) { 10557*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10558*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10559*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10560*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10561*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10562*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10563*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10564*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10565*4bdc9457SAndroid Build Coastguard Worker .m(5) 10566*4bdc9457SAndroid Build Coastguard Worker .n(n) 10567*4bdc9457SAndroid Build Coastguard Worker .k(k) 10568*4bdc9457SAndroid Build Coastguard Worker .cn_stride(19) 10569*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10570*4bdc9457SAndroid Build Coastguard Worker } 10571*4bdc9457SAndroid Build Coastguard Worker } 10572*4bdc9457SAndroid Build Coastguard Worker } 10573*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,n_div_16_subtile)10574*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, n_div_16_subtile) { 10575*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10576*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10577*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10578*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10579*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10580*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10581*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10582*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10583*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10584*4bdc9457SAndroid Build Coastguard Worker .m(m) 10585*4bdc9457SAndroid Build Coastguard Worker .n(n) 10586*4bdc9457SAndroid Build Coastguard Worker .k(k) 10587*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10588*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10589*4bdc9457SAndroid Build Coastguard Worker } 10590*4bdc9457SAndroid Build Coastguard Worker } 10591*4bdc9457SAndroid Build Coastguard Worker } 10592*4bdc9457SAndroid Build Coastguard Worker } 10593*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,small_kernel)10594*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, small_kernel) { 10595*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10596*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10597*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10598*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10599*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10600*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10601*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10602*4bdc9457SAndroid Build Coastguard Worker .m(5) 10603*4bdc9457SAndroid Build Coastguard Worker .n(16) 10604*4bdc9457SAndroid Build Coastguard Worker .k(k) 10605*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10606*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10607*4bdc9457SAndroid Build Coastguard Worker } 10608*4bdc9457SAndroid Build Coastguard Worker } 10609*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,small_kernel_subtile)10610*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, small_kernel_subtile) { 10611*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10612*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10613*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10614*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10615*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10616*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10617*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10618*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10619*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10620*4bdc9457SAndroid Build Coastguard Worker .m(m) 10621*4bdc9457SAndroid Build Coastguard Worker .n(n) 10622*4bdc9457SAndroid Build Coastguard Worker .k(k) 10623*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10624*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10625*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10626*4bdc9457SAndroid Build Coastguard Worker } 10627*4bdc9457SAndroid Build Coastguard Worker } 10628*4bdc9457SAndroid Build Coastguard Worker } 10629*4bdc9457SAndroid Build Coastguard Worker } 10630*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,n_gt_16_small_kernel)10631*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, n_gt_16_small_kernel) { 10632*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10633*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 17; n < 32; n++) { 10634*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10635*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10636*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10637*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10638*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10639*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10640*4bdc9457SAndroid Build Coastguard Worker .m(5) 10641*4bdc9457SAndroid Build Coastguard Worker .n(n) 10642*4bdc9457SAndroid Build Coastguard Worker .k(k) 10643*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10644*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10645*4bdc9457SAndroid Build Coastguard Worker } 10646*4bdc9457SAndroid Build Coastguard Worker } 10647*4bdc9457SAndroid Build Coastguard Worker } 10648*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,n_div_16_small_kernel)10649*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, n_div_16_small_kernel) { 10650*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10651*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 32; n <= 48; n += 16) { 10652*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10653*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10654*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10655*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10656*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10657*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10658*4bdc9457SAndroid Build Coastguard Worker .m(5) 10659*4bdc9457SAndroid Build Coastguard Worker .n(n) 10660*4bdc9457SAndroid Build Coastguard Worker .k(k) 10661*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10662*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10663*4bdc9457SAndroid Build Coastguard Worker } 10664*4bdc9457SAndroid Build Coastguard Worker } 10665*4bdc9457SAndroid Build Coastguard Worker } 10666*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,strided_cm_subtile)10667*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, strided_cm_subtile) { 10668*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10669*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10670*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 16; n++) { 10671*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 5; m++) { 10672*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10673*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10674*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10675*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10676*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10677*4bdc9457SAndroid Build Coastguard Worker .m(m) 10678*4bdc9457SAndroid Build Coastguard Worker .n(n) 10679*4bdc9457SAndroid Build Coastguard Worker .k(k) 10680*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 10681*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10682*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10683*4bdc9457SAndroid Build Coastguard Worker } 10684*4bdc9457SAndroid Build Coastguard Worker } 10685*4bdc9457SAndroid Build Coastguard Worker } 10686*4bdc9457SAndroid Build Coastguard Worker } 10687*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,a_offset)10688*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, a_offset) { 10689*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10690*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10691*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10692*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10693*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10694*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10695*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10696*4bdc9457SAndroid Build Coastguard Worker .m(5) 10697*4bdc9457SAndroid Build Coastguard Worker .n(16) 10698*4bdc9457SAndroid Build Coastguard Worker .k(k) 10699*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10700*4bdc9457SAndroid Build Coastguard Worker .a_offset(29) 10701*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10702*4bdc9457SAndroid Build Coastguard Worker } 10703*4bdc9457SAndroid Build Coastguard Worker } 10704*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,zero)10705*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, zero) { 10706*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10707*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10708*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 5; mz++) { 10709*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10710*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10711*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10712*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10713*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10714*4bdc9457SAndroid Build Coastguard Worker .m(5) 10715*4bdc9457SAndroid Build Coastguard Worker .n(16) 10716*4bdc9457SAndroid Build Coastguard Worker .k(k) 10717*4bdc9457SAndroid Build Coastguard Worker .ks(3) 10718*4bdc9457SAndroid Build Coastguard Worker .a_offset(29) 10719*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 10720*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__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_IGEMM_MINMAX_5X16__AVX2_BROADCAST,qmin)10725*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, qmin) { 10726*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10727*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10728*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10729*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10730*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10731*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10732*4bdc9457SAndroid Build Coastguard Worker .m(5) 10733*4bdc9457SAndroid Build Coastguard Worker .n(16) 10734*4bdc9457SAndroid Build Coastguard Worker .k(1) 10735*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 10736*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10737*4bdc9457SAndroid Build Coastguard Worker } 10738*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,qmax)10739*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, qmax) { 10740*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10741*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10742*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10743*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10744*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10745*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10746*4bdc9457SAndroid Build Coastguard Worker .m(5) 10747*4bdc9457SAndroid Build Coastguard Worker .n(16) 10748*4bdc9457SAndroid Build Coastguard Worker .k(1) 10749*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 10750*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10751*4bdc9457SAndroid Build Coastguard Worker } 10752*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST,strided_cm)10753*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_5X16__AVX2_BROADCAST, strided_cm) { 10754*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10755*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10756*4bdc9457SAndroid Build Coastguard Worker .mr(5) 10757*4bdc9457SAndroid Build Coastguard Worker .nr(16) 10758*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10759*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10760*4bdc9457SAndroid Build Coastguard Worker .m(5) 10761*4bdc9457SAndroid Build Coastguard Worker .n(16) 10762*4bdc9457SAndroid Build Coastguard Worker .k(1) 10763*4bdc9457SAndroid Build Coastguard Worker .cm_stride(19) 10764*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10765*4bdc9457SAndroid Build Coastguard Worker } 10766*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 10767*4bdc9457SAndroid Build Coastguard Worker 10768*4bdc9457SAndroid Build Coastguard Worker 10769*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1)10770*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1) { 10771*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10772*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10773*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10774*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10775*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10776*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10777*4bdc9457SAndroid Build Coastguard Worker .m(6) 10778*4bdc9457SAndroid Build Coastguard Worker .n(8) 10779*4bdc9457SAndroid Build Coastguard Worker .k(1) 10780*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10781*4bdc9457SAndroid Build Coastguard Worker } 10782*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,strided_cn)10783*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, strided_cn) { 10784*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10785*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10786*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10787*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10788*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10789*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10790*4bdc9457SAndroid Build Coastguard Worker .m(6) 10791*4bdc9457SAndroid Build Coastguard Worker .n(8) 10792*4bdc9457SAndroid Build Coastguard Worker .k(1) 10793*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 10794*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10795*4bdc9457SAndroid Build Coastguard Worker } 10796*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1_subtile)10797*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1_subtile) { 10798*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10799*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10800*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10801*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10802*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10803*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10804*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10805*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10806*4bdc9457SAndroid Build Coastguard Worker .m(m) 10807*4bdc9457SAndroid Build Coastguard Worker .n(n) 10808*4bdc9457SAndroid Build Coastguard Worker .k(1) 10809*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10810*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10811*4bdc9457SAndroid Build Coastguard Worker } 10812*4bdc9457SAndroid Build Coastguard Worker } 10813*4bdc9457SAndroid Build Coastguard Worker } 10814*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1_subtile_m)10815*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 10816*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10817*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10818*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10819*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10820*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10821*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10822*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10823*4bdc9457SAndroid Build Coastguard Worker .m(m) 10824*4bdc9457SAndroid Build Coastguard Worker .n(8) 10825*4bdc9457SAndroid Build Coastguard Worker .k(1) 10826*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10827*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10828*4bdc9457SAndroid Build Coastguard Worker } 10829*4bdc9457SAndroid Build Coastguard Worker } 10830*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,k_eq_1_subtile_n)10831*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 10832*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10833*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10834*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10835*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10836*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10837*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10838*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10839*4bdc9457SAndroid Build Coastguard Worker .m(6) 10840*4bdc9457SAndroid Build Coastguard Worker .n(n) 10841*4bdc9457SAndroid Build Coastguard Worker .k(1) 10842*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10843*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10844*4bdc9457SAndroid Build Coastguard Worker } 10845*4bdc9457SAndroid Build Coastguard Worker } 10846*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,k_gt_1)10847*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, k_gt_1) { 10848*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10849*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10850*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10851*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10852*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10853*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10854*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10855*4bdc9457SAndroid Build Coastguard Worker .m(6) 10856*4bdc9457SAndroid Build Coastguard Worker .n(8) 10857*4bdc9457SAndroid Build Coastguard Worker .k(k) 10858*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10859*4bdc9457SAndroid Build Coastguard Worker } 10860*4bdc9457SAndroid Build Coastguard Worker } 10861*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,k_gt_1_subtile)10862*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, k_gt_1_subtile) { 10863*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10864*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 10865*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 10866*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10867*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10868*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10869*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10870*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10871*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10872*4bdc9457SAndroid Build Coastguard Worker .m(m) 10873*4bdc9457SAndroid Build Coastguard Worker .n(n) 10874*4bdc9457SAndroid Build Coastguard Worker .k(k) 10875*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10876*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10877*4bdc9457SAndroid Build Coastguard Worker } 10878*4bdc9457SAndroid Build Coastguard Worker } 10879*4bdc9457SAndroid Build Coastguard Worker } 10880*4bdc9457SAndroid Build Coastguard Worker } 10881*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,n_gt_8)10882*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, n_gt_8) { 10883*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10884*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10885*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10886*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10887*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10888*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10889*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10890*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10891*4bdc9457SAndroid Build Coastguard Worker .m(6) 10892*4bdc9457SAndroid Build Coastguard Worker .n(n) 10893*4bdc9457SAndroid Build Coastguard Worker .k(k) 10894*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10895*4bdc9457SAndroid Build Coastguard Worker } 10896*4bdc9457SAndroid Build Coastguard Worker } 10897*4bdc9457SAndroid Build Coastguard Worker } 10898*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,n_gt_8_strided_cn)10899*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 10900*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10901*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10902*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10903*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10904*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10905*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10906*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10907*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10908*4bdc9457SAndroid Build Coastguard Worker .m(6) 10909*4bdc9457SAndroid Build Coastguard Worker .n(n) 10910*4bdc9457SAndroid Build Coastguard Worker .k(k) 10911*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 10912*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10913*4bdc9457SAndroid Build Coastguard Worker } 10914*4bdc9457SAndroid Build Coastguard Worker } 10915*4bdc9457SAndroid Build Coastguard Worker } 10916*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,n_gt_8_subtile)10917*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, n_gt_8_subtile) { 10918*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10919*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 10920*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10921*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10922*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10923*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10924*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10925*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10926*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10927*4bdc9457SAndroid Build Coastguard Worker .m(m) 10928*4bdc9457SAndroid Build Coastguard Worker .n(n) 10929*4bdc9457SAndroid Build Coastguard Worker .k(k) 10930*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10931*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10932*4bdc9457SAndroid Build Coastguard Worker } 10933*4bdc9457SAndroid Build Coastguard Worker } 10934*4bdc9457SAndroid Build Coastguard Worker } 10935*4bdc9457SAndroid Build Coastguard Worker } 10936*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,n_div_8)10937*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, n_div_8) { 10938*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10939*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10940*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10941*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10942*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10943*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10944*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10945*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10946*4bdc9457SAndroid Build Coastguard Worker .m(6) 10947*4bdc9457SAndroid Build Coastguard Worker .n(n) 10948*4bdc9457SAndroid Build Coastguard Worker .k(k) 10949*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10950*4bdc9457SAndroid Build Coastguard Worker } 10951*4bdc9457SAndroid Build Coastguard Worker } 10952*4bdc9457SAndroid Build Coastguard Worker } 10953*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,n_div_8_strided_cn)10954*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, n_div_8_strided_cn) { 10955*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10956*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10957*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10958*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10959*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10960*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10961*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10962*4bdc9457SAndroid Build Coastguard Worker .sr(1) 10963*4bdc9457SAndroid Build Coastguard Worker .m(6) 10964*4bdc9457SAndroid Build Coastguard Worker .n(n) 10965*4bdc9457SAndroid Build Coastguard Worker .k(k) 10966*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 10967*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10968*4bdc9457SAndroid Build Coastguard Worker } 10969*4bdc9457SAndroid Build Coastguard Worker } 10970*4bdc9457SAndroid Build Coastguard Worker } 10971*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,n_div_8_subtile)10972*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, n_div_8_subtile) { 10973*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10974*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 10975*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10976*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 10977*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10978*4bdc9457SAndroid Build Coastguard Worker .mr(6) 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(m) 10983*4bdc9457SAndroid Build Coastguard Worker .n(n) 10984*4bdc9457SAndroid Build Coastguard Worker .k(k) 10985*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 10986*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 10987*4bdc9457SAndroid Build Coastguard Worker } 10988*4bdc9457SAndroid Build Coastguard Worker } 10989*4bdc9457SAndroid Build Coastguard Worker } 10990*4bdc9457SAndroid Build Coastguard Worker } 10991*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,small_kernel)10992*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, small_kernel) { 10993*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 10994*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 10995*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 10996*4bdc9457SAndroid Build Coastguard Worker .mr(6) 10997*4bdc9457SAndroid Build Coastguard Worker .nr(8) 10998*4bdc9457SAndroid Build Coastguard Worker .kr(1) 10999*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11000*4bdc9457SAndroid Build Coastguard Worker .m(6) 11001*4bdc9457SAndroid Build Coastguard Worker .n(8) 11002*4bdc9457SAndroid Build Coastguard Worker .k(k) 11003*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11004*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11005*4bdc9457SAndroid Build Coastguard Worker } 11006*4bdc9457SAndroid Build Coastguard Worker } 11007*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,small_kernel_subtile)11008*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, small_kernel_subtile) { 11009*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11010*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11011*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11012*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 11013*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11014*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11015*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11016*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11017*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11018*4bdc9457SAndroid Build Coastguard Worker .m(m) 11019*4bdc9457SAndroid Build Coastguard Worker .n(n) 11020*4bdc9457SAndroid Build Coastguard Worker .k(k) 11021*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11022*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11023*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11024*4bdc9457SAndroid Build Coastguard Worker } 11025*4bdc9457SAndroid Build Coastguard Worker } 11026*4bdc9457SAndroid Build Coastguard Worker } 11027*4bdc9457SAndroid Build Coastguard Worker } 11028*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,n_gt_8_small_kernel)11029*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, n_gt_8_small_kernel) { 11030*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11031*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11032*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11033*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11034*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11035*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11036*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11037*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11038*4bdc9457SAndroid Build Coastguard Worker .m(6) 11039*4bdc9457SAndroid Build Coastguard Worker .n(n) 11040*4bdc9457SAndroid Build Coastguard Worker .k(k) 11041*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11042*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11043*4bdc9457SAndroid Build Coastguard Worker } 11044*4bdc9457SAndroid Build Coastguard Worker } 11045*4bdc9457SAndroid Build Coastguard Worker } 11046*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,n_div_8_small_kernel)11047*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, n_div_8_small_kernel) { 11048*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11049*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11050*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11051*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11052*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11053*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11054*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11055*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11056*4bdc9457SAndroid Build Coastguard Worker .m(6) 11057*4bdc9457SAndroid Build Coastguard Worker .n(n) 11058*4bdc9457SAndroid Build Coastguard Worker .k(k) 11059*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11060*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11061*4bdc9457SAndroid Build Coastguard Worker } 11062*4bdc9457SAndroid Build Coastguard Worker } 11063*4bdc9457SAndroid Build Coastguard Worker } 11064*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,strided_cm_subtile)11065*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, strided_cm_subtile) { 11066*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11067*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11068*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11069*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 6; m++) { 11070*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11071*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11072*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11073*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11074*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11075*4bdc9457SAndroid Build Coastguard Worker .m(m) 11076*4bdc9457SAndroid Build Coastguard Worker .n(n) 11077*4bdc9457SAndroid Build Coastguard Worker .k(k) 11078*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 11079*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11080*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11081*4bdc9457SAndroid Build Coastguard Worker } 11082*4bdc9457SAndroid Build Coastguard Worker } 11083*4bdc9457SAndroid Build Coastguard Worker } 11084*4bdc9457SAndroid Build Coastguard Worker } 11085*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,a_offset)11086*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, a_offset) { 11087*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11088*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11089*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11090*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11091*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11092*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11093*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11094*4bdc9457SAndroid Build Coastguard Worker .m(6) 11095*4bdc9457SAndroid Build Coastguard Worker .n(8) 11096*4bdc9457SAndroid Build Coastguard Worker .k(k) 11097*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11098*4bdc9457SAndroid Build Coastguard Worker .a_offset(37) 11099*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11100*4bdc9457SAndroid Build Coastguard Worker } 11101*4bdc9457SAndroid Build Coastguard Worker } 11102*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,zero)11103*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, zero) { 11104*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11105*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11106*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 6; mz++) { 11107*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11108*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11109*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11110*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11111*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11112*4bdc9457SAndroid Build Coastguard Worker .m(6) 11113*4bdc9457SAndroid Build Coastguard Worker .n(8) 11114*4bdc9457SAndroid Build Coastguard Worker .k(k) 11115*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11116*4bdc9457SAndroid Build Coastguard Worker .a_offset(37) 11117*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 11118*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11119*4bdc9457SAndroid Build Coastguard Worker } 11120*4bdc9457SAndroid Build Coastguard Worker } 11121*4bdc9457SAndroid Build Coastguard Worker } 11122*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,qmin)11123*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, qmin) { 11124*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11125*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11126*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11127*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11128*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11129*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11130*4bdc9457SAndroid Build Coastguard Worker .m(6) 11131*4bdc9457SAndroid Build Coastguard Worker .n(8) 11132*4bdc9457SAndroid Build Coastguard Worker .k(1) 11133*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 11134*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11135*4bdc9457SAndroid Build Coastguard Worker } 11136*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,qmax)11137*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, qmax) { 11138*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11139*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11140*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11141*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11142*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11143*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11144*4bdc9457SAndroid Build Coastguard Worker .m(6) 11145*4bdc9457SAndroid Build Coastguard Worker .n(8) 11146*4bdc9457SAndroid Build Coastguard Worker .k(1) 11147*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 11148*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11149*4bdc9457SAndroid Build Coastguard Worker } 11150*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST,strided_cm)11151*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_6X8__AVX2_BROADCAST, strided_cm) { 11152*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11153*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11154*4bdc9457SAndroid Build Coastguard Worker .mr(6) 11155*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11156*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11157*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11158*4bdc9457SAndroid Build Coastguard Worker .m(6) 11159*4bdc9457SAndroid Build Coastguard Worker .n(8) 11160*4bdc9457SAndroid Build Coastguard Worker .k(1) 11161*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 11162*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11163*4bdc9457SAndroid Build Coastguard Worker } 11164*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 11165*4bdc9457SAndroid Build Coastguard Worker 11166*4bdc9457SAndroid Build Coastguard Worker 11167*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64 TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1)11168*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1) { 11169*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11170*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11171*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11172*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11173*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11174*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11175*4bdc9457SAndroid Build Coastguard Worker .m(7) 11176*4bdc9457SAndroid Build Coastguard Worker .n(8) 11177*4bdc9457SAndroid Build Coastguard Worker .k(1) 11178*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11179*4bdc9457SAndroid Build Coastguard Worker } 11180*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,strided_cn)11181*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, strided_cn) { 11182*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11183*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11184*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11185*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11186*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11187*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11188*4bdc9457SAndroid Build Coastguard Worker .m(7) 11189*4bdc9457SAndroid Build Coastguard Worker .n(8) 11190*4bdc9457SAndroid Build Coastguard Worker .k(1) 11191*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 11192*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11193*4bdc9457SAndroid Build Coastguard Worker } 11194*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1_subtile)11195*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1_subtile) { 11196*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11197*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11198*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 11199*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11200*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11201*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11202*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11203*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11204*4bdc9457SAndroid Build Coastguard Worker .m(m) 11205*4bdc9457SAndroid Build Coastguard Worker .n(n) 11206*4bdc9457SAndroid Build Coastguard Worker .k(1) 11207*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11208*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11209*4bdc9457SAndroid Build Coastguard Worker } 11210*4bdc9457SAndroid Build Coastguard Worker } 11211*4bdc9457SAndroid Build Coastguard Worker } 11212*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1_subtile_m)11213*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1_subtile_m) { 11214*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11215*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 11216*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11217*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11218*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11219*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11220*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11221*4bdc9457SAndroid Build Coastguard Worker .m(m) 11222*4bdc9457SAndroid Build Coastguard Worker .n(8) 11223*4bdc9457SAndroid Build Coastguard Worker .k(1) 11224*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11225*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11226*4bdc9457SAndroid Build Coastguard Worker } 11227*4bdc9457SAndroid Build Coastguard Worker } 11228*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,k_eq_1_subtile_n)11229*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, k_eq_1_subtile_n) { 11230*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11231*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11232*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11233*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11234*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11235*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11236*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11237*4bdc9457SAndroid Build Coastguard Worker .m(7) 11238*4bdc9457SAndroid Build Coastguard Worker .n(n) 11239*4bdc9457SAndroid Build Coastguard Worker .k(1) 11240*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11241*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11242*4bdc9457SAndroid Build Coastguard Worker } 11243*4bdc9457SAndroid Build Coastguard Worker } 11244*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,k_gt_1)11245*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, k_gt_1) { 11246*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11247*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11248*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11249*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11250*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11251*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11252*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11253*4bdc9457SAndroid Build Coastguard Worker .m(7) 11254*4bdc9457SAndroid Build Coastguard Worker .n(8) 11255*4bdc9457SAndroid Build Coastguard Worker .k(k) 11256*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11257*4bdc9457SAndroid Build Coastguard Worker } 11258*4bdc9457SAndroid Build Coastguard Worker } 11259*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,k_gt_1_subtile)11260*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, k_gt_1_subtile) { 11261*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11262*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 2; k < 10; k++) { 11263*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11264*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 11265*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11266*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11267*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11268*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11269*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11270*4bdc9457SAndroid Build Coastguard Worker .m(m) 11271*4bdc9457SAndroid Build Coastguard Worker .n(n) 11272*4bdc9457SAndroid Build Coastguard Worker .k(k) 11273*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11274*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11275*4bdc9457SAndroid Build Coastguard Worker } 11276*4bdc9457SAndroid Build Coastguard Worker } 11277*4bdc9457SAndroid Build Coastguard Worker } 11278*4bdc9457SAndroid Build Coastguard Worker } 11279*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,n_gt_8)11280*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, n_gt_8) { 11281*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11282*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11283*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11284*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11285*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11286*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11287*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11288*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11289*4bdc9457SAndroid Build Coastguard Worker .m(7) 11290*4bdc9457SAndroid Build Coastguard Worker .n(n) 11291*4bdc9457SAndroid Build Coastguard Worker .k(k) 11292*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11293*4bdc9457SAndroid Build Coastguard Worker } 11294*4bdc9457SAndroid Build Coastguard Worker } 11295*4bdc9457SAndroid Build Coastguard Worker } 11296*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,n_gt_8_strided_cn)11297*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, n_gt_8_strided_cn) { 11298*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11299*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11300*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11301*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11302*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11303*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11304*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11305*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11306*4bdc9457SAndroid Build Coastguard Worker .m(7) 11307*4bdc9457SAndroid Build Coastguard Worker .n(n) 11308*4bdc9457SAndroid Build Coastguard Worker .k(k) 11309*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 11310*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11311*4bdc9457SAndroid Build Coastguard Worker } 11312*4bdc9457SAndroid Build Coastguard Worker } 11313*4bdc9457SAndroid Build Coastguard Worker } 11314*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,n_gt_8_subtile)11315*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, n_gt_8_subtile) { 11316*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11317*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11318*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11319*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 11320*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11321*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11322*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11323*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11324*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11325*4bdc9457SAndroid Build Coastguard Worker .m(m) 11326*4bdc9457SAndroid Build Coastguard Worker .n(n) 11327*4bdc9457SAndroid Build Coastguard Worker .k(k) 11328*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11329*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11330*4bdc9457SAndroid Build Coastguard Worker } 11331*4bdc9457SAndroid Build Coastguard Worker } 11332*4bdc9457SAndroid Build Coastguard Worker } 11333*4bdc9457SAndroid Build Coastguard Worker } 11334*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,n_div_8)11335*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, n_div_8) { 11336*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11337*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11338*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11339*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11340*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11341*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11342*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11343*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11344*4bdc9457SAndroid Build Coastguard Worker .m(7) 11345*4bdc9457SAndroid Build Coastguard Worker .n(n) 11346*4bdc9457SAndroid Build Coastguard Worker .k(k) 11347*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11348*4bdc9457SAndroid Build Coastguard Worker } 11349*4bdc9457SAndroid Build Coastguard Worker } 11350*4bdc9457SAndroid Build Coastguard Worker } 11351*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,n_div_8_strided_cn)11352*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, n_div_8_strided_cn) { 11353*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11354*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11355*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11356*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11357*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11358*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11359*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11360*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11361*4bdc9457SAndroid Build Coastguard Worker .m(7) 11362*4bdc9457SAndroid Build Coastguard Worker .n(n) 11363*4bdc9457SAndroid Build Coastguard Worker .k(k) 11364*4bdc9457SAndroid Build Coastguard Worker .cn_stride(11) 11365*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11366*4bdc9457SAndroid Build Coastguard Worker } 11367*4bdc9457SAndroid Build Coastguard Worker } 11368*4bdc9457SAndroid Build Coastguard Worker } 11369*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,n_div_8_subtile)11370*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, n_div_8_subtile) { 11371*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11372*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11373*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11374*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 11375*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11376*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11377*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11378*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11379*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11380*4bdc9457SAndroid Build Coastguard Worker .m(m) 11381*4bdc9457SAndroid Build Coastguard Worker .n(n) 11382*4bdc9457SAndroid Build Coastguard Worker .k(k) 11383*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11384*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11385*4bdc9457SAndroid Build Coastguard Worker } 11386*4bdc9457SAndroid Build Coastguard Worker } 11387*4bdc9457SAndroid Build Coastguard Worker } 11388*4bdc9457SAndroid Build Coastguard Worker } 11389*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,small_kernel)11390*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, small_kernel) { 11391*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11392*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11393*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11394*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11395*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11396*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11397*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11398*4bdc9457SAndroid Build Coastguard Worker .m(7) 11399*4bdc9457SAndroid Build Coastguard Worker .n(8) 11400*4bdc9457SAndroid Build Coastguard Worker .k(k) 11401*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11402*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11403*4bdc9457SAndroid Build Coastguard Worker } 11404*4bdc9457SAndroid Build Coastguard Worker } 11405*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,small_kernel_subtile)11406*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, small_kernel_subtile) { 11407*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11408*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11409*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11410*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 11411*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11412*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11413*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11414*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11415*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11416*4bdc9457SAndroid Build Coastguard Worker .m(m) 11417*4bdc9457SAndroid Build Coastguard Worker .n(n) 11418*4bdc9457SAndroid Build Coastguard Worker .k(k) 11419*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11420*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11421*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11422*4bdc9457SAndroid Build Coastguard Worker } 11423*4bdc9457SAndroid Build Coastguard Worker } 11424*4bdc9457SAndroid Build Coastguard Worker } 11425*4bdc9457SAndroid Build Coastguard Worker } 11426*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,n_gt_8_small_kernel)11427*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, n_gt_8_small_kernel) { 11428*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11429*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 9; n < 16; n++) { 11430*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11431*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11432*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11433*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11434*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11435*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11436*4bdc9457SAndroid Build Coastguard Worker .m(7) 11437*4bdc9457SAndroid Build Coastguard Worker .n(n) 11438*4bdc9457SAndroid Build Coastguard Worker .k(k) 11439*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11440*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11441*4bdc9457SAndroid Build Coastguard Worker } 11442*4bdc9457SAndroid Build Coastguard Worker } 11443*4bdc9457SAndroid Build Coastguard Worker } 11444*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,n_div_8_small_kernel)11445*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, n_div_8_small_kernel) { 11446*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11447*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 16; n <= 24; n += 8) { 11448*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11449*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11450*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11451*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11452*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11453*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11454*4bdc9457SAndroid Build Coastguard Worker .m(7) 11455*4bdc9457SAndroid Build Coastguard Worker .n(n) 11456*4bdc9457SAndroid Build Coastguard Worker .k(k) 11457*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11458*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11459*4bdc9457SAndroid Build Coastguard Worker } 11460*4bdc9457SAndroid Build Coastguard Worker } 11461*4bdc9457SAndroid Build Coastguard Worker } 11462*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,strided_cm_subtile)11463*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, strided_cm_subtile) { 11464*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11465*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11466*4bdc9457SAndroid Build Coastguard Worker for (uint32_t n = 1; n <= 8; n++) { 11467*4bdc9457SAndroid Build Coastguard Worker for (uint32_t m = 1; m <= 7; m++) { 11468*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11469*4bdc9457SAndroid Build Coastguard Worker .mr(7) 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(m) 11474*4bdc9457SAndroid Build Coastguard Worker .n(n) 11475*4bdc9457SAndroid Build Coastguard Worker .k(k) 11476*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 11477*4bdc9457SAndroid Build Coastguard Worker .iterations(1) 11478*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11479*4bdc9457SAndroid Build Coastguard Worker } 11480*4bdc9457SAndroid Build Coastguard Worker } 11481*4bdc9457SAndroid Build Coastguard Worker } 11482*4bdc9457SAndroid Build Coastguard Worker } 11483*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,a_offset)11484*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, a_offset) { 11485*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11486*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11487*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11488*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11489*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11490*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11491*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11492*4bdc9457SAndroid Build Coastguard Worker .m(7) 11493*4bdc9457SAndroid Build Coastguard Worker .n(8) 11494*4bdc9457SAndroid Build Coastguard Worker .k(k) 11495*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11496*4bdc9457SAndroid Build Coastguard Worker .a_offset(37) 11497*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11498*4bdc9457SAndroid Build Coastguard Worker } 11499*4bdc9457SAndroid Build Coastguard Worker } 11500*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,zero)11501*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, zero) { 11502*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11503*4bdc9457SAndroid Build Coastguard Worker for (size_t k = 1; k <= 5; k += 2) { 11504*4bdc9457SAndroid Build Coastguard Worker for (uint32_t mz = 0; mz < 7; mz++) { 11505*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11506*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11507*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11508*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11509*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11510*4bdc9457SAndroid Build Coastguard Worker .m(7) 11511*4bdc9457SAndroid Build Coastguard Worker .n(8) 11512*4bdc9457SAndroid Build Coastguard Worker .k(k) 11513*4bdc9457SAndroid Build Coastguard Worker .ks(3) 11514*4bdc9457SAndroid Build Coastguard Worker .a_offset(37) 11515*4bdc9457SAndroid Build Coastguard Worker .zero_index(mz) 11516*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11517*4bdc9457SAndroid Build Coastguard Worker } 11518*4bdc9457SAndroid Build Coastguard Worker } 11519*4bdc9457SAndroid Build Coastguard Worker } 11520*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,qmin)11521*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, qmin) { 11522*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11523*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11524*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11525*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11526*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11527*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11528*4bdc9457SAndroid Build Coastguard Worker .m(7) 11529*4bdc9457SAndroid Build Coastguard Worker .n(8) 11530*4bdc9457SAndroid Build Coastguard Worker .k(1) 11531*4bdc9457SAndroid Build Coastguard Worker .qmin(128) 11532*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11533*4bdc9457SAndroid Build Coastguard Worker } 11534*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,qmax)11535*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, qmax) { 11536*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11537*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11538*4bdc9457SAndroid Build Coastguard Worker .mr(7) 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(7) 11543*4bdc9457SAndroid Build Coastguard Worker .n(8) 11544*4bdc9457SAndroid Build Coastguard Worker .k(1) 11545*4bdc9457SAndroid Build Coastguard Worker .qmax(128) 11546*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11547*4bdc9457SAndroid Build Coastguard Worker } 11548*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST,strided_cm)11549*4bdc9457SAndroid Build Coastguard Worker TEST(F16_IGEMM_MINMAX_7X8__AVX2_BROADCAST, strided_cm) { 11550*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_AVX2; 11551*4bdc9457SAndroid Build Coastguard Worker GemmMicrokernelTester() 11552*4bdc9457SAndroid Build Coastguard Worker .mr(7) 11553*4bdc9457SAndroid Build Coastguard Worker .nr(8) 11554*4bdc9457SAndroid Build Coastguard Worker .kr(1) 11555*4bdc9457SAndroid Build Coastguard Worker .sr(1) 11556*4bdc9457SAndroid Build Coastguard Worker .m(7) 11557*4bdc9457SAndroid Build Coastguard Worker .n(8) 11558*4bdc9457SAndroid Build Coastguard Worker .k(1) 11559*4bdc9457SAndroid Build Coastguard Worker .cm_stride(11) 11560*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast, xnn_init_f16_minmax_avx_params); 11561*4bdc9457SAndroid Build Coastguard Worker } 11562*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64 11563