blob: f1e70049d05196245b4e44572d43685d21351c6f [file] [log] [blame]
Frank Barchardd793f6c2020-05-08 13:37:43 -07001// 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-vmulc-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
Marat Dukhan87bd5112021-08-02 11:43:53 -070016#include <xnnpack/params-init.h>
Frank Barchardd793f6c2020-05-08 13:37:43 -070017#include <xnnpack/vbinary.h>
18#include "vbinaryc-microkernel-tester.h"
19
20
21#if XNN_ARCH_ARM64
22 TEST(F16_VMULC_MINMAX__NEONFP16ARITH_X8, batch_eq_8) {
23 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhan10f1fe02021-05-13 12:51:12 -070024 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070025 .batch_size(8)
Marat Dukhan645af972022-01-09 22:50:27 -080026 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -070027 }
28
29 TEST(F16_VMULC_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) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070032 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070033 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -080034 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -070035 }
36 }
37
38 TEST(F16_VMULC_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++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070041 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070042 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -080043 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -070044 }
45 }
46
47 TEST(F16_VMULC_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++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070050 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070051 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -080052 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -070053 }
54 }
55
56 TEST(F16_VMULC_MINMAX__NEONFP16ARITH_X8, inplace) {
57 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
58 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070059 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070060 .batch_size(batch_size)
61 .inplace(true)
Marat Dukhan645af972022-01-09 22:50:27 -080062 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -070063 }
64 }
65
66 TEST(F16_VMULC_MINMAX__NEONFP16ARITH_X8, qmin) {
67 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
68 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070069 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070070 .batch_size(batch_size)
71 .qmin(128)
Marat Dukhan645af972022-01-09 22:50:27 -080072 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -070073 }
74 }
75
76 TEST(F16_VMULC_MINMAX__NEONFP16ARITH_X8, qmax) {
77 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
78 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070079 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070080 .batch_size(batch_size)
81 .qmax(128)
Marat Dukhan645af972022-01-09 22:50:27 -080082 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -070083 }
84 }
85#endif // XNN_ARCH_ARM64
86
87
88#if XNN_ARCH_ARM64
89 TEST(F16_VMULC_MINMAX__NEONFP16ARITH_X16, batch_eq_16) {
90 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhan10f1fe02021-05-13 12:51:12 -070091 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070092 .batch_size(16)
Marat Dukhan645af972022-01-09 22:50:27 -080093 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -070094 }
95
96 TEST(F16_VMULC_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) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -070099 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700100 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -0800101 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700102 }
103 }
104
105 TEST(F16_VMULC_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++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700108 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700109 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -0800110 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700111 }
112 }
113
114 TEST(F16_VMULC_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++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700117 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700118 .batch_size(batch_size)
Marat Dukhan645af972022-01-09 22:50:27 -0800119 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700120 }
121 }
122
123 TEST(F16_VMULC_MINMAX__NEONFP16ARITH_X16, inplace) {
124 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
125 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700126 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700127 .batch_size(batch_size)
128 .inplace(true)
Marat Dukhan645af972022-01-09 22:50:27 -0800129 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700130 }
131 }
132
133 TEST(F16_VMULC_MINMAX__NEONFP16ARITH_X16, qmin) {
134 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
135 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700136 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700137 .batch_size(batch_size)
138 .qmin(128)
Marat Dukhan645af972022-01-09 22:50:27 -0800139 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700140 }
141 }
142
143 TEST(F16_VMULC_MINMAX__NEONFP16ARITH_X16, qmax) {
144 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
145 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700146 VBinaryCMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700147 .batch_size(batch_size)
148 .qmax(128)
Marat Dukhan645af972022-01-09 22:50:27 -0800149 .Test(xnn_f16_vmulc_minmax_ukernel__neonfp16arith_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_neon_params);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700150 }
151 }
152#endif // XNN_ARCH_ARM64
Marat Dukhand4545452022-01-10 16:13:11 -0800153
154
155#if XNN_ARCH_X86 || XNN_ARCH_X86_64
156 TEST(F16_VMULC_MINMAX__F16C_X8, batch_eq_8) {
157 TEST_REQUIRES_X86_F16C;
158 VBinaryCMicrokernelTester()
159 .batch_size(8)
160 .Test(xnn_f16_vmulc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
161 }
162
163 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
169 }
170 }
171
172 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
178 }
179 }
180
181 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
187 }
188 }
189
190 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
197 }
198 }
199
200 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
207 }
208 }
209
210 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x8, VBinaryCMicrokernelTester::OpType::MulC, 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
223 TEST(F16_VMULC_MINMAX__F16C_X16, batch_eq_16) {
224 TEST_REQUIRES_X86_F16C;
225 VBinaryCMicrokernelTester()
226 .batch_size(16)
227 .Test(xnn_f16_vmulc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
228 }
229
230 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
236 }
237 }
238
239 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
245 }
246 }
247
248 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
254 }
255 }
256
257 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
264 }
265 }
266
267 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
274 }
275 }
276
277 TEST(F16_VMULC_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_vmulc_minmax_ukernel__f16c_x16, VBinaryCMicrokernelTester::OpType::MulC, xnn_init_f16_minmax_avx_params);
284 }
285 }
286#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64