xref: /aosp_15_r20/external/XNNPACK/test/qs8-vmulc-minmax-rndnu.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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/qs8-vmulc-minmax-rndnu.yaml
8*4bdc9457SAndroid Build Coastguard Worker //   Generator: tools/generate-vbinary-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/microparams-init.h>
17*4bdc9457SAndroid Build Coastguard Worker #include <xnnpack/vmul.h>
18*4bdc9457SAndroid Build Coastguard Worker #include "vmulc-microkernel-tester.h"
19*4bdc9457SAndroid Build Coastguard Worker 
20*4bdc9457SAndroid Build Coastguard Worker 
21*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,batch_eq_8)22*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, batch_eq_8) {
23*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
24*4bdc9457SAndroid Build Coastguard Worker     VMulCMicrokernelTester()
25*4bdc9457SAndroid Build Coastguard Worker       .batch_size(8)
26*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
27*4bdc9457SAndroid Build Coastguard Worker   }
28*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,batch_div_8)29*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, batch_div_8) {
30*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
31*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
32*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
33*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
34*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
35*4bdc9457SAndroid Build Coastguard Worker     }
36*4bdc9457SAndroid Build Coastguard Worker   }
37*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,batch_lt_8)38*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, batch_lt_8) {
39*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
40*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
41*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
42*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
43*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
44*4bdc9457SAndroid Build Coastguard Worker     }
45*4bdc9457SAndroid Build Coastguard Worker   }
46*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,batch_gt_8)47*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, batch_gt_8) {
48*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
49*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
50*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
51*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
52*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
53*4bdc9457SAndroid Build Coastguard Worker     }
54*4bdc9457SAndroid Build Coastguard Worker   }
55*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,inplace)56*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, inplace) {
57*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
58*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
59*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
60*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
61*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
62*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
63*4bdc9457SAndroid Build Coastguard Worker     }
64*4bdc9457SAndroid Build Coastguard Worker   }
65*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,a_zero_point)66*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, a_zero_point) {
67*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
68*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
69*4bdc9457SAndroid Build Coastguard Worker       for (int32_t a_zero_point = -128; a_zero_point <= 127; a_zero_point += 51) {
70*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
71*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
72*4bdc9457SAndroid Build Coastguard Worker           .a_zero_point(a_zero_point)
73*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
74*4bdc9457SAndroid Build Coastguard Worker       }
75*4bdc9457SAndroid Build Coastguard Worker     }
76*4bdc9457SAndroid Build Coastguard Worker   }
77*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,b_zero_point)78*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, b_zero_point) {
79*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
80*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
81*4bdc9457SAndroid Build Coastguard Worker       for (int32_t b_zero_point = -128; b_zero_point <= 127; b_zero_point += 51) {
82*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
83*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
84*4bdc9457SAndroid Build Coastguard Worker           .b_zero_point(b_zero_point)
85*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
86*4bdc9457SAndroid Build Coastguard Worker       }
87*4bdc9457SAndroid Build Coastguard Worker     }
88*4bdc9457SAndroid Build Coastguard Worker   }
89*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,y_zero_point)90*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, y_zero_point) {
91*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
92*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
93*4bdc9457SAndroid Build Coastguard Worker       for (int32_t y_zero_point = -128; y_zero_point <= 127; y_zero_point += 51) {
94*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
95*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
96*4bdc9457SAndroid Build Coastguard Worker           .y_zero_point(y_zero_point)
97*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
98*4bdc9457SAndroid Build Coastguard Worker       }
99*4bdc9457SAndroid Build Coastguard Worker     }
100*4bdc9457SAndroid Build Coastguard Worker   }
101*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,a_scale)102*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, a_scale) {
103*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
104*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
105*4bdc9457SAndroid Build Coastguard Worker       for (float a_scale = 0.1f; a_scale <= 10.0f; a_scale *= 3.14f) {
106*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
107*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
108*4bdc9457SAndroid Build Coastguard Worker           .a_scale(a_scale)
109*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
110*4bdc9457SAndroid Build Coastguard Worker       }
111*4bdc9457SAndroid Build Coastguard Worker     }
112*4bdc9457SAndroid Build Coastguard Worker   }
113*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,b_scale)114*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, b_scale) {
115*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
116*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
117*4bdc9457SAndroid Build Coastguard Worker       for (float b_scale = 0.1f; b_scale <= 10.0f; b_scale *= 3.14f) {
118*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
119*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
120*4bdc9457SAndroid Build Coastguard Worker           .b_scale(b_scale)
121*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
122*4bdc9457SAndroid Build Coastguard Worker       }
123*4bdc9457SAndroid Build Coastguard Worker     }
124*4bdc9457SAndroid Build Coastguard Worker   }
125*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,y_scale)126*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, y_scale) {
127*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
128*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
129*4bdc9457SAndroid Build Coastguard Worker       for (float y_scale = 0.1f; y_scale <= 10.0f; y_scale *= 3.14f) {
130*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
131*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
132*4bdc9457SAndroid Build Coastguard Worker           .y_scale(y_scale)
133*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
134*4bdc9457SAndroid Build Coastguard Worker       }
135*4bdc9457SAndroid Build Coastguard Worker     }
136*4bdc9457SAndroid Build Coastguard Worker   }
137*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,qmin)138*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, qmin) {
139*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
140*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
141*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
142*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
143*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
144*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
145*4bdc9457SAndroid Build Coastguard Worker     }
146*4bdc9457SAndroid Build Coastguard Worker   }
147*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8,qmax)148*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X8, qmax) {
149*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
150*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
151*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
152*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
153*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
154*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x8, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
155*4bdc9457SAndroid Build Coastguard Worker     }
156*4bdc9457SAndroid Build Coastguard Worker   }
157*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
158*4bdc9457SAndroid Build Coastguard Worker 
159*4bdc9457SAndroid Build Coastguard Worker 
160*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,batch_eq_16)161*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, batch_eq_16) {
162*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
163*4bdc9457SAndroid Build Coastguard Worker     VMulCMicrokernelTester()
164*4bdc9457SAndroid Build Coastguard Worker       .batch_size(16)
165*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
166*4bdc9457SAndroid Build Coastguard Worker   }
167*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,batch_div_16)168*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, batch_div_16) {
169*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
170*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
171*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
172*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
173*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
174*4bdc9457SAndroid Build Coastguard Worker     }
175*4bdc9457SAndroid Build Coastguard Worker   }
176*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,batch_lt_16)177*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, batch_lt_16) {
178*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
179*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
180*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
181*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
182*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
183*4bdc9457SAndroid Build Coastguard Worker     }
184*4bdc9457SAndroid Build Coastguard Worker   }
185*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,batch_gt_16)186*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, batch_gt_16) {
187*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
188*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
189*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
190*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
191*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
192*4bdc9457SAndroid Build Coastguard Worker     }
193*4bdc9457SAndroid Build Coastguard Worker   }
194*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,inplace)195*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, inplace) {
196*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
197*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
198*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
199*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
200*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
201*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
202*4bdc9457SAndroid Build Coastguard Worker     }
203*4bdc9457SAndroid Build Coastguard Worker   }
204*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,a_zero_point)205*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, a_zero_point) {
206*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
207*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
208*4bdc9457SAndroid Build Coastguard Worker       for (int32_t a_zero_point = -128; a_zero_point <= 127; a_zero_point += 51) {
209*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
210*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
211*4bdc9457SAndroid Build Coastguard Worker           .a_zero_point(a_zero_point)
212*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
213*4bdc9457SAndroid Build Coastguard Worker       }
214*4bdc9457SAndroid Build Coastguard Worker     }
215*4bdc9457SAndroid Build Coastguard Worker   }
216*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,b_zero_point)217*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, b_zero_point) {
218*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
219*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
220*4bdc9457SAndroid Build Coastguard Worker       for (int32_t b_zero_point = -128; b_zero_point <= 127; b_zero_point += 51) {
221*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
222*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
223*4bdc9457SAndroid Build Coastguard Worker           .b_zero_point(b_zero_point)
224*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
225*4bdc9457SAndroid Build Coastguard Worker       }
226*4bdc9457SAndroid Build Coastguard Worker     }
227*4bdc9457SAndroid Build Coastguard Worker   }
228*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,y_zero_point)229*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, y_zero_point) {
230*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
231*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
232*4bdc9457SAndroid Build Coastguard Worker       for (int32_t y_zero_point = -128; y_zero_point <= 127; y_zero_point += 51) {
233*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
234*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
235*4bdc9457SAndroid Build Coastguard Worker           .y_zero_point(y_zero_point)
236*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
237*4bdc9457SAndroid Build Coastguard Worker       }
238*4bdc9457SAndroid Build Coastguard Worker     }
239*4bdc9457SAndroid Build Coastguard Worker   }
240*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,a_scale)241*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, a_scale) {
242*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
243*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
244*4bdc9457SAndroid Build Coastguard Worker       for (float a_scale = 0.1f; a_scale <= 10.0f; a_scale *= 3.14f) {
245*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
246*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
247*4bdc9457SAndroid Build Coastguard Worker           .a_scale(a_scale)
248*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
249*4bdc9457SAndroid Build Coastguard Worker       }
250*4bdc9457SAndroid Build Coastguard Worker     }
251*4bdc9457SAndroid Build Coastguard Worker   }
252*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,b_scale)253*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, b_scale) {
254*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
255*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
256*4bdc9457SAndroid Build Coastguard Worker       for (float b_scale = 0.1f; b_scale <= 10.0f; b_scale *= 3.14f) {
257*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
258*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
259*4bdc9457SAndroid Build Coastguard Worker           .b_scale(b_scale)
260*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
261*4bdc9457SAndroid Build Coastguard Worker       }
262*4bdc9457SAndroid Build Coastguard Worker     }
263*4bdc9457SAndroid Build Coastguard Worker   }
264*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,y_scale)265*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, y_scale) {
266*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
267*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
268*4bdc9457SAndroid Build Coastguard Worker       for (float y_scale = 0.1f; y_scale <= 10.0f; y_scale *= 3.14f) {
269*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
270*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
271*4bdc9457SAndroid Build Coastguard Worker           .y_scale(y_scale)
272*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
273*4bdc9457SAndroid Build Coastguard Worker       }
274*4bdc9457SAndroid Build Coastguard Worker     }
275*4bdc9457SAndroid Build Coastguard Worker   }
276*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,qmin)277*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, qmin) {
278*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
279*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
280*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
281*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
282*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
283*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
284*4bdc9457SAndroid Build Coastguard Worker     }
285*4bdc9457SAndroid Build Coastguard Worker   }
286*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16,qmax)287*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD64_X16, qmax) {
288*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
289*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
290*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
291*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
292*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
293*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld64_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
294*4bdc9457SAndroid Build Coastguard Worker     }
295*4bdc9457SAndroid Build Coastguard Worker   }
296*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
297*4bdc9457SAndroid Build Coastguard Worker 
298*4bdc9457SAndroid Build Coastguard Worker 
299*4bdc9457SAndroid Build Coastguard Worker #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,batch_eq_16)300*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, batch_eq_16) {
301*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
302*4bdc9457SAndroid Build Coastguard Worker     VMulCMicrokernelTester()
303*4bdc9457SAndroid Build Coastguard Worker       .batch_size(16)
304*4bdc9457SAndroid Build Coastguard Worker       .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
305*4bdc9457SAndroid Build Coastguard Worker   }
306*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,batch_div_16)307*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, batch_div_16) {
308*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
309*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
310*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
311*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
312*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
313*4bdc9457SAndroid Build Coastguard Worker     }
314*4bdc9457SAndroid Build Coastguard Worker   }
315*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,batch_lt_16)316*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, batch_lt_16) {
317*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
318*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
319*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
320*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
321*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
322*4bdc9457SAndroid Build Coastguard Worker     }
323*4bdc9457SAndroid Build Coastguard Worker   }
324*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,batch_gt_16)325*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, batch_gt_16) {
326*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
327*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
328*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
329*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
330*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
331*4bdc9457SAndroid Build Coastguard Worker     }
332*4bdc9457SAndroid Build Coastguard Worker   }
333*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,inplace)334*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, inplace) {
335*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
336*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
337*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
338*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
339*4bdc9457SAndroid Build Coastguard Worker         .inplace(true)
340*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
341*4bdc9457SAndroid Build Coastguard Worker     }
342*4bdc9457SAndroid Build Coastguard Worker   }
343*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,a_zero_point)344*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, a_zero_point) {
345*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
346*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
347*4bdc9457SAndroid Build Coastguard Worker       for (int32_t a_zero_point = -128; a_zero_point <= 127; a_zero_point += 51) {
348*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
349*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
350*4bdc9457SAndroid Build Coastguard Worker           .a_zero_point(a_zero_point)
351*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
352*4bdc9457SAndroid Build Coastguard Worker       }
353*4bdc9457SAndroid Build Coastguard Worker     }
354*4bdc9457SAndroid Build Coastguard Worker   }
355*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,b_zero_point)356*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, b_zero_point) {
357*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
358*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
359*4bdc9457SAndroid Build Coastguard Worker       for (int32_t b_zero_point = -128; b_zero_point <= 127; b_zero_point += 51) {
360*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
361*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
362*4bdc9457SAndroid Build Coastguard Worker           .b_zero_point(b_zero_point)
363*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
364*4bdc9457SAndroid Build Coastguard Worker       }
365*4bdc9457SAndroid Build Coastguard Worker     }
366*4bdc9457SAndroid Build Coastguard Worker   }
367*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,y_zero_point)368*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, y_zero_point) {
369*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
370*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
371*4bdc9457SAndroid Build Coastguard Worker       for (int32_t y_zero_point = -128; y_zero_point <= 127; y_zero_point += 51) {
372*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
373*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
374*4bdc9457SAndroid Build Coastguard Worker           .y_zero_point(y_zero_point)
375*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
376*4bdc9457SAndroid Build Coastguard Worker       }
377*4bdc9457SAndroid Build Coastguard Worker     }
378*4bdc9457SAndroid Build Coastguard Worker   }
379*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,a_scale)380*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, a_scale) {
381*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
382*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
383*4bdc9457SAndroid Build Coastguard Worker       for (float a_scale = 0.1f; a_scale <= 10.0f; a_scale *= 3.14f) {
384*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
385*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
386*4bdc9457SAndroid Build Coastguard Worker           .a_scale(a_scale)
387*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
388*4bdc9457SAndroid Build Coastguard Worker       }
389*4bdc9457SAndroid Build Coastguard Worker     }
390*4bdc9457SAndroid Build Coastguard Worker   }
391*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,b_scale)392*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, b_scale) {
393*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
394*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
395*4bdc9457SAndroid Build Coastguard Worker       for (float b_scale = 0.1f; b_scale <= 10.0f; b_scale *= 3.14f) {
396*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
397*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
398*4bdc9457SAndroid Build Coastguard Worker           .b_scale(b_scale)
399*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
400*4bdc9457SAndroid Build Coastguard Worker       }
401*4bdc9457SAndroid Build Coastguard Worker     }
402*4bdc9457SAndroid Build Coastguard Worker   }
403*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,y_scale)404*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, y_scale) {
405*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
406*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
407*4bdc9457SAndroid Build Coastguard Worker       for (float y_scale = 0.1f; y_scale <= 10.0f; y_scale *= 3.14f) {
408*4bdc9457SAndroid Build Coastguard Worker         VMulCMicrokernelTester()
409*4bdc9457SAndroid Build Coastguard Worker           .batch_size(batch_size)
410*4bdc9457SAndroid Build Coastguard Worker           .y_scale(y_scale)
411*4bdc9457SAndroid Build Coastguard Worker           .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
412*4bdc9457SAndroid Build Coastguard Worker       }
413*4bdc9457SAndroid Build Coastguard Worker     }
414*4bdc9457SAndroid Build Coastguard Worker   }
415*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,qmin)416*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, qmin) {
417*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
418*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
419*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
420*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
421*4bdc9457SAndroid Build Coastguard Worker         .qmin(128)
422*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
423*4bdc9457SAndroid Build Coastguard Worker     }
424*4bdc9457SAndroid Build Coastguard Worker   }
425*4bdc9457SAndroid Build Coastguard Worker 
TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16,qmax)426*4bdc9457SAndroid Build Coastguard Worker   TEST(QS8_VMULC_MINMAX_RNDNU__NEON_LD128_X16, qmax) {
427*4bdc9457SAndroid Build Coastguard Worker     TEST_REQUIRES_ARM_NEON;
428*4bdc9457SAndroid Build Coastguard Worker     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
429*4bdc9457SAndroid Build Coastguard Worker       VMulCMicrokernelTester()
430*4bdc9457SAndroid Build Coastguard Worker         .batch_size(batch_size)
431*4bdc9457SAndroid Build Coastguard Worker         .qmax(128)
432*4bdc9457SAndroid Build Coastguard Worker         .Test(xnn_qs8_vmulc_minmax_rndnu_ukernel__neon_ld128_x16, xnn_init_qs8_mul_minmax_rndnu_neon_params, xnn_qs8_requantize_rndnu);
433*4bdc9457SAndroid Build Coastguard Worker     }
434*4bdc9457SAndroid Build Coastguard Worker   }
435*4bdc9457SAndroid Build Coastguard Worker #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
436