1*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC
2*4bdc9457SAndroid Build Coastguard Worker //
3*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the
4*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree.
5*4bdc9457SAndroid Build Coastguard Worker //
6*4bdc9457SAndroid Build Coastguard Worker // Auto-generated file. Do not edit!
7*4bdc9457SAndroid Build Coastguard Worker // Specification: test/f32-vmulcaddc-minmax.yaml
8*4bdc9457SAndroid Build Coastguard Worker // Generator: tools/generate-vmulcaddc-test.py
9*4bdc9457SAndroid Build Coastguard Worker
10*4bdc9457SAndroid Build Coastguard Worker
11*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h>
12*4bdc9457SAndroid Build Coastguard Worker
13*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/common.h>
14*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/isa-checks.h>
15*4bdc9457SAndroid Build Coastguard Worker
16*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/vmulcaddc.h>
17*4bdc9457SAndroid Build Coastguard Worker #include "vmulcaddc-microkernel-tester.h"
18*4bdc9457SAndroid Build Coastguard Worker
19*4bdc9457SAndroid Build Coastguard Worker
20*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,channels_eq_4)21*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, channels_eq_4) {
22*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
23*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
24*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
25*4bdc9457SAndroid Build Coastguard Worker .channels(4)
26*4bdc9457SAndroid Build Coastguard Worker .rows(2)
27*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
28*4bdc9457SAndroid Build Coastguard Worker }
29*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,channels_div_4)30*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, channels_div_4) {
31*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
32*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
33*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
34*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
35*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
36*4bdc9457SAndroid Build Coastguard Worker .rows(2)
37*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
38*4bdc9457SAndroid Build Coastguard Worker }
39*4bdc9457SAndroid Build Coastguard Worker }
40*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,channels_lt_4)41*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, channels_lt_4) {
42*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
43*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
44*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
45*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
46*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
47*4bdc9457SAndroid Build Coastguard Worker .rows(2)
48*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
49*4bdc9457SAndroid Build Coastguard Worker }
50*4bdc9457SAndroid Build Coastguard Worker }
51*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,channels_gt_4)52*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, channels_gt_4) {
53*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
54*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
55*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
56*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
57*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
58*4bdc9457SAndroid Build Coastguard Worker .rows(2)
59*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
60*4bdc9457SAndroid Build Coastguard Worker }
61*4bdc9457SAndroid Build Coastguard Worker }
62*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,rows_lt_2)63*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, rows_lt_2) {
64*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
65*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
66*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
67*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
68*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
69*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
70*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
71*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
72*4bdc9457SAndroid Build Coastguard Worker }
73*4bdc9457SAndroid Build Coastguard Worker }
74*4bdc9457SAndroid Build Coastguard Worker }
75*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,rows_div_2)76*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, rows_div_2) {
77*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
78*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
79*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
80*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
81*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
82*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
83*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
84*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
85*4bdc9457SAndroid Build Coastguard Worker }
86*4bdc9457SAndroid Build Coastguard Worker }
87*4bdc9457SAndroid Build Coastguard Worker }
88*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,rows_gt_2)89*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, rows_gt_2) {
90*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
91*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
92*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
93*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
94*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
95*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
96*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
97*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
98*4bdc9457SAndroid Build Coastguard Worker }
99*4bdc9457SAndroid Build Coastguard Worker }
100*4bdc9457SAndroid Build Coastguard Worker }
101*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,input_stride)102*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, input_stride) {
103*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
104*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
105*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
106*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
107*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
108*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
109*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
110*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
111*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
112*4bdc9457SAndroid Build Coastguard Worker }
113*4bdc9457SAndroid Build Coastguard Worker }
114*4bdc9457SAndroid Build Coastguard Worker }
115*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,output_stride)116*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, output_stride) {
117*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
118*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
119*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
120*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
121*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
122*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
123*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
124*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
125*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
126*4bdc9457SAndroid Build Coastguard Worker }
127*4bdc9457SAndroid Build Coastguard Worker }
128*4bdc9457SAndroid Build Coastguard Worker }
129*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,inplace)130*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, inplace) {
131*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
132*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
133*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
134*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
135*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
136*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
137*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
138*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
139*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
140*4bdc9457SAndroid Build Coastguard Worker }
141*4bdc9457SAndroid Build Coastguard Worker }
142*4bdc9457SAndroid Build Coastguard Worker }
143*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,qmin)144*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, qmin) {
145*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
146*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
147*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
148*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
149*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
150*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
151*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
152*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
153*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
154*4bdc9457SAndroid Build Coastguard Worker }
155*4bdc9457SAndroid Build Coastguard Worker }
156*4bdc9457SAndroid Build Coastguard Worker }
157*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X,qmax)158*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEON_2X, qmax) {
159*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
160*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
161*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
162*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
163*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
164*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
165*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
166*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
167*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neon_2x, xnn_init_f32_minmax_scalar_params);
168*4bdc9457SAndroid Build Coastguard Worker }
169*4bdc9457SAndroid Build Coastguard Worker }
170*4bdc9457SAndroid Build Coastguard Worker }
171*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
172*4bdc9457SAndroid Build Coastguard Worker
173*4bdc9457SAndroid Build Coastguard Worker
174*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,channels_eq_4)175*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, channels_eq_4) {
176*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
177*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
178*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
179*4bdc9457SAndroid Build Coastguard Worker .channels(4)
180*4bdc9457SAndroid Build Coastguard Worker .rows(2)
181*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
182*4bdc9457SAndroid Build Coastguard Worker }
183*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,channels_div_4)184*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, channels_div_4) {
185*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
186*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
187*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
188*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
189*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
190*4bdc9457SAndroid Build Coastguard Worker .rows(2)
191*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
192*4bdc9457SAndroid Build Coastguard Worker }
193*4bdc9457SAndroid Build Coastguard Worker }
194*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,channels_lt_4)195*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, channels_lt_4) {
196*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
197*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
198*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
199*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
200*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
201*4bdc9457SAndroid Build Coastguard Worker .rows(2)
202*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
203*4bdc9457SAndroid Build Coastguard Worker }
204*4bdc9457SAndroid Build Coastguard Worker }
205*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,channels_gt_4)206*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, channels_gt_4) {
207*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
208*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
209*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
210*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
211*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
212*4bdc9457SAndroid Build Coastguard Worker .rows(2)
213*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
214*4bdc9457SAndroid Build Coastguard Worker }
215*4bdc9457SAndroid Build Coastguard Worker }
216*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,rows_lt_2)217*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, rows_lt_2) {
218*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
219*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
220*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
221*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
222*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
223*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
224*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
225*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
226*4bdc9457SAndroid Build Coastguard Worker }
227*4bdc9457SAndroid Build Coastguard Worker }
228*4bdc9457SAndroid Build Coastguard Worker }
229*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,rows_div_2)230*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, rows_div_2) {
231*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
232*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
233*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
234*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
235*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
236*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
237*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
238*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
239*4bdc9457SAndroid Build Coastguard Worker }
240*4bdc9457SAndroid Build Coastguard Worker }
241*4bdc9457SAndroid Build Coastguard Worker }
242*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,rows_gt_2)243*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, rows_gt_2) {
244*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
245*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
246*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
247*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
248*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
249*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
250*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
251*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
252*4bdc9457SAndroid Build Coastguard Worker }
253*4bdc9457SAndroid Build Coastguard Worker }
254*4bdc9457SAndroid Build Coastguard Worker }
255*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,input_stride)256*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, input_stride) {
257*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
258*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
259*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
260*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
261*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
262*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
263*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
264*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
265*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
266*4bdc9457SAndroid Build Coastguard Worker }
267*4bdc9457SAndroid Build Coastguard Worker }
268*4bdc9457SAndroid Build Coastguard Worker }
269*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,output_stride)270*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, output_stride) {
271*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
272*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
273*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
274*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
275*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
276*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
277*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
278*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
279*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
280*4bdc9457SAndroid Build Coastguard Worker }
281*4bdc9457SAndroid Build Coastguard Worker }
282*4bdc9457SAndroid Build Coastguard Worker }
283*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,inplace)284*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, inplace) {
285*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
286*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
287*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
288*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
289*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
290*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
291*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
292*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
293*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
294*4bdc9457SAndroid Build Coastguard Worker }
295*4bdc9457SAndroid Build Coastguard Worker }
296*4bdc9457SAndroid Build Coastguard Worker }
297*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,qmin)298*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, qmin) {
299*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
300*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
301*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
302*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
303*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
304*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
305*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
306*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
307*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
308*4bdc9457SAndroid Build Coastguard Worker }
309*4bdc9457SAndroid Build Coastguard Worker }
310*4bdc9457SAndroid Build Coastguard Worker }
311*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X,qmax)312*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__NEONFMA_2X, qmax) {
313*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
314*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
315*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
316*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
317*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
318*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
319*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
320*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
321*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__neonfma_2x, xnn_init_f32_minmax_scalar_params);
322*4bdc9457SAndroid Build Coastguard Worker }
323*4bdc9457SAndroid Build Coastguard Worker }
324*4bdc9457SAndroid Build Coastguard Worker }
325*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
326*4bdc9457SAndroid Build Coastguard Worker
327*4bdc9457SAndroid Build Coastguard Worker
328*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,channels_eq_8)329*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, channels_eq_8) {
330*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
331*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
332*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
333*4bdc9457SAndroid Build Coastguard Worker .channels(8)
334*4bdc9457SAndroid Build Coastguard Worker .rows(2)
335*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
336*4bdc9457SAndroid Build Coastguard Worker }
337*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,channels_div_8)338*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, channels_div_8) {
339*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
340*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) {
341*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
342*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
343*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
344*4bdc9457SAndroid Build Coastguard Worker .rows(2)
345*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
346*4bdc9457SAndroid Build Coastguard Worker }
347*4bdc9457SAndroid Build Coastguard Worker }
348*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,channels_lt_8)349*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, channels_lt_8) {
350*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
351*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) {
352*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
353*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
354*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
355*4bdc9457SAndroid Build Coastguard Worker .rows(2)
356*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
357*4bdc9457SAndroid Build Coastguard Worker }
358*4bdc9457SAndroid Build Coastguard Worker }
359*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,channels_gt_8)360*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, channels_gt_8) {
361*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
362*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) {
363*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
364*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
365*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
366*4bdc9457SAndroid Build Coastguard Worker .rows(2)
367*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
368*4bdc9457SAndroid Build Coastguard Worker }
369*4bdc9457SAndroid Build Coastguard Worker }
370*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,rows_lt_2)371*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, rows_lt_2) {
372*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
373*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
374*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
375*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
376*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
377*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
378*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
379*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
380*4bdc9457SAndroid Build Coastguard Worker }
381*4bdc9457SAndroid Build Coastguard Worker }
382*4bdc9457SAndroid Build Coastguard Worker }
383*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,rows_div_2)384*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, rows_div_2) {
385*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
386*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
387*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
388*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
389*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
390*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
391*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
392*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
393*4bdc9457SAndroid Build Coastguard Worker }
394*4bdc9457SAndroid Build Coastguard Worker }
395*4bdc9457SAndroid Build Coastguard Worker }
396*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,rows_gt_2)397*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, rows_gt_2) {
398*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
399*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
400*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
401*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
402*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
403*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
404*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
405*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
406*4bdc9457SAndroid Build Coastguard Worker }
407*4bdc9457SAndroid Build Coastguard Worker }
408*4bdc9457SAndroid Build Coastguard Worker }
409*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,input_stride)410*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, input_stride) {
411*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
412*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
413*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
414*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
415*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
416*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
417*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
418*4bdc9457SAndroid Build Coastguard Worker .input_stride(43)
419*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
420*4bdc9457SAndroid Build Coastguard Worker }
421*4bdc9457SAndroid Build Coastguard Worker }
422*4bdc9457SAndroid Build Coastguard Worker }
423*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,output_stride)424*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, output_stride) {
425*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
426*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
427*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
428*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
429*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
430*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
431*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
432*4bdc9457SAndroid Build Coastguard Worker .output_stride(43)
433*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
434*4bdc9457SAndroid Build Coastguard Worker }
435*4bdc9457SAndroid Build Coastguard Worker }
436*4bdc9457SAndroid Build Coastguard Worker }
437*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,inplace)438*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, inplace) {
439*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
440*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
441*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
442*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
443*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
444*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
445*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
446*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
447*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
448*4bdc9457SAndroid Build Coastguard Worker }
449*4bdc9457SAndroid Build Coastguard Worker }
450*4bdc9457SAndroid Build Coastguard Worker }
451*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,qmin)452*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, qmin) {
453*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
454*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
455*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
456*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
457*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
458*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
459*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
460*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
461*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
462*4bdc9457SAndroid Build Coastguard Worker }
463*4bdc9457SAndroid Build Coastguard Worker }
464*4bdc9457SAndroid Build Coastguard Worker }
465*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X,qmax)466*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEON_2X, qmax) {
467*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON;
468*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
469*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
470*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
471*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
472*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
473*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
474*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
475*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neon_2x, xnn_init_f32_minmax_scalar_params);
476*4bdc9457SAndroid Build Coastguard Worker }
477*4bdc9457SAndroid Build Coastguard Worker }
478*4bdc9457SAndroid Build Coastguard Worker }
479*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
480*4bdc9457SAndroid Build Coastguard Worker
481*4bdc9457SAndroid Build Coastguard Worker
482*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,channels_eq_8)483*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, channels_eq_8) {
484*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
485*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
486*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
487*4bdc9457SAndroid Build Coastguard Worker .channels(8)
488*4bdc9457SAndroid Build Coastguard Worker .rows(2)
489*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
490*4bdc9457SAndroid Build Coastguard Worker }
491*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,channels_div_8)492*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, channels_div_8) {
493*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
494*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) {
495*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
496*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
497*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
498*4bdc9457SAndroid Build Coastguard Worker .rows(2)
499*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
500*4bdc9457SAndroid Build Coastguard Worker }
501*4bdc9457SAndroid Build Coastguard Worker }
502*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,channels_lt_8)503*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, channels_lt_8) {
504*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
505*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) {
506*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
507*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
508*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
509*4bdc9457SAndroid Build Coastguard Worker .rows(2)
510*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
511*4bdc9457SAndroid Build Coastguard Worker }
512*4bdc9457SAndroid Build Coastguard Worker }
513*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,channels_gt_8)514*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, channels_gt_8) {
515*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
516*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) {
517*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
518*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
519*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
520*4bdc9457SAndroid Build Coastguard Worker .rows(2)
521*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
522*4bdc9457SAndroid Build Coastguard Worker }
523*4bdc9457SAndroid Build Coastguard Worker }
524*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,rows_lt_2)525*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, rows_lt_2) {
526*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
527*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
528*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
529*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
530*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
531*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
532*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
533*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
534*4bdc9457SAndroid Build Coastguard Worker }
535*4bdc9457SAndroid Build Coastguard Worker }
536*4bdc9457SAndroid Build Coastguard Worker }
537*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,rows_div_2)538*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, rows_div_2) {
539*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
540*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
541*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
542*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
543*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
544*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
545*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
546*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
547*4bdc9457SAndroid Build Coastguard Worker }
548*4bdc9457SAndroid Build Coastguard Worker }
549*4bdc9457SAndroid Build Coastguard Worker }
550*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,rows_gt_2)551*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, rows_gt_2) {
552*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
553*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
554*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
555*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
556*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
557*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
558*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
559*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
560*4bdc9457SAndroid Build Coastguard Worker }
561*4bdc9457SAndroid Build Coastguard Worker }
562*4bdc9457SAndroid Build Coastguard Worker }
563*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,input_stride)564*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, input_stride) {
565*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
566*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
567*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
568*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
569*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
570*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
571*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
572*4bdc9457SAndroid Build Coastguard Worker .input_stride(43)
573*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
574*4bdc9457SAndroid Build Coastguard Worker }
575*4bdc9457SAndroid Build Coastguard Worker }
576*4bdc9457SAndroid Build Coastguard Worker }
577*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,output_stride)578*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, output_stride) {
579*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
580*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
581*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
582*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
583*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
584*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
585*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
586*4bdc9457SAndroid Build Coastguard Worker .output_stride(43)
587*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
588*4bdc9457SAndroid Build Coastguard Worker }
589*4bdc9457SAndroid Build Coastguard Worker }
590*4bdc9457SAndroid Build Coastguard Worker }
591*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,inplace)592*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, inplace) {
593*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
594*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
595*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
596*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
597*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
598*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
599*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
600*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
601*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
602*4bdc9457SAndroid Build Coastguard Worker }
603*4bdc9457SAndroid Build Coastguard Worker }
604*4bdc9457SAndroid Build Coastguard Worker }
605*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,qmin)606*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, qmin) {
607*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
608*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
609*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
610*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
611*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
612*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
613*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
614*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
615*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
616*4bdc9457SAndroid Build Coastguard Worker }
617*4bdc9457SAndroid Build Coastguard Worker }
618*4bdc9457SAndroid Build Coastguard Worker }
619*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X,qmax)620*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__NEONFMA_2X, qmax) {
621*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_ARM_NEON_FMA;
622*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
623*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
624*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
625*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
626*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
627*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
628*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
629*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__neonfma_2x, xnn_init_f32_minmax_scalar_params);
630*4bdc9457SAndroid Build Coastguard Worker }
631*4bdc9457SAndroid Build Coastguard Worker }
632*4bdc9457SAndroid Build Coastguard Worker }
633*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
634*4bdc9457SAndroid Build Coastguard Worker
635*4bdc9457SAndroid Build Coastguard Worker
636*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,channels_eq_4)637*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, channels_eq_4) {
638*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
639*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
640*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
641*4bdc9457SAndroid Build Coastguard Worker .channels(4)
642*4bdc9457SAndroid Build Coastguard Worker .rows(2)
643*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
644*4bdc9457SAndroid Build Coastguard Worker }
645*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,channels_div_4)646*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, channels_div_4) {
647*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
648*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
649*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
650*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
651*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
652*4bdc9457SAndroid Build Coastguard Worker .rows(2)
653*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
654*4bdc9457SAndroid Build Coastguard Worker }
655*4bdc9457SAndroid Build Coastguard Worker }
656*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,channels_lt_4)657*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, channels_lt_4) {
658*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
659*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
660*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
661*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
662*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
663*4bdc9457SAndroid Build Coastguard Worker .rows(2)
664*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
665*4bdc9457SAndroid Build Coastguard Worker }
666*4bdc9457SAndroid Build Coastguard Worker }
667*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,channels_gt_4)668*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, channels_gt_4) {
669*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
670*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
671*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
672*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
673*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
674*4bdc9457SAndroid Build Coastguard Worker .rows(2)
675*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
676*4bdc9457SAndroid Build Coastguard Worker }
677*4bdc9457SAndroid Build Coastguard Worker }
678*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,rows_lt_2)679*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, rows_lt_2) {
680*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
681*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
682*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
683*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
684*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
685*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
686*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
687*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
688*4bdc9457SAndroid Build Coastguard Worker }
689*4bdc9457SAndroid Build Coastguard Worker }
690*4bdc9457SAndroid Build Coastguard Worker }
691*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,rows_div_2)692*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, rows_div_2) {
693*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
694*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
695*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
696*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
697*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
698*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
699*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
700*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
701*4bdc9457SAndroid Build Coastguard Worker }
702*4bdc9457SAndroid Build Coastguard Worker }
703*4bdc9457SAndroid Build Coastguard Worker }
704*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,rows_gt_2)705*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, rows_gt_2) {
706*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
707*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
708*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
709*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
710*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
711*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
712*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
713*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
714*4bdc9457SAndroid Build Coastguard Worker }
715*4bdc9457SAndroid Build Coastguard Worker }
716*4bdc9457SAndroid Build Coastguard Worker }
717*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,input_stride)718*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, input_stride) {
719*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
720*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
721*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
722*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
723*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
724*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
725*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
726*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
727*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
728*4bdc9457SAndroid Build Coastguard Worker }
729*4bdc9457SAndroid Build Coastguard Worker }
730*4bdc9457SAndroid Build Coastguard Worker }
731*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,output_stride)732*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, output_stride) {
733*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
734*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
735*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
736*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
737*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
738*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
739*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
740*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
741*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
742*4bdc9457SAndroid Build Coastguard Worker }
743*4bdc9457SAndroid Build Coastguard Worker }
744*4bdc9457SAndroid Build Coastguard Worker }
745*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,inplace)746*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, inplace) {
747*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
748*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
749*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
750*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
751*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
752*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
753*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
754*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
755*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
756*4bdc9457SAndroid Build Coastguard Worker }
757*4bdc9457SAndroid Build Coastguard Worker }
758*4bdc9457SAndroid Build Coastguard Worker }
759*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,qmin)760*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, qmin) {
761*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
762*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
763*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
764*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
765*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
766*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
767*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
768*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
769*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
770*4bdc9457SAndroid Build Coastguard Worker }
771*4bdc9457SAndroid Build Coastguard Worker }
772*4bdc9457SAndroid Build Coastguard Worker }
773*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X,qmax)774*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SSE_2X, qmax) {
775*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
776*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
777*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
778*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
779*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
780*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
781*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
782*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
783*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__sse_2x, xnn_init_f32_minmax_sse_params);
784*4bdc9457SAndroid Build Coastguard Worker }
785*4bdc9457SAndroid Build Coastguard Worker }
786*4bdc9457SAndroid Build Coastguard Worker }
787*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
788*4bdc9457SAndroid Build Coastguard Worker
789*4bdc9457SAndroid Build Coastguard Worker
790*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,channels_eq_8)791*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, channels_eq_8) {
792*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
793*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
794*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
795*4bdc9457SAndroid Build Coastguard Worker .channels(8)
796*4bdc9457SAndroid Build Coastguard Worker .rows(2)
797*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
798*4bdc9457SAndroid Build Coastguard Worker }
799*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,channels_div_8)800*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, channels_div_8) {
801*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
802*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) {
803*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
804*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
805*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
806*4bdc9457SAndroid Build Coastguard Worker .rows(2)
807*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
808*4bdc9457SAndroid Build Coastguard Worker }
809*4bdc9457SAndroid Build Coastguard Worker }
810*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,channels_lt_8)811*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, channels_lt_8) {
812*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
813*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) {
814*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
815*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
816*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
817*4bdc9457SAndroid Build Coastguard Worker .rows(2)
818*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
819*4bdc9457SAndroid Build Coastguard Worker }
820*4bdc9457SAndroid Build Coastguard Worker }
821*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,channels_gt_8)822*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, channels_gt_8) {
823*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
824*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) {
825*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
826*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
827*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
828*4bdc9457SAndroid Build Coastguard Worker .rows(2)
829*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
830*4bdc9457SAndroid Build Coastguard Worker }
831*4bdc9457SAndroid Build Coastguard Worker }
832*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,rows_lt_2)833*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, rows_lt_2) {
834*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
835*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
836*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
837*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
838*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
839*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
840*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
841*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
842*4bdc9457SAndroid Build Coastguard Worker }
843*4bdc9457SAndroid Build Coastguard Worker }
844*4bdc9457SAndroid Build Coastguard Worker }
845*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,rows_div_2)846*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, rows_div_2) {
847*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
848*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
849*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
850*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
851*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
852*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
853*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
854*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
855*4bdc9457SAndroid Build Coastguard Worker }
856*4bdc9457SAndroid Build Coastguard Worker }
857*4bdc9457SAndroid Build Coastguard Worker }
858*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,rows_gt_2)859*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, rows_gt_2) {
860*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
861*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
862*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
863*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
864*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
865*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
866*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
867*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
868*4bdc9457SAndroid Build Coastguard Worker }
869*4bdc9457SAndroid Build Coastguard Worker }
870*4bdc9457SAndroid Build Coastguard Worker }
871*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,input_stride)872*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, input_stride) {
873*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
874*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
875*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
876*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
877*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
878*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
879*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
880*4bdc9457SAndroid Build Coastguard Worker .input_stride(43)
881*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
882*4bdc9457SAndroid Build Coastguard Worker }
883*4bdc9457SAndroid Build Coastguard Worker }
884*4bdc9457SAndroid Build Coastguard Worker }
885*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,output_stride)886*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, output_stride) {
887*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
888*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
889*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
890*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
891*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
892*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
893*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
894*4bdc9457SAndroid Build Coastguard Worker .output_stride(43)
895*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
896*4bdc9457SAndroid Build Coastguard Worker }
897*4bdc9457SAndroid Build Coastguard Worker }
898*4bdc9457SAndroid Build Coastguard Worker }
899*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,inplace)900*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, inplace) {
901*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
902*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
903*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
904*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
905*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
906*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
907*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
908*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
909*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
910*4bdc9457SAndroid Build Coastguard Worker }
911*4bdc9457SAndroid Build Coastguard Worker }
912*4bdc9457SAndroid Build Coastguard Worker }
913*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,qmin)914*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, qmin) {
915*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
916*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
917*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
918*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
919*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
920*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
921*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
922*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
923*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
924*4bdc9457SAndroid Build Coastguard Worker }
925*4bdc9457SAndroid Build Coastguard Worker }
926*4bdc9457SAndroid Build Coastguard Worker }
927*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X,qmax)928*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__SSE_2X, qmax) {
929*4bdc9457SAndroid Build Coastguard Worker TEST_REQUIRES_X86_SSE;
930*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
931*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
932*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
933*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
934*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
935*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
936*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
937*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__sse_2x, xnn_init_f32_minmax_sse_params);
938*4bdc9457SAndroid Build Coastguard Worker }
939*4bdc9457SAndroid Build Coastguard Worker }
940*4bdc9457SAndroid Build Coastguard Worker }
941*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
942*4bdc9457SAndroid Build Coastguard Worker
943*4bdc9457SAndroid Build Coastguard Worker
944*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,channels_eq_4)945*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, channels_eq_4) {
946*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
947*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
948*4bdc9457SAndroid Build Coastguard Worker .channels(4)
949*4bdc9457SAndroid Build Coastguard Worker .rows(2)
950*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
951*4bdc9457SAndroid Build Coastguard Worker }
952*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,channels_div_4)953*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, channels_div_4) {
954*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
955*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
956*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
957*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
958*4bdc9457SAndroid Build Coastguard Worker .rows(2)
959*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
960*4bdc9457SAndroid Build Coastguard Worker }
961*4bdc9457SAndroid Build Coastguard Worker }
962*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,channels_lt_4)963*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, channels_lt_4) {
964*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
965*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
966*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
967*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
968*4bdc9457SAndroid Build Coastguard Worker .rows(2)
969*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
970*4bdc9457SAndroid Build Coastguard Worker }
971*4bdc9457SAndroid Build Coastguard Worker }
972*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,channels_gt_4)973*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, channels_gt_4) {
974*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
975*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
976*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
977*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
978*4bdc9457SAndroid Build Coastguard Worker .rows(2)
979*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
980*4bdc9457SAndroid Build Coastguard Worker }
981*4bdc9457SAndroid Build Coastguard Worker }
982*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,rows_lt_2)983*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, rows_lt_2) {
984*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
985*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
986*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
987*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
988*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
989*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
990*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
991*4bdc9457SAndroid Build Coastguard Worker }
992*4bdc9457SAndroid Build Coastguard Worker }
993*4bdc9457SAndroid Build Coastguard Worker }
994*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,rows_div_2)995*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, rows_div_2) {
996*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
997*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
998*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
999*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1000*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1001*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1002*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1003*4bdc9457SAndroid Build Coastguard Worker }
1004*4bdc9457SAndroid Build Coastguard Worker }
1005*4bdc9457SAndroid Build Coastguard Worker }
1006*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,rows_gt_2)1007*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, rows_gt_2) {
1008*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
1009*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1010*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1011*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1012*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1013*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1014*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1015*4bdc9457SAndroid Build Coastguard Worker }
1016*4bdc9457SAndroid Build Coastguard Worker }
1017*4bdc9457SAndroid Build Coastguard Worker }
1018*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,input_stride)1019*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, input_stride) {
1020*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1021*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1022*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1023*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1024*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1025*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1026*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
1027*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1028*4bdc9457SAndroid Build Coastguard Worker }
1029*4bdc9457SAndroid Build Coastguard Worker }
1030*4bdc9457SAndroid Build Coastguard Worker }
1031*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,output_stride)1032*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, output_stride) {
1033*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1034*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1035*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1036*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1037*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1038*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1039*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1040*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1041*4bdc9457SAndroid Build Coastguard Worker }
1042*4bdc9457SAndroid Build Coastguard Worker }
1043*4bdc9457SAndroid Build Coastguard Worker }
1044*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,inplace)1045*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, inplace) {
1046*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1047*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1048*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1049*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1050*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1051*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1052*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
1053*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1054*4bdc9457SAndroid Build Coastguard Worker }
1055*4bdc9457SAndroid Build Coastguard Worker }
1056*4bdc9457SAndroid Build Coastguard Worker }
1057*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,qmin)1058*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, qmin) {
1059*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1060*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1061*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1062*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1063*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1064*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1065*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
1066*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1067*4bdc9457SAndroid Build Coastguard Worker }
1068*4bdc9457SAndroid Build Coastguard Worker }
1069*4bdc9457SAndroid Build Coastguard Worker }
1070*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X,qmax)1071*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_ARM_2X, qmax) {
1072*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1073*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1074*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1075*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1076*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1077*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1078*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
1079*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1080*4bdc9457SAndroid Build Coastguard Worker }
1081*4bdc9457SAndroid Build Coastguard Worker }
1082*4bdc9457SAndroid Build Coastguard Worker }
1083*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1084*4bdc9457SAndroid Build Coastguard Worker
1085*4bdc9457SAndroid Build Coastguard Worker
1086*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,channels_eq_4)1087*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, channels_eq_4) {
1088*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1089*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1090*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1091*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1092*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1093*4bdc9457SAndroid Build Coastguard Worker }
1094*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,channels_div_4)1095*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, channels_div_4) {
1096*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
1097*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1098*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1099*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1100*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1101*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1102*4bdc9457SAndroid Build Coastguard Worker }
1103*4bdc9457SAndroid Build Coastguard Worker }
1104*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,channels_lt_4)1105*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, channels_lt_4) {
1106*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1107*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1108*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1109*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1110*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1111*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1112*4bdc9457SAndroid Build Coastguard Worker }
1113*4bdc9457SAndroid Build Coastguard Worker }
1114*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,channels_gt_4)1115*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, channels_gt_4) {
1116*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1117*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1118*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1119*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1120*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1121*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1122*4bdc9457SAndroid Build Coastguard Worker }
1123*4bdc9457SAndroid Build Coastguard Worker }
1124*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,rows_lt_2)1125*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, rows_lt_2) {
1126*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
1127*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1128*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1129*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1130*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1131*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1132*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1133*4bdc9457SAndroid Build Coastguard Worker }
1134*4bdc9457SAndroid Build Coastguard Worker }
1135*4bdc9457SAndroid Build Coastguard Worker }
1136*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,rows_div_2)1137*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, rows_div_2) {
1138*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
1139*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1140*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1141*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1142*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1143*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1144*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1145*4bdc9457SAndroid Build Coastguard Worker }
1146*4bdc9457SAndroid Build Coastguard Worker }
1147*4bdc9457SAndroid Build Coastguard Worker }
1148*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,rows_gt_2)1149*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, rows_gt_2) {
1150*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
1151*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1152*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1153*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1154*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1155*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1157*4bdc9457SAndroid Build Coastguard Worker }
1158*4bdc9457SAndroid Build Coastguard Worker }
1159*4bdc9457SAndroid Build Coastguard Worker }
1160*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,input_stride)1161*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, input_stride) {
1162*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1163*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1164*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1165*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1166*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1167*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1168*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
1169*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1170*4bdc9457SAndroid Build Coastguard Worker }
1171*4bdc9457SAndroid Build Coastguard Worker }
1172*4bdc9457SAndroid Build Coastguard Worker }
1173*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,output_stride)1174*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, output_stride) {
1175*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1176*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1177*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1178*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1179*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1180*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1181*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1182*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1183*4bdc9457SAndroid Build Coastguard Worker }
1184*4bdc9457SAndroid Build Coastguard Worker }
1185*4bdc9457SAndroid Build Coastguard Worker }
1186*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,inplace)1187*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, inplace) {
1188*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1189*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1190*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1191*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1192*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1193*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1194*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
1195*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1196*4bdc9457SAndroid Build Coastguard Worker }
1197*4bdc9457SAndroid Build Coastguard Worker }
1198*4bdc9457SAndroid Build Coastguard Worker }
1199*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,qmin)1200*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, qmin) {
1201*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1202*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1203*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1204*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1205*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1206*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1207*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
1208*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1209*4bdc9457SAndroid Build Coastguard Worker }
1210*4bdc9457SAndroid Build Coastguard Worker }
1211*4bdc9457SAndroid Build Coastguard Worker }
1212*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X,qmax)1213*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMSIMD_X86_2X, qmax) {
1214*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1215*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1216*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1217*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1218*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1219*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1220*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
1221*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1222*4bdc9457SAndroid Build Coastguard Worker }
1223*4bdc9457SAndroid Build Coastguard Worker }
1224*4bdc9457SAndroid Build Coastguard Worker }
1225*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1226*4bdc9457SAndroid Build Coastguard Worker
1227*4bdc9457SAndroid Build Coastguard Worker
1228*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,channels_eq_8)1229*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, channels_eq_8) {
1230*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1231*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1232*4bdc9457SAndroid Build Coastguard Worker .channels(8)
1233*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1234*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1235*4bdc9457SAndroid Build Coastguard Worker }
1236*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,channels_div_8)1237*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, channels_div_8) {
1238*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) {
1239*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1240*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1241*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1242*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1243*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1244*4bdc9457SAndroid Build Coastguard Worker }
1245*4bdc9457SAndroid Build Coastguard Worker }
1246*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,channels_lt_8)1247*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, channels_lt_8) {
1248*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) {
1249*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1250*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1251*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1252*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1253*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1254*4bdc9457SAndroid Build Coastguard Worker }
1255*4bdc9457SAndroid Build Coastguard Worker }
1256*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,channels_gt_8)1257*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, channels_gt_8) {
1258*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) {
1259*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1260*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1261*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1262*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1263*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1264*4bdc9457SAndroid Build Coastguard Worker }
1265*4bdc9457SAndroid Build Coastguard Worker }
1266*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,rows_lt_2)1267*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, rows_lt_2) {
1268*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
1269*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1270*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1271*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1272*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1273*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1274*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1275*4bdc9457SAndroid Build Coastguard Worker }
1276*4bdc9457SAndroid Build Coastguard Worker }
1277*4bdc9457SAndroid Build Coastguard Worker }
1278*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,rows_div_2)1279*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, rows_div_2) {
1280*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
1281*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1282*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1283*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1284*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1285*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1286*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1287*4bdc9457SAndroid Build Coastguard Worker }
1288*4bdc9457SAndroid Build Coastguard Worker }
1289*4bdc9457SAndroid Build Coastguard Worker }
1290*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,rows_gt_2)1291*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, rows_gt_2) {
1292*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
1293*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1294*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1295*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1296*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1297*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1298*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1299*4bdc9457SAndroid Build Coastguard Worker }
1300*4bdc9457SAndroid Build Coastguard Worker }
1301*4bdc9457SAndroid Build Coastguard Worker }
1302*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,input_stride)1303*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, input_stride) {
1304*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1305*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1306*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1307*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1308*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1309*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1310*4bdc9457SAndroid Build Coastguard Worker .input_stride(43)
1311*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1312*4bdc9457SAndroid Build Coastguard Worker }
1313*4bdc9457SAndroid Build Coastguard Worker }
1314*4bdc9457SAndroid Build Coastguard Worker }
1315*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,output_stride)1316*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, output_stride) {
1317*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1318*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1319*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1320*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1321*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1322*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1323*4bdc9457SAndroid Build Coastguard Worker .output_stride(43)
1324*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1325*4bdc9457SAndroid Build Coastguard Worker }
1326*4bdc9457SAndroid Build Coastguard Worker }
1327*4bdc9457SAndroid Build Coastguard Worker }
1328*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,inplace)1329*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, inplace) {
1330*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1331*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1332*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1333*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1334*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1335*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1336*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
1337*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1338*4bdc9457SAndroid Build Coastguard Worker }
1339*4bdc9457SAndroid Build Coastguard Worker }
1340*4bdc9457SAndroid Build Coastguard Worker }
1341*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,qmin)1342*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, qmin) {
1343*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1344*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1345*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1346*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1347*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1348*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1349*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
1350*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1351*4bdc9457SAndroid Build Coastguard Worker }
1352*4bdc9457SAndroid Build Coastguard Worker }
1353*4bdc9457SAndroid Build Coastguard Worker }
1354*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X,qmax)1355*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_ARM_2X, qmax) {
1356*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1357*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1358*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1359*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1360*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1361*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1362*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
1363*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_arm_2x, xnn_init_f32_minmax_wasmsimd_params);
1364*4bdc9457SAndroid Build Coastguard Worker }
1365*4bdc9457SAndroid Build Coastguard Worker }
1366*4bdc9457SAndroid Build Coastguard Worker }
1367*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1368*4bdc9457SAndroid Build Coastguard Worker
1369*4bdc9457SAndroid Build Coastguard Worker
1370*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,channels_eq_8)1371*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, channels_eq_8) {
1372*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1373*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1374*4bdc9457SAndroid Build Coastguard Worker .channels(8)
1375*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1376*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1377*4bdc9457SAndroid Build Coastguard Worker }
1378*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,channels_div_8)1379*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, channels_div_8) {
1380*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) {
1381*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1382*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1383*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1384*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1385*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1386*4bdc9457SAndroid Build Coastguard Worker }
1387*4bdc9457SAndroid Build Coastguard Worker }
1388*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,channels_lt_8)1389*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, channels_lt_8) {
1390*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) {
1391*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1392*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1393*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1394*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1395*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1396*4bdc9457SAndroid Build Coastguard Worker }
1397*4bdc9457SAndroid Build Coastguard Worker }
1398*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,channels_gt_8)1399*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, channels_gt_8) {
1400*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) {
1401*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1402*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1403*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1404*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1405*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1406*4bdc9457SAndroid Build Coastguard Worker }
1407*4bdc9457SAndroid Build Coastguard Worker }
1408*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,rows_lt_2)1409*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, rows_lt_2) {
1410*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
1411*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1412*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1413*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1414*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1415*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1416*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1417*4bdc9457SAndroid Build Coastguard Worker }
1418*4bdc9457SAndroid Build Coastguard Worker }
1419*4bdc9457SAndroid Build Coastguard Worker }
1420*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,rows_div_2)1421*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, rows_div_2) {
1422*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
1423*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1424*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1425*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1426*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1427*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1428*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1429*4bdc9457SAndroid Build Coastguard Worker }
1430*4bdc9457SAndroid Build Coastguard Worker }
1431*4bdc9457SAndroid Build Coastguard Worker }
1432*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,rows_gt_2)1433*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, rows_gt_2) {
1434*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
1435*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1436*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1437*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1438*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1439*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1440*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1441*4bdc9457SAndroid Build Coastguard Worker }
1442*4bdc9457SAndroid Build Coastguard Worker }
1443*4bdc9457SAndroid Build Coastguard Worker }
1444*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,input_stride)1445*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, input_stride) {
1446*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1447*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1448*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1449*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1450*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1451*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1452*4bdc9457SAndroid Build Coastguard Worker .input_stride(43)
1453*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1454*4bdc9457SAndroid Build Coastguard Worker }
1455*4bdc9457SAndroid Build Coastguard Worker }
1456*4bdc9457SAndroid Build Coastguard Worker }
1457*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,output_stride)1458*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, output_stride) {
1459*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1460*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1461*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1462*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1463*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1464*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1465*4bdc9457SAndroid Build Coastguard Worker .output_stride(43)
1466*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1467*4bdc9457SAndroid Build Coastguard Worker }
1468*4bdc9457SAndroid Build Coastguard Worker }
1469*4bdc9457SAndroid Build Coastguard Worker }
1470*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,inplace)1471*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, inplace) {
1472*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1473*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1474*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1475*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1476*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1477*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1478*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
1479*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1480*4bdc9457SAndroid Build Coastguard Worker }
1481*4bdc9457SAndroid Build Coastguard Worker }
1482*4bdc9457SAndroid Build Coastguard Worker }
1483*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,qmin)1484*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, qmin) {
1485*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1486*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1487*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1488*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1489*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1490*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1491*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
1492*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1493*4bdc9457SAndroid Build Coastguard Worker }
1494*4bdc9457SAndroid Build Coastguard Worker }
1495*4bdc9457SAndroid Build Coastguard Worker }
1496*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X,qmax)1497*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMSIMD_X86_2X, qmax) {
1498*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1499*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1500*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1501*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1502*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1503*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1504*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
1505*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmsimd_x86_2x, xnn_init_f32_minmax_wasmsimd_params);
1506*4bdc9457SAndroid Build Coastguard Worker }
1507*4bdc9457SAndroid Build Coastguard Worker }
1508*4bdc9457SAndroid Build Coastguard Worker }
1509*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
1510*4bdc9457SAndroid Build Coastguard Worker
1511*4bdc9457SAndroid Build Coastguard Worker
1512*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,channels_eq_4)1513*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, channels_eq_4) {
1514*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1515*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1516*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1517*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1518*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1519*4bdc9457SAndroid Build Coastguard Worker }
1520*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,channels_div_4)1521*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, channels_div_4) {
1522*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
1523*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1524*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1525*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1526*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1527*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1528*4bdc9457SAndroid Build Coastguard Worker }
1529*4bdc9457SAndroid Build Coastguard Worker }
1530*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,channels_lt_4)1531*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, channels_lt_4) {
1532*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1533*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1534*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1535*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1536*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1537*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1538*4bdc9457SAndroid Build Coastguard Worker }
1539*4bdc9457SAndroid Build Coastguard Worker }
1540*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,channels_gt_4)1541*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, channels_gt_4) {
1542*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1543*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1544*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1545*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1546*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1547*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1548*4bdc9457SAndroid Build Coastguard Worker }
1549*4bdc9457SAndroid Build Coastguard Worker }
1550*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,rows_lt_2)1551*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, rows_lt_2) {
1552*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
1553*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1554*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1555*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1556*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1557*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1558*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1559*4bdc9457SAndroid Build Coastguard Worker }
1560*4bdc9457SAndroid Build Coastguard Worker }
1561*4bdc9457SAndroid Build Coastguard Worker }
1562*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,rows_div_2)1563*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, rows_div_2) {
1564*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
1565*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1566*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1567*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1568*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1569*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1570*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1571*4bdc9457SAndroid Build Coastguard Worker }
1572*4bdc9457SAndroid Build Coastguard Worker }
1573*4bdc9457SAndroid Build Coastguard Worker }
1574*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,rows_gt_2)1575*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, rows_gt_2) {
1576*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
1577*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1578*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1579*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1580*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1581*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1582*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1583*4bdc9457SAndroid Build Coastguard Worker }
1584*4bdc9457SAndroid Build Coastguard Worker }
1585*4bdc9457SAndroid Build Coastguard Worker }
1586*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,input_stride)1587*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, input_stride) {
1588*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1589*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1590*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1591*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1592*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1593*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1594*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
1595*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1596*4bdc9457SAndroid Build Coastguard Worker }
1597*4bdc9457SAndroid Build Coastguard Worker }
1598*4bdc9457SAndroid Build Coastguard Worker }
1599*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,output_stride)1600*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, output_stride) {
1601*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1602*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1603*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1604*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1605*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1606*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1607*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1608*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1609*4bdc9457SAndroid Build Coastguard Worker }
1610*4bdc9457SAndroid Build Coastguard Worker }
1611*4bdc9457SAndroid Build Coastguard Worker }
1612*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,inplace)1613*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, inplace) {
1614*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1615*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1616*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1617*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1618*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1619*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1620*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
1621*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1622*4bdc9457SAndroid Build Coastguard Worker }
1623*4bdc9457SAndroid Build Coastguard Worker }
1624*4bdc9457SAndroid Build Coastguard Worker }
1625*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,qmin)1626*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, qmin) {
1627*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1628*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1629*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1630*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1631*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1632*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1633*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
1634*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1635*4bdc9457SAndroid Build Coastguard Worker }
1636*4bdc9457SAndroid Build Coastguard Worker }
1637*4bdc9457SAndroid Build Coastguard Worker }
1638*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X,qmax)1639*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_FMA_2X, qmax) {
1640*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1641*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1642*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1643*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1644*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1645*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1646*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
1647*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1648*4bdc9457SAndroid Build Coastguard Worker }
1649*4bdc9457SAndroid Build Coastguard Worker }
1650*4bdc9457SAndroid Build Coastguard Worker }
1651*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMRELAXEDSIMD
1652*4bdc9457SAndroid Build Coastguard Worker
1653*4bdc9457SAndroid Build Coastguard Worker
1654*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,channels_eq_4)1655*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, channels_eq_4) {
1656*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1657*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1658*4bdc9457SAndroid Build Coastguard Worker .channels(4)
1659*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1660*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1661*4bdc9457SAndroid Build Coastguard Worker }
1662*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,channels_div_4)1663*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, channels_div_4) {
1664*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
1665*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1666*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1667*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1668*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1669*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1670*4bdc9457SAndroid Build Coastguard Worker }
1671*4bdc9457SAndroid Build Coastguard Worker }
1672*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,channels_lt_4)1673*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, channels_lt_4) {
1674*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
1675*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1676*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1677*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1678*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1679*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1680*4bdc9457SAndroid Build Coastguard Worker }
1681*4bdc9457SAndroid Build Coastguard Worker }
1682*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,channels_gt_4)1683*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, channels_gt_4) {
1684*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
1685*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1686*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1687*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1688*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1689*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1690*4bdc9457SAndroid Build Coastguard Worker }
1691*4bdc9457SAndroid Build Coastguard Worker }
1692*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,rows_lt_2)1693*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, rows_lt_2) {
1694*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
1695*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1696*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1697*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1698*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1699*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1700*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1701*4bdc9457SAndroid Build Coastguard Worker }
1702*4bdc9457SAndroid Build Coastguard Worker }
1703*4bdc9457SAndroid Build Coastguard Worker }
1704*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,rows_div_2)1705*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, rows_div_2) {
1706*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
1707*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1708*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1709*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1710*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1711*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1712*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1713*4bdc9457SAndroid Build Coastguard Worker }
1714*4bdc9457SAndroid Build Coastguard Worker }
1715*4bdc9457SAndroid Build Coastguard Worker }
1716*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,rows_gt_2)1717*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, rows_gt_2) {
1718*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
1719*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1720*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1721*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1722*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1723*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1724*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1725*4bdc9457SAndroid Build Coastguard Worker }
1726*4bdc9457SAndroid Build Coastguard Worker }
1727*4bdc9457SAndroid Build Coastguard Worker }
1728*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,input_stride)1729*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, input_stride) {
1730*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1731*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1732*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1733*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1734*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1735*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1736*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
1737*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1738*4bdc9457SAndroid Build Coastguard Worker }
1739*4bdc9457SAndroid Build Coastguard Worker }
1740*4bdc9457SAndroid Build Coastguard Worker }
1741*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,output_stride)1742*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, output_stride) {
1743*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1744*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1745*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1746*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1747*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1748*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1749*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
1750*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1751*4bdc9457SAndroid Build Coastguard Worker }
1752*4bdc9457SAndroid Build Coastguard Worker }
1753*4bdc9457SAndroid Build Coastguard Worker }
1754*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,inplace)1755*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, inplace) {
1756*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1757*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1758*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1759*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1760*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1761*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1762*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
1763*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1764*4bdc9457SAndroid Build Coastguard Worker }
1765*4bdc9457SAndroid Build Coastguard Worker }
1766*4bdc9457SAndroid Build Coastguard Worker }
1767*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,qmin)1768*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, qmin) {
1769*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1770*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1771*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1772*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1773*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1774*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1775*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
1776*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1777*4bdc9457SAndroid Build Coastguard Worker }
1778*4bdc9457SAndroid Build Coastguard Worker }
1779*4bdc9457SAndroid Build Coastguard Worker }
1780*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X,qmax)1781*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASMRELAXEDSIMD_2X, qmax) {
1782*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1783*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
1784*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1785*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
1786*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1787*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1788*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
1789*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1790*4bdc9457SAndroid Build Coastguard Worker }
1791*4bdc9457SAndroid Build Coastguard Worker }
1792*4bdc9457SAndroid Build Coastguard Worker }
1793*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMRELAXEDSIMD
1794*4bdc9457SAndroid Build Coastguard Worker
1795*4bdc9457SAndroid Build Coastguard Worker
1796*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,channels_eq_8)1797*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, channels_eq_8) {
1798*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1799*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1800*4bdc9457SAndroid Build Coastguard Worker .channels(8)
1801*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1802*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1803*4bdc9457SAndroid Build Coastguard Worker }
1804*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,channels_div_8)1805*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, channels_div_8) {
1806*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) {
1807*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1808*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1809*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1810*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1811*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1812*4bdc9457SAndroid Build Coastguard Worker }
1813*4bdc9457SAndroid Build Coastguard Worker }
1814*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,channels_lt_8)1815*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, channels_lt_8) {
1816*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) {
1817*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1818*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1819*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1820*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1821*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1822*4bdc9457SAndroid Build Coastguard Worker }
1823*4bdc9457SAndroid Build Coastguard Worker }
1824*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,channels_gt_8)1825*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, channels_gt_8) {
1826*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) {
1827*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1828*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1829*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1830*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1831*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1832*4bdc9457SAndroid Build Coastguard Worker }
1833*4bdc9457SAndroid Build Coastguard Worker }
1834*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,rows_lt_2)1835*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, rows_lt_2) {
1836*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
1837*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1838*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1839*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1840*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1841*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1842*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1843*4bdc9457SAndroid Build Coastguard Worker }
1844*4bdc9457SAndroid Build Coastguard Worker }
1845*4bdc9457SAndroid Build Coastguard Worker }
1846*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,rows_div_2)1847*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, rows_div_2) {
1848*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
1849*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1850*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1851*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1852*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1853*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1854*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1855*4bdc9457SAndroid Build Coastguard Worker }
1856*4bdc9457SAndroid Build Coastguard Worker }
1857*4bdc9457SAndroid Build Coastguard Worker }
1858*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,rows_gt_2)1859*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, rows_gt_2) {
1860*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
1861*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1862*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1863*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1864*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1865*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1866*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1867*4bdc9457SAndroid Build Coastguard Worker }
1868*4bdc9457SAndroid Build Coastguard Worker }
1869*4bdc9457SAndroid Build Coastguard Worker }
1870*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,input_stride)1871*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, input_stride) {
1872*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1873*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1874*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1875*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1876*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1877*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1878*4bdc9457SAndroid Build Coastguard Worker .input_stride(43)
1879*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1880*4bdc9457SAndroid Build Coastguard Worker }
1881*4bdc9457SAndroid Build Coastguard Worker }
1882*4bdc9457SAndroid Build Coastguard Worker }
1883*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,output_stride)1884*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, output_stride) {
1885*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1886*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1887*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1888*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1889*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1890*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1891*4bdc9457SAndroid Build Coastguard Worker .output_stride(43)
1892*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1893*4bdc9457SAndroid Build Coastguard Worker }
1894*4bdc9457SAndroid Build Coastguard Worker }
1895*4bdc9457SAndroid Build Coastguard Worker }
1896*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,inplace)1897*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, inplace) {
1898*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1899*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1900*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1901*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1902*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1903*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1904*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
1905*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1906*4bdc9457SAndroid Build Coastguard Worker }
1907*4bdc9457SAndroid Build Coastguard Worker }
1908*4bdc9457SAndroid Build Coastguard Worker }
1909*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,qmin)1910*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, qmin) {
1911*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1912*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1913*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1914*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1915*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1916*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1917*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
1918*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1919*4bdc9457SAndroid Build Coastguard Worker }
1920*4bdc9457SAndroid Build Coastguard Worker }
1921*4bdc9457SAndroid Build Coastguard Worker }
1922*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X,qmax)1923*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_FMA_2X, qmax) {
1924*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
1925*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1926*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1927*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1928*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1929*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1930*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
1931*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_fma_2x, xnn_init_f32_minmax_wasmsimd_params);
1932*4bdc9457SAndroid Build Coastguard Worker }
1933*4bdc9457SAndroid Build Coastguard Worker }
1934*4bdc9457SAndroid Build Coastguard Worker }
1935*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMRELAXEDSIMD
1936*4bdc9457SAndroid Build Coastguard Worker
1937*4bdc9457SAndroid Build Coastguard Worker
1938*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,channels_eq_8)1939*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, channels_eq_8) {
1940*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1941*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1942*4bdc9457SAndroid Build Coastguard Worker .channels(8)
1943*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1944*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1945*4bdc9457SAndroid Build Coastguard Worker }
1946*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,channels_div_8)1947*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, channels_div_8) {
1948*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 16; channels < 80; channels += 8) {
1949*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1950*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1951*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1952*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1953*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1954*4bdc9457SAndroid Build Coastguard Worker }
1955*4bdc9457SAndroid Build Coastguard Worker }
1956*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,channels_lt_8)1957*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, channels_lt_8) {
1958*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 8; channels++) {
1959*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1960*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1961*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1962*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1963*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1964*4bdc9457SAndroid Build Coastguard Worker }
1965*4bdc9457SAndroid Build Coastguard Worker }
1966*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,channels_gt_8)1967*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, channels_gt_8) {
1968*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 9; channels < 16; channels++) {
1969*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1970*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1971*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1972*4bdc9457SAndroid Build Coastguard Worker .rows(2)
1973*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1974*4bdc9457SAndroid Build Coastguard Worker }
1975*4bdc9457SAndroid Build Coastguard Worker }
1976*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,rows_lt_2)1977*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, rows_lt_2) {
1978*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
1979*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1980*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1981*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1982*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1983*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1984*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1985*4bdc9457SAndroid Build Coastguard Worker }
1986*4bdc9457SAndroid Build Coastguard Worker }
1987*4bdc9457SAndroid Build Coastguard Worker }
1988*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,rows_div_2)1989*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, rows_div_2) {
1990*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
1991*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
1992*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
1993*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
1994*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
1995*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
1996*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
1997*4bdc9457SAndroid Build Coastguard Worker }
1998*4bdc9457SAndroid Build Coastguard Worker }
1999*4bdc9457SAndroid Build Coastguard Worker }
2000*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,rows_gt_2)2001*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, rows_gt_2) {
2002*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
2003*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
2004*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2005*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
2006*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2007*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2008*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
2009*4bdc9457SAndroid Build Coastguard Worker }
2010*4bdc9457SAndroid Build Coastguard Worker }
2011*4bdc9457SAndroid Build Coastguard Worker }
2012*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,input_stride)2013*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, input_stride) {
2014*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2015*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
2016*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2017*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
2018*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2019*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2020*4bdc9457SAndroid Build Coastguard Worker .input_stride(43)
2021*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
2022*4bdc9457SAndroid Build Coastguard Worker }
2023*4bdc9457SAndroid Build Coastguard Worker }
2024*4bdc9457SAndroid Build Coastguard Worker }
2025*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,output_stride)2026*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, output_stride) {
2027*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2028*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
2029*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2030*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
2031*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2032*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2033*4bdc9457SAndroid Build Coastguard Worker .output_stride(43)
2034*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
2035*4bdc9457SAndroid Build Coastguard Worker }
2036*4bdc9457SAndroid Build Coastguard Worker }
2037*4bdc9457SAndroid Build Coastguard Worker }
2038*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,inplace)2039*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, inplace) {
2040*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2041*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
2042*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2043*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
2044*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2045*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2046*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
2047*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
2048*4bdc9457SAndroid Build Coastguard Worker }
2049*4bdc9457SAndroid Build Coastguard Worker }
2050*4bdc9457SAndroid Build Coastguard Worker }
2051*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,qmin)2052*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, qmin) {
2053*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2054*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
2055*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2056*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
2057*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2058*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2059*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
2060*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
2061*4bdc9457SAndroid Build Coastguard Worker }
2062*4bdc9457SAndroid Build Coastguard Worker }
2063*4bdc9457SAndroid Build Coastguard Worker }
2064*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X,qmax)2065*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C8__WASMRELAXEDSIMD_2X, qmax) {
2066*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2067*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 40; channels += 7) {
2068*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2069*4bdc9457SAndroid Build Coastguard Worker .channel_tile(8)
2070*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2071*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2072*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
2073*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c8__wasmrelaxedsimd_2x, xnn_init_f32_minmax_wasmsimd_params);
2074*4bdc9457SAndroid Build Coastguard Worker }
2075*4bdc9457SAndroid Build Coastguard Worker }
2076*4bdc9457SAndroid Build Coastguard Worker }
2077*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASMRELAXEDSIMD
2078*4bdc9457SAndroid Build Coastguard Worker
2079*4bdc9457SAndroid Build Coastguard Worker
2080*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,channels_eq_1)2081*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, channels_eq_1) {
2082*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2083*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2084*4bdc9457SAndroid Build Coastguard Worker .channels(1)
2085*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2086*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2087*4bdc9457SAndroid Build Coastguard Worker }
2088*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,channels_gt_1)2089*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, channels_gt_1) {
2090*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
2091*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2092*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2093*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2094*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2095*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2096*4bdc9457SAndroid Build Coastguard Worker }
2097*4bdc9457SAndroid Build Coastguard Worker }
2098*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,rows_lt_2)2099*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, rows_lt_2) {
2100*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
2101*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2102*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2103*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2104*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2105*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2106*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2107*4bdc9457SAndroid Build Coastguard Worker }
2108*4bdc9457SAndroid Build Coastguard Worker }
2109*4bdc9457SAndroid Build Coastguard Worker }
2110*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,rows_div_2)2111*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, rows_div_2) {
2112*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
2113*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2114*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2115*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2116*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2117*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2118*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2119*4bdc9457SAndroid Build Coastguard Worker }
2120*4bdc9457SAndroid Build Coastguard Worker }
2121*4bdc9457SAndroid Build Coastguard Worker }
2122*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,rows_gt_2)2123*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, rows_gt_2) {
2124*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
2125*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2126*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2127*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2128*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2129*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2130*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2131*4bdc9457SAndroid Build Coastguard Worker }
2132*4bdc9457SAndroid Build Coastguard Worker }
2133*4bdc9457SAndroid Build Coastguard Worker }
2134*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,input_stride)2135*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, input_stride) {
2136*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2137*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2138*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2139*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2140*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2141*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2142*4bdc9457SAndroid Build Coastguard Worker .input_stride(7)
2143*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2144*4bdc9457SAndroid Build Coastguard Worker }
2145*4bdc9457SAndroid Build Coastguard Worker }
2146*4bdc9457SAndroid Build Coastguard Worker }
2147*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,output_stride)2148*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, output_stride) {
2149*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2150*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2151*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2152*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2153*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2154*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2155*4bdc9457SAndroid Build Coastguard Worker .output_stride(7)
2156*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2157*4bdc9457SAndroid Build Coastguard Worker }
2158*4bdc9457SAndroid Build Coastguard Worker }
2159*4bdc9457SAndroid Build Coastguard Worker }
2160*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,inplace)2161*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, inplace) {
2162*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2163*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2164*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2165*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2166*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2167*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2168*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
2169*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2170*4bdc9457SAndroid Build Coastguard Worker }
2171*4bdc9457SAndroid Build Coastguard Worker }
2172*4bdc9457SAndroid Build Coastguard Worker }
2173*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,qmin)2174*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, qmin) {
2175*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2176*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2177*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2178*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2179*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2180*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2181*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
2182*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2183*4bdc9457SAndroid Build Coastguard Worker }
2184*4bdc9457SAndroid Build Coastguard Worker }
2185*4bdc9457SAndroid Build Coastguard Worker }
2186*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X,qmax)2187*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__WASM_2X, qmax) {
2188*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2189*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2190*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2191*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2192*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2193*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2194*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
2195*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__wasm_2x, xnn_init_f32_minmax_scalar_params);
2196*4bdc9457SAndroid Build Coastguard Worker }
2197*4bdc9457SAndroid Build Coastguard Worker }
2198*4bdc9457SAndroid Build Coastguard Worker }
2199*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
2200*4bdc9457SAndroid Build Coastguard Worker
2201*4bdc9457SAndroid Build Coastguard Worker
2202*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,channels_eq_2)2203*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, channels_eq_2) {
2204*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2205*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2206*4bdc9457SAndroid Build Coastguard Worker .channels(2)
2207*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2208*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2209*4bdc9457SAndroid Build Coastguard Worker }
2210*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,channels_div_2)2211*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, channels_div_2) {
2212*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 4; channels < 20; channels += 2) {
2213*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2214*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2215*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2216*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2217*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2218*4bdc9457SAndroid Build Coastguard Worker }
2219*4bdc9457SAndroid Build Coastguard Worker }
2220*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,channels_lt_2)2221*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, channels_lt_2) {
2222*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 2; channels++) {
2223*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2224*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2225*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2226*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2227*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2228*4bdc9457SAndroid Build Coastguard Worker }
2229*4bdc9457SAndroid Build Coastguard Worker }
2230*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,channels_gt_2)2231*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, channels_gt_2) {
2232*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 3; channels < 4; channels++) {
2233*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2234*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2235*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2236*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2237*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2238*4bdc9457SAndroid Build Coastguard Worker }
2239*4bdc9457SAndroid Build Coastguard Worker }
2240*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,rows_lt_2)2241*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, rows_lt_2) {
2242*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
2243*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2244*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2245*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2246*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2247*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2248*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2249*4bdc9457SAndroid Build Coastguard Worker }
2250*4bdc9457SAndroid Build Coastguard Worker }
2251*4bdc9457SAndroid Build Coastguard Worker }
2252*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,rows_div_2)2253*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, rows_div_2) {
2254*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
2255*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2256*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2257*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2258*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2259*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2260*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2261*4bdc9457SAndroid Build Coastguard Worker }
2262*4bdc9457SAndroid Build Coastguard Worker }
2263*4bdc9457SAndroid Build Coastguard Worker }
2264*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,rows_gt_2)2265*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, rows_gt_2) {
2266*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
2267*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2268*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2269*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2270*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2271*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2272*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2273*4bdc9457SAndroid Build Coastguard Worker }
2274*4bdc9457SAndroid Build Coastguard Worker }
2275*4bdc9457SAndroid Build Coastguard Worker }
2276*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,input_stride)2277*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, input_stride) {
2278*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2279*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2280*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2281*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2282*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2283*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2284*4bdc9457SAndroid Build Coastguard Worker .input_stride(13)
2285*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2286*4bdc9457SAndroid Build Coastguard Worker }
2287*4bdc9457SAndroid Build Coastguard Worker }
2288*4bdc9457SAndroid Build Coastguard Worker }
2289*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,output_stride)2290*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, output_stride) {
2291*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2292*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2293*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2294*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2295*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2296*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2297*4bdc9457SAndroid Build Coastguard Worker .output_stride(13)
2298*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2299*4bdc9457SAndroid Build Coastguard Worker }
2300*4bdc9457SAndroid Build Coastguard Worker }
2301*4bdc9457SAndroid Build Coastguard Worker }
2302*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,inplace)2303*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, inplace) {
2304*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2305*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2306*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2307*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2308*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2309*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2310*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
2311*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2312*4bdc9457SAndroid Build Coastguard Worker }
2313*4bdc9457SAndroid Build Coastguard Worker }
2314*4bdc9457SAndroid Build Coastguard Worker }
2315*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,qmin)2316*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, qmin) {
2317*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2318*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2319*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2320*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2321*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2322*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2323*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
2324*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2325*4bdc9457SAndroid Build Coastguard Worker }
2326*4bdc9457SAndroid Build Coastguard Worker }
2327*4bdc9457SAndroid Build Coastguard Worker }
2328*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X,qmax)2329*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__WASM_2X, qmax) {
2330*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2331*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2332*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2333*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2334*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2335*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2336*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
2337*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__wasm_2x, xnn_init_f32_minmax_scalar_params);
2338*4bdc9457SAndroid Build Coastguard Worker }
2339*4bdc9457SAndroid Build Coastguard Worker }
2340*4bdc9457SAndroid Build Coastguard Worker }
2341*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
2342*4bdc9457SAndroid Build Coastguard Worker
2343*4bdc9457SAndroid Build Coastguard Worker
2344*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,channels_eq_4)2345*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, channels_eq_4) {
2346*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2347*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2348*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2349*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2350*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2351*4bdc9457SAndroid Build Coastguard Worker }
2352*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,channels_div_4)2353*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, channels_div_4) {
2354*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
2355*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2356*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2357*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2358*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2359*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2360*4bdc9457SAndroid Build Coastguard Worker }
2361*4bdc9457SAndroid Build Coastguard Worker }
2362*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,channels_lt_4)2363*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, channels_lt_4) {
2364*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2365*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2366*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2367*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2368*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2369*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2370*4bdc9457SAndroid Build Coastguard Worker }
2371*4bdc9457SAndroid Build Coastguard Worker }
2372*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,channels_gt_4)2373*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, channels_gt_4) {
2374*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2375*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2376*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2377*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2378*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2379*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2380*4bdc9457SAndroid Build Coastguard Worker }
2381*4bdc9457SAndroid Build Coastguard Worker }
2382*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,rows_lt_2)2383*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, rows_lt_2) {
2384*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
2385*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2386*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2387*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2388*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2389*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2390*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2391*4bdc9457SAndroid Build Coastguard Worker }
2392*4bdc9457SAndroid Build Coastguard Worker }
2393*4bdc9457SAndroid Build Coastguard Worker }
2394*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,rows_div_2)2395*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, rows_div_2) {
2396*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
2397*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2398*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2399*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2400*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2401*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2402*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2403*4bdc9457SAndroid Build Coastguard Worker }
2404*4bdc9457SAndroid Build Coastguard Worker }
2405*4bdc9457SAndroid Build Coastguard Worker }
2406*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,rows_gt_2)2407*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, rows_gt_2) {
2408*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
2409*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2410*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2411*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2412*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2413*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2414*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2415*4bdc9457SAndroid Build Coastguard Worker }
2416*4bdc9457SAndroid Build Coastguard Worker }
2417*4bdc9457SAndroid Build Coastguard Worker }
2418*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,input_stride)2419*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, input_stride) {
2420*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2421*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2422*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2423*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2424*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2425*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2426*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
2427*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2428*4bdc9457SAndroid Build Coastguard Worker }
2429*4bdc9457SAndroid Build Coastguard Worker }
2430*4bdc9457SAndroid Build Coastguard Worker }
2431*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,output_stride)2432*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, output_stride) {
2433*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2434*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2435*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2436*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2437*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2438*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2439*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
2440*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2441*4bdc9457SAndroid Build Coastguard Worker }
2442*4bdc9457SAndroid Build Coastguard Worker }
2443*4bdc9457SAndroid Build Coastguard Worker }
2444*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,inplace)2445*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, inplace) {
2446*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2447*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2448*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2449*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2450*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2451*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2452*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
2453*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2454*4bdc9457SAndroid Build Coastguard Worker }
2455*4bdc9457SAndroid Build Coastguard Worker }
2456*4bdc9457SAndroid Build Coastguard Worker }
2457*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,qmin)2458*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, qmin) {
2459*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2460*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2461*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2462*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2463*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2464*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2465*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
2466*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2467*4bdc9457SAndroid Build Coastguard Worker }
2468*4bdc9457SAndroid Build Coastguard Worker }
2469*4bdc9457SAndroid Build Coastguard Worker }
2470*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X,qmax)2471*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__WASM_2X, qmax) {
2472*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2473*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2474*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2475*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2476*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2477*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2478*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
2479*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__wasm_2x, xnn_init_f32_minmax_scalar_params);
2480*4bdc9457SAndroid Build Coastguard Worker }
2481*4bdc9457SAndroid Build Coastguard Worker }
2482*4bdc9457SAndroid Build Coastguard Worker }
2483*4bdc9457SAndroid Build Coastguard Worker #endif // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
2484*4bdc9457SAndroid Build Coastguard Worker
2485*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,channels_eq_1)2486*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, channels_eq_1) {
2487*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2488*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2489*4bdc9457SAndroid Build Coastguard Worker .channels(1)
2490*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2491*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2492*4bdc9457SAndroid Build Coastguard Worker }
2493*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,channels_gt_1)2494*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, channels_gt_1) {
2495*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 2; channels < 10; channels++) {
2496*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2497*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2498*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2499*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2500*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2501*4bdc9457SAndroid Build Coastguard Worker }
2502*4bdc9457SAndroid Build Coastguard Worker }
2503*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,rows_lt_2)2504*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, rows_lt_2) {
2505*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
2506*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2507*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2508*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2509*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2510*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2511*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2512*4bdc9457SAndroid Build Coastguard Worker }
2513*4bdc9457SAndroid Build Coastguard Worker }
2514*4bdc9457SAndroid Build Coastguard Worker }
2515*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,rows_div_2)2516*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, rows_div_2) {
2517*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
2518*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2519*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2520*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2521*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2522*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2523*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2524*4bdc9457SAndroid Build Coastguard Worker }
2525*4bdc9457SAndroid Build Coastguard Worker }
2526*4bdc9457SAndroid Build Coastguard Worker }
2527*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,rows_gt_2)2528*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, rows_gt_2) {
2529*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
2530*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2531*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2532*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2533*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2534*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2535*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2536*4bdc9457SAndroid Build Coastguard Worker }
2537*4bdc9457SAndroid Build Coastguard Worker }
2538*4bdc9457SAndroid Build Coastguard Worker }
2539*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,input_stride)2540*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, input_stride) {
2541*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2542*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2543*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2544*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2545*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2546*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2547*4bdc9457SAndroid Build Coastguard Worker .input_stride(7)
2548*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2549*4bdc9457SAndroid Build Coastguard Worker }
2550*4bdc9457SAndroid Build Coastguard Worker }
2551*4bdc9457SAndroid Build Coastguard Worker }
2552*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,output_stride)2553*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, output_stride) {
2554*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2555*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2556*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2557*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2558*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2559*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2560*4bdc9457SAndroid Build Coastguard Worker .output_stride(7)
2561*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2562*4bdc9457SAndroid Build Coastguard Worker }
2563*4bdc9457SAndroid Build Coastguard Worker }
2564*4bdc9457SAndroid Build Coastguard Worker }
2565*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,inplace)2566*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, inplace) {
2567*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2568*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2569*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2570*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2571*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2572*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2573*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
2574*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2575*4bdc9457SAndroid Build Coastguard Worker }
2576*4bdc9457SAndroid Build Coastguard Worker }
2577*4bdc9457SAndroid Build Coastguard Worker }
2578*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,qmin)2579*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, qmin) {
2580*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2581*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2582*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2583*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2584*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2585*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2586*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
2587*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2588*4bdc9457SAndroid Build Coastguard Worker }
2589*4bdc9457SAndroid Build Coastguard Worker }
2590*4bdc9457SAndroid Build Coastguard Worker }
2591*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X,qmax)2592*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C1__SCALAR_2X, qmax) {
2593*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2594*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 5; channels += 1) {
2595*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2596*4bdc9457SAndroid Build Coastguard Worker .channel_tile(1)
2597*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2598*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2599*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
2600*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c1__scalar_2x, xnn_init_f32_minmax_scalar_params);
2601*4bdc9457SAndroid Build Coastguard Worker }
2602*4bdc9457SAndroid Build Coastguard Worker }
2603*4bdc9457SAndroid Build Coastguard Worker }
2604*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,channels_eq_2)2605*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, channels_eq_2) {
2606*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2607*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2608*4bdc9457SAndroid Build Coastguard Worker .channels(2)
2609*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2610*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2611*4bdc9457SAndroid Build Coastguard Worker }
2612*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,channels_div_2)2613*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, channels_div_2) {
2614*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 4; channels < 20; channels += 2) {
2615*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2616*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2617*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2618*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2619*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2620*4bdc9457SAndroid Build Coastguard Worker }
2621*4bdc9457SAndroid Build Coastguard Worker }
2622*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,channels_lt_2)2623*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, channels_lt_2) {
2624*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 2; channels++) {
2625*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2626*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2627*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2628*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2629*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2630*4bdc9457SAndroid Build Coastguard Worker }
2631*4bdc9457SAndroid Build Coastguard Worker }
2632*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,channels_gt_2)2633*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, channels_gt_2) {
2634*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 3; channels < 4; channels++) {
2635*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2636*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2637*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2638*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2639*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2640*4bdc9457SAndroid Build Coastguard Worker }
2641*4bdc9457SAndroid Build Coastguard Worker }
2642*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,rows_lt_2)2643*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, rows_lt_2) {
2644*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
2645*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2646*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2647*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2648*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2649*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2650*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2651*4bdc9457SAndroid Build Coastguard Worker }
2652*4bdc9457SAndroid Build Coastguard Worker }
2653*4bdc9457SAndroid Build Coastguard Worker }
2654*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,rows_div_2)2655*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, rows_div_2) {
2656*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
2657*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2658*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2659*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2660*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2661*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2662*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2663*4bdc9457SAndroid Build Coastguard Worker }
2664*4bdc9457SAndroid Build Coastguard Worker }
2665*4bdc9457SAndroid Build Coastguard Worker }
2666*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,rows_gt_2)2667*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, rows_gt_2) {
2668*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
2669*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2670*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2671*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2672*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2673*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2674*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2675*4bdc9457SAndroid Build Coastguard Worker }
2676*4bdc9457SAndroid Build Coastguard Worker }
2677*4bdc9457SAndroid Build Coastguard Worker }
2678*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,input_stride)2679*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, input_stride) {
2680*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2681*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2682*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2683*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2684*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2685*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2686*4bdc9457SAndroid Build Coastguard Worker .input_stride(13)
2687*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2688*4bdc9457SAndroid Build Coastguard Worker }
2689*4bdc9457SAndroid Build Coastguard Worker }
2690*4bdc9457SAndroid Build Coastguard Worker }
2691*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,output_stride)2692*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, output_stride) {
2693*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2694*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2695*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2696*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2697*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2698*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2699*4bdc9457SAndroid Build Coastguard Worker .output_stride(13)
2700*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2701*4bdc9457SAndroid Build Coastguard Worker }
2702*4bdc9457SAndroid Build Coastguard Worker }
2703*4bdc9457SAndroid Build Coastguard Worker }
2704*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,inplace)2705*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, inplace) {
2706*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2707*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2708*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2709*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2710*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2711*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2712*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
2713*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2714*4bdc9457SAndroid Build Coastguard Worker }
2715*4bdc9457SAndroid Build Coastguard Worker }
2716*4bdc9457SAndroid Build Coastguard Worker }
2717*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,qmin)2718*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, qmin) {
2719*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2720*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2721*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2722*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2723*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2724*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2725*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
2726*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2727*4bdc9457SAndroid Build Coastguard Worker }
2728*4bdc9457SAndroid Build Coastguard Worker }
2729*4bdc9457SAndroid Build Coastguard Worker }
2730*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X,qmax)2731*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C2__SCALAR_2X, qmax) {
2732*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2733*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 10; channels += 1) {
2734*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2735*4bdc9457SAndroid Build Coastguard Worker .channel_tile(2)
2736*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2737*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2738*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
2739*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c2__scalar_2x, xnn_init_f32_minmax_scalar_params);
2740*4bdc9457SAndroid Build Coastguard Worker }
2741*4bdc9457SAndroid Build Coastguard Worker }
2742*4bdc9457SAndroid Build Coastguard Worker }
2743*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,channels_eq_4)2744*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, channels_eq_4) {
2745*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2746*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2747*4bdc9457SAndroid Build Coastguard Worker .channels(4)
2748*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2749*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2750*4bdc9457SAndroid Build Coastguard Worker }
2751*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,channels_div_4)2752*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, channels_div_4) {
2753*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 8; channels < 40; channels += 4) {
2754*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2755*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2756*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2757*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2758*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2759*4bdc9457SAndroid Build Coastguard Worker }
2760*4bdc9457SAndroid Build Coastguard Worker }
2761*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,channels_lt_4)2762*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, channels_lt_4) {
2763*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels < 4; channels++) {
2764*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2765*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2766*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2767*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2768*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2769*4bdc9457SAndroid Build Coastguard Worker }
2770*4bdc9457SAndroid Build Coastguard Worker }
2771*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,channels_gt_4)2772*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, channels_gt_4) {
2773*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 5; channels < 8; channels++) {
2774*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2775*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2776*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2777*4bdc9457SAndroid Build Coastguard Worker .rows(2)
2778*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2779*4bdc9457SAndroid Build Coastguard Worker }
2780*4bdc9457SAndroid Build Coastguard Worker }
2781*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,rows_lt_2)2782*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, rows_lt_2) {
2783*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows < 2; rows++) {
2784*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2785*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2786*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2787*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2788*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2789*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2790*4bdc9457SAndroid Build Coastguard Worker }
2791*4bdc9457SAndroid Build Coastguard Worker }
2792*4bdc9457SAndroid Build Coastguard Worker }
2793*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,rows_div_2)2794*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, rows_div_2) {
2795*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 4; rows <= 8; rows += 2) {
2796*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2797*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2798*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2799*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2800*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2801*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2802*4bdc9457SAndroid Build Coastguard Worker }
2803*4bdc9457SAndroid Build Coastguard Worker }
2804*4bdc9457SAndroid Build Coastguard Worker }
2805*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,rows_gt_2)2806*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, rows_gt_2) {
2807*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 3; rows < 4; rows++) {
2808*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2809*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2810*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2811*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2812*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2813*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2814*4bdc9457SAndroid Build Coastguard Worker }
2815*4bdc9457SAndroid Build Coastguard Worker }
2816*4bdc9457SAndroid Build Coastguard Worker }
2817*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,input_stride)2818*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, input_stride) {
2819*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2820*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2821*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2822*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2823*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2824*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2825*4bdc9457SAndroid Build Coastguard Worker .input_stride(23)
2826*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2827*4bdc9457SAndroid Build Coastguard Worker }
2828*4bdc9457SAndroid Build Coastguard Worker }
2829*4bdc9457SAndroid Build Coastguard Worker }
2830*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,output_stride)2831*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, output_stride) {
2832*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2833*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2834*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2835*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2836*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2837*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2838*4bdc9457SAndroid Build Coastguard Worker .output_stride(23)
2839*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2840*4bdc9457SAndroid Build Coastguard Worker }
2841*4bdc9457SAndroid Build Coastguard Worker }
2842*4bdc9457SAndroid Build Coastguard Worker }
2843*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,inplace)2844*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, inplace) {
2845*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2846*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2847*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2848*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2849*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2850*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2851*4bdc9457SAndroid Build Coastguard Worker .inplace(true)
2852*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2853*4bdc9457SAndroid Build Coastguard Worker }
2854*4bdc9457SAndroid Build Coastguard Worker }
2855*4bdc9457SAndroid Build Coastguard Worker }
2856*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,qmin)2857*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, qmin) {
2858*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2859*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2860*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2861*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2862*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2863*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2864*4bdc9457SAndroid Build Coastguard Worker .qmin(128)
2865*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2866*4bdc9457SAndroid Build Coastguard Worker }
2867*4bdc9457SAndroid Build Coastguard Worker }
2868*4bdc9457SAndroid Build Coastguard Worker }
2869*4bdc9457SAndroid Build Coastguard Worker
TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X,qmax)2870*4bdc9457SAndroid Build Coastguard Worker TEST(F32_VMULCADDC_MINMAX_C4__SCALAR_2X, qmax) {
2871*4bdc9457SAndroid Build Coastguard Worker for (size_t rows = 1; rows <= 6; rows += 1) {
2872*4bdc9457SAndroid Build Coastguard Worker for (size_t channels = 1; channels <= 20; channels += 3) {
2873*4bdc9457SAndroid Build Coastguard Worker VMulCAddCMicrokernelTester()
2874*4bdc9457SAndroid Build Coastguard Worker .channel_tile(4)
2875*4bdc9457SAndroid Build Coastguard Worker .channels(channels)
2876*4bdc9457SAndroid Build Coastguard Worker .rows(rows)
2877*4bdc9457SAndroid Build Coastguard Worker .qmax(128)
2878*4bdc9457SAndroid Build Coastguard Worker .Test(xnn_f32_vmulcaddc_minmax_ukernel_c4__scalar_2x, xnn_init_f32_minmax_scalar_params);
2879*4bdc9457SAndroid Build Coastguard Worker }
2880*4bdc9457SAndroid Build Coastguard Worker }
2881*4bdc9457SAndroid Build Coastguard Worker }