xref: /aosp_15_r20/external/XNNPACK/test/f16-vrdivc-minmax.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1 // Copyright 2019 Google LLC
2 //
3 // This source code is licensed under the BSD-style license found in the
4 // LICENSE file in the root directory of this source tree.
5 //
6 // Auto-generated file. Do not edit!
7 //   Specification: test/f16-vrdivc-minmax.yaml
8 //   Generator: tools/generate-vbinary-test.py
9 
10 
11 #include <gtest/gtest.h>
12 
13 #include <xnnpack/common.h>
14 #include <xnnpack/isa-checks.h>
15 
16 #include <xnnpack/microparams-init.h>
17 #include <xnnpack/vbinary.h>
18 #include "vbinaryc-microkernel-tester.h"
19 
20 
21 #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,batch_eq_8)22   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, batch_eq_8) {
23     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
24     VBinaryCMicrokernelTester()
25       .batch_size(8)
26       .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
27   }
28 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,batch_div_8)29   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, batch_div_8) {
30     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
31     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
32       VBinaryCMicrokernelTester()
33         .batch_size(batch_size)
34         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
35     }
36   }
37 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,batch_lt_8)38   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, batch_lt_8) {
39     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
40     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
41       VBinaryCMicrokernelTester()
42         .batch_size(batch_size)
43         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
44     }
45   }
46 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,batch_gt_8)47   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, batch_gt_8) {
48     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
49     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
50       VBinaryCMicrokernelTester()
51         .batch_size(batch_size)
52         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
53     }
54   }
55 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,inplace)56   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, inplace) {
57     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
58     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
59       VBinaryCMicrokernelTester()
60         .batch_size(batch_size)
61         .inplace(true)
62         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
63     }
64   }
65 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,qmin)66   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, qmin) {
67     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
68     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
69       VBinaryCMicrokernelTester()
70         .batch_size(batch_size)
71         .qmin(128)
72         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
73     }
74   }
75 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8,qmax)76   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X8, qmax) {
77     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
78     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
79       VBinaryCMicrokernelTester()
80         .batch_size(batch_size)
81         .qmax(128)
82         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
83     }
84   }
85 #endif  // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
86 
87 
88 #if XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,batch_eq_16)89   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, batch_eq_16) {
90     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
91     VBinaryCMicrokernelTester()
92       .batch_size(16)
93       .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
94   }
95 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,batch_div_16)96   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, batch_div_16) {
97     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
98     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
99       VBinaryCMicrokernelTester()
100         .batch_size(batch_size)
101         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
102     }
103   }
104 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,batch_lt_16)105   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, batch_lt_16) {
106     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
107     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
108       VBinaryCMicrokernelTester()
109         .batch_size(batch_size)
110         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
111     }
112   }
113 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,batch_gt_16)114   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, batch_gt_16) {
115     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
116     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
117       VBinaryCMicrokernelTester()
118         .batch_size(batch_size)
119         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
120     }
121   }
122 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,inplace)123   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, inplace) {
124     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
125     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
126       VBinaryCMicrokernelTester()
127         .batch_size(batch_size)
128         .inplace(true)
129         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
130     }
131   }
132 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,qmin)133   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, qmin) {
134     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
135     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
136       VBinaryCMicrokernelTester()
137         .batch_size(batch_size)
138         .qmin(128)
139         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
140     }
141   }
142 
TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16,qmax)143   TEST(F16_VRDIVC_MINMAX__NEONFP16ARITH_X16, qmax) {
144     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
145     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
146       VBinaryCMicrokernelTester()
147         .batch_size(batch_size)
148         .qmax(128)
149         .Test(xnn_f16_vrdivc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_neon_params);
150     }
151   }
152 #endif  // XNN_ENABLE_ARM_FP16 && XNN_ARCH_ARM64
153 
154 
155 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VRDIVC_MINMAX__F16C_X8,batch_eq_8)156   TEST(F16_VRDIVC_MINMAX__F16C_X8, batch_eq_8) {
157     TEST_REQUIRES_X86_F16C;
158     VBinaryCMicrokernelTester()
159       .batch_size(8)
160       .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
161   }
162 
TEST(F16_VRDIVC_MINMAX__F16C_X8,batch_div_8)163   TEST(F16_VRDIVC_MINMAX__F16C_X8, batch_div_8) {
164     TEST_REQUIRES_X86_F16C;
165     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
166       VBinaryCMicrokernelTester()
167         .batch_size(batch_size)
168         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
169     }
170   }
171 
TEST(F16_VRDIVC_MINMAX__F16C_X8,batch_lt_8)172   TEST(F16_VRDIVC_MINMAX__F16C_X8, batch_lt_8) {
173     TEST_REQUIRES_X86_F16C;
174     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
175       VBinaryCMicrokernelTester()
176         .batch_size(batch_size)
177         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
178     }
179   }
180 
TEST(F16_VRDIVC_MINMAX__F16C_X8,batch_gt_8)181   TEST(F16_VRDIVC_MINMAX__F16C_X8, batch_gt_8) {
182     TEST_REQUIRES_X86_F16C;
183     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
184       VBinaryCMicrokernelTester()
185         .batch_size(batch_size)
186         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
187     }
188   }
189 
TEST(F16_VRDIVC_MINMAX__F16C_X8,inplace)190   TEST(F16_VRDIVC_MINMAX__F16C_X8, inplace) {
191     TEST_REQUIRES_X86_F16C;
192     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
193       VBinaryCMicrokernelTester()
194         .batch_size(batch_size)
195         .inplace(true)
196         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
197     }
198   }
199 
TEST(F16_VRDIVC_MINMAX__F16C_X8,qmin)200   TEST(F16_VRDIVC_MINMAX__F16C_X8, qmin) {
201     TEST_REQUIRES_X86_F16C;
202     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
203       VBinaryCMicrokernelTester()
204         .batch_size(batch_size)
205         .qmin(128)
206         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
207     }
208   }
209 
TEST(F16_VRDIVC_MINMAX__F16C_X8,qmax)210   TEST(F16_VRDIVC_MINMAX__F16C_X8, qmax) {
211     TEST_REQUIRES_X86_F16C;
212     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
213       VBinaryCMicrokernelTester()
214         .batch_size(batch_size)
215         .qmax(128)
216         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
217     }
218   }
219 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
220 
221 
222 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(F16_VRDIVC_MINMAX__F16C_X16,batch_eq_16)223   TEST(F16_VRDIVC_MINMAX__F16C_X16, batch_eq_16) {
224     TEST_REQUIRES_X86_F16C;
225     VBinaryCMicrokernelTester()
226       .batch_size(16)
227       .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
228   }
229 
TEST(F16_VRDIVC_MINMAX__F16C_X16,batch_div_16)230   TEST(F16_VRDIVC_MINMAX__F16C_X16, batch_div_16) {
231     TEST_REQUIRES_X86_F16C;
232     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
233       VBinaryCMicrokernelTester()
234         .batch_size(batch_size)
235         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
236     }
237   }
238 
TEST(F16_VRDIVC_MINMAX__F16C_X16,batch_lt_16)239   TEST(F16_VRDIVC_MINMAX__F16C_X16, batch_lt_16) {
240     TEST_REQUIRES_X86_F16C;
241     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
242       VBinaryCMicrokernelTester()
243         .batch_size(batch_size)
244         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
245     }
246   }
247 
TEST(F16_VRDIVC_MINMAX__F16C_X16,batch_gt_16)248   TEST(F16_VRDIVC_MINMAX__F16C_X16, batch_gt_16) {
249     TEST_REQUIRES_X86_F16C;
250     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
251       VBinaryCMicrokernelTester()
252         .batch_size(batch_size)
253         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
254     }
255   }
256 
TEST(F16_VRDIVC_MINMAX__F16C_X16,inplace)257   TEST(F16_VRDIVC_MINMAX__F16C_X16, inplace) {
258     TEST_REQUIRES_X86_F16C;
259     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
260       VBinaryCMicrokernelTester()
261         .batch_size(batch_size)
262         .inplace(true)
263         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
264     }
265   }
266 
TEST(F16_VRDIVC_MINMAX__F16C_X16,qmin)267   TEST(F16_VRDIVC_MINMAX__F16C_X16, qmin) {
268     TEST_REQUIRES_X86_F16C;
269     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
270       VBinaryCMicrokernelTester()
271         .batch_size(batch_size)
272         .qmin(128)
273         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
274     }
275   }
276 
TEST(F16_VRDIVC_MINMAX__F16C_X16,qmax)277   TEST(F16_VRDIVC_MINMAX__F16C_X16, qmax) {
278     TEST_REQUIRES_X86_F16C;
279     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
280       VBinaryCMicrokernelTester()
281         .batch_size(batch_size)
282         .qmax(128)
283         .Test(xnn_f16_vrdivc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::RDivC, xnn_init_f16_minmax_avx_params);
284     }
285   }
286 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
287