blob: 221915c2a8499b177c1d68526f4ed4588902097b [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-vmax.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 "vbinary-microkernel-tester.h"
19
20
21#if XNN_ARCH_ARM64
22 TEST(F16_VMAX__NEONFP16ARITH_X8, batch_eq_8) {
23 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhan10f1fe02021-05-13 12:51:12 -070024 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070025 .batch_size(8)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070026 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -070027 }
28
29 TEST(F16_VMAX__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 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070033 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070034 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -070035 }
36 }
37
38 TEST(F16_VMAX__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 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070042 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070043 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -070044 }
45 }
46
47 TEST(F16_VMAX__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 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070051 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070052 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -070053 }
54 }
55
56 TEST(F16_VMAX__NEONFP16ARITH_X8, inplace_a) {
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 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070060 .batch_size(batch_size)
61 .inplace_a(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070062 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -070063 }
64 }
65
66 TEST(F16_VMAX__NEONFP16ARITH_X8, inplace_b) {
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 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070070 .batch_size(batch_size)
71 .inplace_b(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070072 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -070073 }
74 }
75
76 TEST(F16_VMAX__NEONFP16ARITH_X8, inplace_a_and_b) {
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 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070080 .batch_size(batch_size)
81 .inplace_a(true)
82 .inplace_b(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070083 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x8, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -070084 }
85 }
Frank Barchardd793f6c2020-05-08 13:37:43 -070086#endif // XNN_ARCH_ARM64
87
88
89#if XNN_ARCH_ARM64
90 TEST(F16_VMAX__NEONFP16ARITH_X16, batch_eq_16) {
91 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
Marat Dukhan10f1fe02021-05-13 12:51:12 -070092 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -070093 .batch_size(16)
Marat Dukhan10f1fe02021-05-13 12:51:12 -070094 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -070095 }
96
97 TEST(F16_VMAX__NEONFP16ARITH_X16, batch_div_16) {
98 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
99 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700100 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700101 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700102 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700103 }
104 }
105
106 TEST(F16_VMAX__NEONFP16ARITH_X16, batch_lt_16) {
107 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
108 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700109 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700110 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700111 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700112 }
113 }
114
115 TEST(F16_VMAX__NEONFP16ARITH_X16, batch_gt_16) {
116 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
117 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700118 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700119 .batch_size(batch_size)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700120 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700121 }
122 }
123
124 TEST(F16_VMAX__NEONFP16ARITH_X16, inplace_a) {
125 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
126 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700127 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700128 .batch_size(batch_size)
129 .inplace_a(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700130 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700131 }
132 }
133
134 TEST(F16_VMAX__NEONFP16ARITH_X16, inplace_b) {
135 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
136 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700137 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700138 .batch_size(batch_size)
139 .inplace_b(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700140 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700141 }
142 }
143
144 TEST(F16_VMAX__NEONFP16ARITH_X16, inplace_a_and_b) {
145 TEST_REQUIRES_ARM_NEON_FP16_ARITH;
146 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700147 VBinaryMicrokernelTester()
Frank Barchardd793f6c2020-05-08 13:37:43 -0700148 .batch_size(batch_size)
149 .inplace_a(true)
150 .inplace_b(true)
Marat Dukhan10f1fe02021-05-13 12:51:12 -0700151 .Test(xnn_f16_vmax_ukernel__neonfp16arith_x16, VBinaryMicrokernelTester::OpType::Max);
Frank Barchardd793f6c2020-05-08 13:37:43 -0700152 }
153 }
Frank Barchardd793f6c2020-05-08 13:37:43 -0700154#endif // XNN_ARCH_ARM64
Marat Dukhand4545452022-01-10 16:13:11 -0800155
156
157#if XNN_ARCH_X86 || XNN_ARCH_X86_64
158 TEST(F16_VMAX__F16C_X8, batch_eq_8) {
159 TEST_REQUIRES_X86_F16C;
160 VBinaryMicrokernelTester()
161 .batch_size(8)
162 .Test(xnn_f16_vmax_ukernel__f16c_x8, VBinaryMicrokernelTester::OpType::Max);
163 }
164
165 TEST(F16_VMAX__F16C_X8, batch_div_8) {
166 TEST_REQUIRES_X86_F16C;
167 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
168 VBinaryMicrokernelTester()
169 .batch_size(batch_size)
170 .Test(xnn_f16_vmax_ukernel__f16c_x8, VBinaryMicrokernelTester::OpType::Max);
171 }
172 }
173
174 TEST(F16_VMAX__F16C_X8, batch_lt_8) {
175 TEST_REQUIRES_X86_F16C;
176 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
177 VBinaryMicrokernelTester()
178 .batch_size(batch_size)
179 .Test(xnn_f16_vmax_ukernel__f16c_x8, VBinaryMicrokernelTester::OpType::Max);
180 }
181 }
182
183 TEST(F16_VMAX__F16C_X8, batch_gt_8) {
184 TEST_REQUIRES_X86_F16C;
185 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
186 VBinaryMicrokernelTester()
187 .batch_size(batch_size)
188 .Test(xnn_f16_vmax_ukernel__f16c_x8, VBinaryMicrokernelTester::OpType::Max);
189 }
190 }
191
192 TEST(F16_VMAX__F16C_X8, inplace_a) {
193 TEST_REQUIRES_X86_F16C;
194 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
195 VBinaryMicrokernelTester()
196 .batch_size(batch_size)
197 .inplace_a(true)
198 .Test(xnn_f16_vmax_ukernel__f16c_x8, VBinaryMicrokernelTester::OpType::Max);
199 }
200 }
201
202 TEST(F16_VMAX__F16C_X8, inplace_b) {
203 TEST_REQUIRES_X86_F16C;
204 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
205 VBinaryMicrokernelTester()
206 .batch_size(batch_size)
207 .inplace_b(true)
208 .Test(xnn_f16_vmax_ukernel__f16c_x8, VBinaryMicrokernelTester::OpType::Max);
209 }
210 }
211
212 TEST(F16_VMAX__F16C_X8, inplace_a_and_b) {
213 TEST_REQUIRES_X86_F16C;
214 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
215 VBinaryMicrokernelTester()
216 .batch_size(batch_size)
217 .inplace_a(true)
218 .inplace_b(true)
219 .Test(xnn_f16_vmax_ukernel__f16c_x8, VBinaryMicrokernelTester::OpType::Max);
220 }
221 }
222#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
223
224
225#if XNN_ARCH_X86 || XNN_ARCH_X86_64
226 TEST(F16_VMAX__F16C_X16, batch_eq_16) {
227 TEST_REQUIRES_X86_F16C;
228 VBinaryMicrokernelTester()
229 .batch_size(16)
230 .Test(xnn_f16_vmax_ukernel__f16c_x16, VBinaryMicrokernelTester::OpType::Max);
231 }
232
233 TEST(F16_VMAX__F16C_X16, batch_div_16) {
234 TEST_REQUIRES_X86_F16C;
235 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
236 VBinaryMicrokernelTester()
237 .batch_size(batch_size)
238 .Test(xnn_f16_vmax_ukernel__f16c_x16, VBinaryMicrokernelTester::OpType::Max);
239 }
240 }
241
242 TEST(F16_VMAX__F16C_X16, batch_lt_16) {
243 TEST_REQUIRES_X86_F16C;
244 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
245 VBinaryMicrokernelTester()
246 .batch_size(batch_size)
247 .Test(xnn_f16_vmax_ukernel__f16c_x16, VBinaryMicrokernelTester::OpType::Max);
248 }
249 }
250
251 TEST(F16_VMAX__F16C_X16, batch_gt_16) {
252 TEST_REQUIRES_X86_F16C;
253 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
254 VBinaryMicrokernelTester()
255 .batch_size(batch_size)
256 .Test(xnn_f16_vmax_ukernel__f16c_x16, VBinaryMicrokernelTester::OpType::Max);
257 }
258 }
259
260 TEST(F16_VMAX__F16C_X16, inplace_a) {
261 TEST_REQUIRES_X86_F16C;
262 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
263 VBinaryMicrokernelTester()
264 .batch_size(batch_size)
265 .inplace_a(true)
266 .Test(xnn_f16_vmax_ukernel__f16c_x16, VBinaryMicrokernelTester::OpType::Max);
267 }
268 }
269
270 TEST(F16_VMAX__F16C_X16, inplace_b) {
271 TEST_REQUIRES_X86_F16C;
272 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
273 VBinaryMicrokernelTester()
274 .batch_size(batch_size)
275 .inplace_b(true)
276 .Test(xnn_f16_vmax_ukernel__f16c_x16, VBinaryMicrokernelTester::OpType::Max);
277 }
278 }
279
280 TEST(F16_VMAX__F16C_X16, inplace_a_and_b) {
281 TEST_REQUIRES_X86_F16C;
282 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
283 VBinaryMicrokernelTester()
284 .batch_size(batch_size)
285 .inplace_a(true)
286 .inplace_b(true)
287 .Test(xnn_f16_vmax_ukernel__f16c_x16, VBinaryMicrokernelTester::OpType::Max);
288 }
289 }
290#endif // XNN_ARCH_X86 || XNN_ARCH_X86_64