xref: /aosp_15_r20/external/XNNPACK/test/f16-igemm-minmax.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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