blob: a101c4e8b64aba82490afac70e43e6cf0649b744 [file] [log] [blame]
Marat Dukhand67539d2021-09-08 23:06:03 -07001// Copyright 2021 Google LLC
XNNPACK Teamb455b122019-09-27 18:10:33 -07002//
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.
Marat Dukhand67539d2021-09-08 23:06:03 -07005//
6// Auto-generated file. Do not edit!
7// Specification: test/x8-lut.yaml
8// Generator: tools/generate-lut-test.py
9
XNNPACK Teamb455b122019-09-27 18:10:33 -070010
11#include <gtest/gtest.h>
12
Marat Dukhand67539d2021-09-08 23:06:03 -070013#include <xnnpack/common.h>
14#include <xnnpack/isa-checks.h>
15
XNNPACK Teamb455b122019-09-27 18:10:33 -070016#include <xnnpack/lut.h>
XNNPACK Teamb455b122019-09-27 18:10:33 -070017#include "lut-microkernel-tester.h"
18
19
Marat Dukhand67539d2021-09-08 23:06:03 -070020TEST(X8_LUT__SCALAR_X1, batch_eq_1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070021 LUTMicrokernelTester()
Marat Dukhand67539d2021-09-08 23:06:03 -070022 .batch_size(1)
23 .Test(xnn_x8_lut_ukernel__scalar_x1);
XNNPACK Teamb455b122019-09-27 18:10:33 -070024}
25
Marat Dukhand67539d2021-09-08 23:06:03 -070026TEST(X8_LUT__SCALAR_X1, batch_gt_1) {
27 for (size_t batch_size = 2; batch_size < 10; batch_size++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070028 LUTMicrokernelTester()
Marat Dukhand67539d2021-09-08 23:06:03 -070029 .batch_size(batch_size)
30 .Test(xnn_x8_lut_ukernel__scalar_x1);
XNNPACK Teamb455b122019-09-27 18:10:33 -070031 }
32}
33
Marat Dukhand67539d2021-09-08 23:06:03 -070034TEST(X8_LUT__SCALAR_X1, inplace) {
35 for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070036 LUTMicrokernelTester()
Marat Dukhand67539d2021-09-08 23:06:03 -070037 .batch_size(batch_size)
38 .inplace(true)
39 .Test(xnn_x8_lut_ukernel__scalar_x1);
XNNPACK Teamb455b122019-09-27 18:10:33 -070040 }
41}
42
Marat Dukhand67539d2021-09-08 23:06:03 -070043TEST(X8_LUT__SCALAR_X2, batch_eq_2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070044 LUTMicrokernelTester()
Marat Dukhand67539d2021-09-08 23:06:03 -070045 .batch_size(2)
46 .Test(xnn_x8_lut_ukernel__scalar_x2);
XNNPACK Teamb455b122019-09-27 18:10:33 -070047}
48
Marat Dukhand67539d2021-09-08 23:06:03 -070049TEST(X8_LUT__SCALAR_X2, batch_div_2) {
50 for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070051 LUTMicrokernelTester()
Marat Dukhand67539d2021-09-08 23:06:03 -070052 .batch_size(batch_size)
53 .Test(xnn_x8_lut_ukernel__scalar_x2);
XNNPACK Teamb455b122019-09-27 18:10:33 -070054 }
55}
56
Marat Dukhand67539d2021-09-08 23:06:03 -070057TEST(X8_LUT__SCALAR_X2, batch_lt_2) {
58 for (size_t batch_size = 1; batch_size < 2; batch_size++) {
XNNPACK Teamb455b122019-09-27 18:10:33 -070059 LUTMicrokernelTester()
Marat Dukhand67539d2021-09-08 23:06:03 -070060 .batch_size(batch_size)
61 .Test(xnn_x8_lut_ukernel__scalar_x2);
XNNPACK Teamb455b122019-09-27 18:10:33 -070062 }
63}
Marat Dukhand67539d2021-09-08 23:06:03 -070064
65TEST(X8_LUT__SCALAR_X2, batch_gt_2) {
66 for (size_t batch_size = 3; batch_size < 4; batch_size++) {
67 LUTMicrokernelTester()
68 .batch_size(batch_size)
69 .Test(xnn_x8_lut_ukernel__scalar_x2);
70 }
71}
72
73TEST(X8_LUT__SCALAR_X2, inplace) {
74 for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
75 LUTMicrokernelTester()
76 .batch_size(batch_size)
77 .inplace(true)
78 .Test(xnn_x8_lut_ukernel__scalar_x2);
79 }
80}
81
82TEST(X8_LUT__SCALAR_X4, batch_eq_4) {
83 LUTMicrokernelTester()
84 .batch_size(4)
85 .Test(xnn_x8_lut_ukernel__scalar_x4);
86}
87
88TEST(X8_LUT__SCALAR_X4, batch_div_4) {
89 for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
90 LUTMicrokernelTester()
91 .batch_size(batch_size)
92 .Test(xnn_x8_lut_ukernel__scalar_x4);
93 }
94}
95
96TEST(X8_LUT__SCALAR_X4, batch_lt_4) {
97 for (size_t batch_size = 1; batch_size < 4; batch_size++) {
98 LUTMicrokernelTester()
99 .batch_size(batch_size)
100 .Test(xnn_x8_lut_ukernel__scalar_x4);
101 }
102}
103
104TEST(X8_LUT__SCALAR_X4, batch_gt_4) {
105 for (size_t batch_size = 5; batch_size < 8; batch_size++) {
106 LUTMicrokernelTester()
107 .batch_size(batch_size)
108 .Test(xnn_x8_lut_ukernel__scalar_x4);
109 }
110}
111
112TEST(X8_LUT__SCALAR_X4, inplace) {
113 for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
114 LUTMicrokernelTester()
115 .batch_size(batch_size)
116 .inplace(true)
117 .Test(xnn_x8_lut_ukernel__scalar_x4);
118 }
119}
120
121TEST(X8_LUT__SCALAR_X8, batch_eq_8) {
122 LUTMicrokernelTester()
123 .batch_size(8)
124 .Test(xnn_x8_lut_ukernel__scalar_x8);
125}
126
127TEST(X8_LUT__SCALAR_X8, batch_div_8) {
128 for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
129 LUTMicrokernelTester()
130 .batch_size(batch_size)
131 .Test(xnn_x8_lut_ukernel__scalar_x8);
132 }
133}
134
135TEST(X8_LUT__SCALAR_X8, batch_lt_8) {
136 for (size_t batch_size = 1; batch_size < 8; batch_size++) {
137 LUTMicrokernelTester()
138 .batch_size(batch_size)
139 .Test(xnn_x8_lut_ukernel__scalar_x8);
140 }
141}
142
143TEST(X8_LUT__SCALAR_X8, batch_gt_8) {
144 for (size_t batch_size = 9; batch_size < 16; batch_size++) {
145 LUTMicrokernelTester()
146 .batch_size(batch_size)
147 .Test(xnn_x8_lut_ukernel__scalar_x8);
148 }
149}
150
151TEST(X8_LUT__SCALAR_X8, inplace) {
152 for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
153 LUTMicrokernelTester()
154 .batch_size(batch_size)
155 .inplace(true)
156 .Test(xnn_x8_lut_ukernel__scalar_x8);
157 }
158}
159
160TEST(X8_LUT__SCALAR_X16, batch_eq_16) {
161 LUTMicrokernelTester()
162 .batch_size(16)
163 .Test(xnn_x8_lut_ukernel__scalar_x16);
164}
165
166TEST(X8_LUT__SCALAR_X16, batch_div_16) {
167 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
168 LUTMicrokernelTester()
169 .batch_size(batch_size)
170 .Test(xnn_x8_lut_ukernel__scalar_x16);
171 }
172}
173
174TEST(X8_LUT__SCALAR_X16, batch_lt_16) {
175 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
176 LUTMicrokernelTester()
177 .batch_size(batch_size)
178 .Test(xnn_x8_lut_ukernel__scalar_x16);
179 }
180}
181
182TEST(X8_LUT__SCALAR_X16, batch_gt_16) {
183 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
184 LUTMicrokernelTester()
185 .batch_size(batch_size)
186 .Test(xnn_x8_lut_ukernel__scalar_x16);
187 }
188}
189
190TEST(X8_LUT__SCALAR_X16, inplace) {
191 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
192 LUTMicrokernelTester()
193 .batch_size(batch_size)
194 .inplace(true)
195 .Test(xnn_x8_lut_ukernel__scalar_x16);
196 }
Marat Dukhanf7182322021-09-09 18:53:46 -0700197}
198
199#if XNN_ARCH_ARM64
200 TEST(X8_LUT__NEON_TBX128X4_X16, batch_eq_16) {
201 TEST_REQUIRES_ARM_NEON;
202 LUTMicrokernelTester()
203 .batch_size(16)
204 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x16);
205 }
206
207 TEST(X8_LUT__NEON_TBX128X4_X16, batch_div_16) {
208 TEST_REQUIRES_ARM_NEON;
209 for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
210 LUTMicrokernelTester()
211 .batch_size(batch_size)
212 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x16);
213 }
214 }
215
216 TEST(X8_LUT__NEON_TBX128X4_X16, batch_lt_16) {
217 TEST_REQUIRES_ARM_NEON;
218 for (size_t batch_size = 1; batch_size < 16; batch_size++) {
219 LUTMicrokernelTester()
220 .batch_size(batch_size)
221 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x16);
222 }
223 }
224
225 TEST(X8_LUT__NEON_TBX128X4_X16, batch_gt_16) {
226 TEST_REQUIRES_ARM_NEON;
227 for (size_t batch_size = 17; batch_size < 32; batch_size++) {
228 LUTMicrokernelTester()
229 .batch_size(batch_size)
230 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x16);
231 }
232 }
233
234 TEST(X8_LUT__NEON_TBX128X4_X16, inplace) {
235 TEST_REQUIRES_ARM_NEON;
236 for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
237 LUTMicrokernelTester()
238 .batch_size(batch_size)
239 .inplace(true)
240 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x16);
241 }
242 }
243#endif // XNN_ARCH_ARM64
244
245
246#if XNN_ARCH_ARM64
247 TEST(X8_LUT__NEON_TBX128X4_X32, batch_eq_32) {
248 TEST_REQUIRES_ARM_NEON;
249 LUTMicrokernelTester()
250 .batch_size(32)
251 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x32);
252 }
253
254 TEST(X8_LUT__NEON_TBX128X4_X32, batch_div_32) {
255 TEST_REQUIRES_ARM_NEON;
256 for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
257 LUTMicrokernelTester()
258 .batch_size(batch_size)
259 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x32);
260 }
261 }
262
263 TEST(X8_LUT__NEON_TBX128X4_X32, batch_lt_32) {
264 TEST_REQUIRES_ARM_NEON;
265 for (size_t batch_size = 1; batch_size < 32; batch_size++) {
266 LUTMicrokernelTester()
267 .batch_size(batch_size)
268 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x32);
269 }
270 }
271
272 TEST(X8_LUT__NEON_TBX128X4_X32, batch_gt_32) {
273 TEST_REQUIRES_ARM_NEON;
274 for (size_t batch_size = 33; batch_size < 64; batch_size++) {
275 LUTMicrokernelTester()
276 .batch_size(batch_size)
277 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x32);
278 }
279 }
280
281 TEST(X8_LUT__NEON_TBX128X4_X32, inplace) {
282 TEST_REQUIRES_ARM_NEON;
283 for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
284 LUTMicrokernelTester()
285 .batch_size(batch_size)
286 .inplace(true)
287 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x32);
288 }
289 }
290#endif // XNN_ARCH_ARM64
291
292
293#if XNN_ARCH_ARM64
294 TEST(X8_LUT__NEON_TBX128X4_X48, batch_eq_48) {
295 TEST_REQUIRES_ARM_NEON;
296 LUTMicrokernelTester()
297 .batch_size(48)
298 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x48);
299 }
300
301 TEST(X8_LUT__NEON_TBX128X4_X48, batch_div_48) {
302 TEST_REQUIRES_ARM_NEON;
303 for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
304 LUTMicrokernelTester()
305 .batch_size(batch_size)
306 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x48);
307 }
308 }
309
310 TEST(X8_LUT__NEON_TBX128X4_X48, batch_lt_48) {
311 TEST_REQUIRES_ARM_NEON;
312 for (size_t batch_size = 1; batch_size < 48; batch_size++) {
313 LUTMicrokernelTester()
314 .batch_size(batch_size)
315 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x48);
316 }
317 }
318
319 TEST(X8_LUT__NEON_TBX128X4_X48, batch_gt_48) {
320 TEST_REQUIRES_ARM_NEON;
321 for (size_t batch_size = 49; batch_size < 96; batch_size++) {
322 LUTMicrokernelTester()
323 .batch_size(batch_size)
324 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x48);
325 }
326 }
327
328 TEST(X8_LUT__NEON_TBX128X4_X48, inplace) {
329 TEST_REQUIRES_ARM_NEON;
330 for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
331 LUTMicrokernelTester()
332 .batch_size(batch_size)
333 .inplace(true)
334 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x48);
335 }
336 }
337#endif // XNN_ARCH_ARM64
338
339
340#if XNN_ARCH_ARM64
341 TEST(X8_LUT__NEON_TBX128X4_X64, batch_eq_64) {
342 TEST_REQUIRES_ARM_NEON;
343 LUTMicrokernelTester()
344 .batch_size(64)
345 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x64);
346 }
347
348 TEST(X8_LUT__NEON_TBX128X4_X64, batch_div_64) {
349 TEST_REQUIRES_ARM_NEON;
350 for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
351 LUTMicrokernelTester()
352 .batch_size(batch_size)
353 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x64);
354 }
355 }
356
357 TEST(X8_LUT__NEON_TBX128X4_X64, batch_lt_64) {
358 TEST_REQUIRES_ARM_NEON;
359 for (size_t batch_size = 1; batch_size < 64; batch_size++) {
360 LUTMicrokernelTester()
361 .batch_size(batch_size)
362 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x64);
363 }
364 }
365
366 TEST(X8_LUT__NEON_TBX128X4_X64, batch_gt_64) {
367 TEST_REQUIRES_ARM_NEON;
368 for (size_t batch_size = 65; batch_size < 128; batch_size++) {
369 LUTMicrokernelTester()
370 .batch_size(batch_size)
371 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x64);
372 }
373 }
374
375 TEST(X8_LUT__NEON_TBX128X4_X64, inplace) {
376 TEST_REQUIRES_ARM_NEON;
377 for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
378 LUTMicrokernelTester()
379 .batch_size(batch_size)
380 .inplace(true)
381 .Test(xnn_x8_lut_ukernel__neon_tbx128x4_x64);
382 }
383 }
384#endif // XNN_ARCH_ARM64